Mesmo que você escreva “Sempre execute o formatador depois de editar” no CLAUDE.md, há dias em que a IA esquece. Afinal, instruções são apenas pedidos.
O que precisa acontecer obrigatoriamente deve virar um mecanismo, não um pedido. No Claude Code, esse mecanismo é um hook.
Um hook é um comando de shell definido pelo usuário. Ele é executado automaticamente em momentos específicos enquanto o Claude Code funciona e é aplicado de forma determinística, independentemente do que o modelo escolher.
Se os comandos até Claude Code, episódio 10 eram acionados manualmente, hooks são mecanismos automáticos que se acionam sozinhos.
Crie seu primeiro hook em 5 minutos
Os hooks são definidos no bloco hooks do settings.json. Veja um exemplo que exibe uma notificação do macOS enquanto o Claude aguarda uma entrada.
{
"hooks": {
"Notification": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Entrada necessária\" with title \"Claude Code\"'"
}
]
}
]
}
}
Salve e digite /hooks para ver a lista de hooks registrados. Esta tela é somente leitura; edite o settings.json diretamente ou peça ao Claude para fazer isso.
Em quais momentos é possível acionar um hook
Com base em Guia oficial de hooks, estes são os eventos mais usados.
SessionStart: quando uma sessão começa ou é retomadaUserPromptSubmit: logo depois de enviar um prompt, antes de o Claude processá-loPreToolUse: imediatamente antes de uma chamada de ferramenta; pode bloquear a chamadaPostToolUse: logo depois de uma chamada de ferramenta bem-sucedidaStop: quando o turno do Claude terminaNotification: quando o Claude aguarda uma entrada
Use um matcher para restringir o alvo. Se você escrever "matcher": "Edit|Write", o hook será executado somente quando uma ferramenta de edição de arquivos for usada.
Três usos representativos
Formatação automática após a edição. Configure o matcher Edit|Write em PostToolUse e execute o prettier. A formatação será obrigatória, qualquer que seja o arquivo alterado pela IA.
Bloqueio de arquivos protegidos. Um hook PreToolUse verifica caminhos específicos e Quando termina com o código de saída 2 bloqueia a edição. Não pode ser qualquer código de falha: precisa ser exatamente 2. Diferentemente de uma instrução no CLAUDE.md, não há como contornar isso mesmo que o modelo esqueça.
Notificação ao terminar. Assim como no exemplo anterior de Notification, você não precisa ficar olhando o terminal.
Quando é preciso julgar: prompt hooks
Há condições difíceis de avaliar com um script de shell, como “O trabalho solicitado terminou por completo?”.
Nesses casos, use um hook type: "prompt". Em vez de um comando de shell, defina os critérios de avaliação, e o modelo Haiku padrão decidirá com yes/no.
Ao configurar um prompt hook no evento Stop, você obtém “se não terminou, continue trabalhando”. Na prática, /goal, abordado no episódio 6 é um wrapper limitado à sessão baseado nessa estrutura.
Hooks executam o shell exatamente como está
Esse poder também traz riscos. A estrutura executa automaticamente comandos de shell arbitrários com as suas permissões.
Os hooks no settings.json do projeto exigem a confirmação de que você confia no repositório. Ao abrir o repositório de outra pessoa, não trate essa confirmação com descaso.
Dentro dos comandos dos hooks, coloque as variáveis entre aspas e mantenha a prática básica de nunca executar entradas externas sem validação.
Resumo
Hooks são mecanismos que tiram da memória do modelo as “coisas que precisam acontecer” e as entregam ao sistema.
Comece forçando a formatação, bloqueando arquivos protegidos e exibindo notificações de conclusão. Quando houver condições que exigem julgamento, expanda para prompt hooks.
No próximo episódio, veremos /loop, que executa prompts repetidamente em intervalos definidos. Se hooks automatizam eventos, /loop automatiza o tempo.
Fontes e critérios de verificação
- Documentação oficial do Claude Code — Automate actions with hooks (Anthropic, verificado em 2026-08-14)
- Documentação oficial do Claude Code — Hooks reference (Anthropic, verificado em 2026-08-14)
Continue lendo
Série Claude Code
- Episódio anterior: [Claude Code #2] /plan modo de planejamento: alinhe o design antes de fazer alterações
- Episódio anterior: [Claude Code #1] /init: comece gerando o CLAUDE.md automaticamente

![Imagem de capa de [Claude Code #11] Hooks: automatize com mecanismos, não com pedidos](/assets/images/posts/76a987e0-498d-44b4-88a8-e737861f7f2a/claude-code-hooks-automation.jpg)