.devin/ do seu projeto (ou em uma configuração em nível de usuário), e a Devin CLI os executará nos eventos correspondentes do ciclo de vida. Hooks existentes em diretórios .claude/ também são detectados automaticamente — consulte Onde os hooks ficam.
O que os Hooks podem fazer?
Aplicar políticas
Bloquear comandos perigosos, exigir confirmação para ações específicas ou restringir o acesso a arquivos.
Adicionar contexto
Injetar instruções ou informações adicionais quando ferramentas específicas forem chamadas.
Executar efeitos colaterais
Executar scripts, enviar notificações ou registrar eventos quando algo acontecer.
Modificar permissões
Conceder ou restringir permissões dinamicamente com base na situação.
Exemplo rápido
.devin/hooks.v1.json no seu projeto:
./scripts/check-command.sh antes de cada execução de comando de shell. O script recebe os dados do evento pela stdin e pode bloquear a ação retornando um código de saída diferente de zero.
Eventos de hook
| Evento | Quando é acionado |
|---|---|
PreToolUse | Antes de uma ferramenta ser executada |
PostToolUse | Depois que uma ferramenta é concluída |
PermissionRequest | Quando é preciso tomar uma decisão de permissão |
UserPromptSubmit | Quando o usuário envia uma mensagem |
Stop | Quando o agente quer parar |
SessionStart | Quando uma sessão começa |
SessionEnd | Quando uma sessão termina |
Formato do hook
command ou prompt), um matcher opcional (regex na tool_name do evento do hook) e uma configuração:
| Campo | Descrição |
|---|---|
matcher | Regex comparada ao tool_name do evento do hook. Uma string vazia ou a omissão de matcher corresponde a todos os nomes de ferramenta. |
type | "command" para executar um comando de shell ou "prompt" para avaliar um prompt de LLM. |
command | Comando de shell a ser executado (para o tipo command). |
prompt | Prompt de LLM a ser avaliado (para o tipo prompt). |
timeout | Tempo limite em segundos (opcional). |
Hooks de comando
DEVIN_PROJECT_DIR é definida automaticamente como o diretório raiz do projeto.
Consulte Como usar o Matcher para ver os nomes das ferramentas integradas e o formato de nome de ferramenta MCP com o qual você pode fazer correspondência.
Formato de saída
decision no nível superior (com um reason opcional):
additionalContext dentro de um objeto hookSpecificOutput identificado com o nome do evento:
| Campo de saída | Descrição |
|---|---|
decision | "approve" para permitir a ação ou "block" para bloqueá-la |
reason | Explicação exibida ao agente |
hookSpecificOutput.hookEventName | Evento ao qual a saída se aplica (por exemplo, UserPromptSubmit, SessionStart, PostToolUse) |
hookSpecificOutput.additionalContext | Texto injetado no contexto do agente (para UserPromptSubmit, SessionStart, PostToolUse) |
Códigos de Saída
| Código | Significado |
|---|---|
| 0 | Sucesso — o hook continua normalmente |
| 2 | Bloqueio — a ação é negada |
| Outros | Erro — é registrado, mas não bloqueia |
Onde os hooks ficam
No nível do projeto
| Localização | Descrição |
|---|---|
.devin/hooks.v1.json | Arquivo de hooks independente (recomendado) |
.devin/config.json | chave "hooks" no arquivo de configuração |
.devin/config.local.json | chave "hooks" (override local, ignorado pelo Git) |
.claude/settings.json | chave "hooks" (formato do Claude Code) |
.claude/settings.local.json | chave "hooks" (formato do Claude Code) |
Nível do usuário (global)
| Local | Descrição |
|---|---|
~/.config/devin/config.json (%APPDATA%\devin\config.json no Windows) | chave "hooks" na configuração do usuário |
~/.claude.json | chave "hooks" (formato Claude Code) |
~/.claude/settings.json | chave "hooks" (formato Claude Code) |
~/.claude/settings.local.json | chave "hooks" (formato Claude Code) |
Em
.devin/hooks.v1.json, o objeto hooks é o arquivo inteiro (não é necessária nenhuma chave de encapsulamento). Em todos os outros locais, hooks fica aninhado sob a chave "hooks" em um arquivo de configurações.Os hooks dos caminhos
.claude/ são carregados quando read_config_from.claude está ativado (padrão). Se necessário, você pode desativar isso na sua configuração do usuário.Verificando hooks
/hooks para ver todos os hooks carregados no momento e seus arquivos de origem:
Próximas etapas
Hooks de ciclo de vida
Aprofunde-se em cada tipo de evento e nos dados disponíveis.
Configuração
Defina de quais locais de configuração o Devin CLI lê hooks.

