O que são os hooks do Claude Code, e quando usá-los?
Um hook no Claude Code é um comando de shell que roda automaticamente num ponto definido do ciclo de vida da sessão, em vez de depender de uma pessoa ou do próprio modelo lembrar de disparar aquilo. O comando dispara toda vez que o evento acontece, em vez de depender de uma instrução que o modelo pode ou não lembrar.
Hooks se prendem a eventos como o envio de um prompt, uma chamada de ferramenta prestes a rodar, ou o fim de uma sessão, e alguns deles podem inspecionar ou bloquear o que está prestes a acontecer. Como um hook é uma execução de comando de verdade, a documentação é explícita sobre a contrapartida: um hook é código que roda na sua máquina, e merece o mesmo cuidado que qualquer outro script que você deixaria rodar sozinho.
A ideia central: automático, não lembrado
O Claude Code já deixa você guiar o comportamento com instruções, em lugares como o CLAUDE.md ou um system prompt — mas isso depende de o modelo ler e escolher seguir aquilo na hora certa. Um hook remove essa dependência: é um comando que a própria aplicação executa num ponto fixo, sempre, não importa o que o modelo lembre ou deixe de lembrar.
É essa a proposta numa frase: um hook transforma uma sugestão em garantia, porque quem decide se algo acontece é o shell rodando um comando, não o modelo escolhendo obedecer.
Os eventos aos quais um hook pode se prender
O Claude Code define mais eventos do que estes sete, incluindo PreCompact, PostCompact, SubagentStart e SubagentStop, entre outros — mas estes são os que a maioria das configurações usa primeiro, porque correspondem aos momentos em que as pessoas realmente querem intervir.
- SessionStart — quando uma sessão começa ou é retomada.
- UserPromptSubmit — quando você envia um prompt, antes de o Claude processá-lo.
- PreToolUse — antes de uma chamada de ferramenta executar; é o único que pode bloqueá-la.
- PermissionRequest — quando uma chamada de ferramenta precisa de uma decisão de permissão.
- PostToolUse — depois que uma chamada de ferramenta é bem-sucedida.
- Stop — quando o Claude termina de responder.
- SessionEnd — quando uma sessão termina.
Como um hook é configurado
Um hook é JSON escrito num arquivo de settings, com três níveis de aninhamento: uma chave hooks, depois o nome do evento, depois um array de entradas — cada uma com um matcher e sua própria lista de { type: "command", command, timeout }.
O arquivo de settings pode morar em mais de um lugar. ~/.claude/settings.json vale para todos os projetos da máquina e não é feito para compartilhar. .claude/settings.json vale para um projeto e é feito para ir para o git. .claude/settings.local.json também vale para um projeto, mas fica fora do git (gitignored). Além desses, uma organização pode publicar managed policy settings, e um plugin pode trazer seu próprio hooks/hooks.json.
O matcher decide a quais chamadas de ferramenta uma entrada se aplica. “*”, ou deixar o matcher de fora, casa com tudo. Um matcher composto só de letras, dígitos, _, -, espaço, vírgula ou | — como “Bash” ou “Edit|Write” — é comparado como string exata. Qualquer outro caractere transforma o matcher inteiro numa expressão regular JavaScript não ancorada, e é isso que faz algo como “^Edit$” se comportar diferente de um simples “Edit”.
Bloqueio, saída estruturada, e quem pode desligar um hook
Um hook controla o que acontece depois principalmente pelo código de saída (exit code). Exit code 0 sem nenhuma saída significa que o hook não tem decisão a reportar, e a chamada de ferramenta segue o fluxo normal de permissão. Exit code 2 é o erro bloqueante: em eventos que podem bloquear, o exit 2 bloqueia a ação mesmo que o hook também tenha impresso JSON — nem um permissionDecision de “allow” em JSON consegue sobrepor isso. Qualquer outro código é um erro não bloqueante na maioria dos eventos, e a ação segue em frente do mesmo jeito.
Um hook também pode devolver JSON estruturado em vez de depender só do exit code: um objeto hookSpecificOutput carrega o nome do evento, um permissionDecision de allow, deny ou escalate, e o motivo dele, além de campos universais como continue (que, se false, faz o Claude parar de processar), stopReason e systemMessage.
Hooks podem ser desligados por completo com disableAllHooks: true nos settings — exceto os hooks configurados pelas managed policy settings de uma organização, que settings de usuário, projeto ou local não conseguem desligar. Um administrador pode ir além com allowManagedHooksOnly, restringindo quais hooks têm permissão de rodar.
FAQ
O que é um hook no Claude Code?
Um hook é um comando de shell que o Claude Code roda automaticamente num ponto definido do ciclo de vida da sessão, em vez de depender de uma instrução que o modelo precisa lembrar. Hooks disparam em eventos como o envio de um prompt ou uma chamada de ferramenta prestes a rodar, e alguns podem bloquear o que acontece a seguir.
A quais eventos um hook do Claude Code pode se prender?
Os principais são SessionStart, UserPromptSubmit, PreToolUse, PermissionRequest, PostToolUse, Stop e SessionEnd, embora a lista completa seja maior e inclua eventos como PreCompact e SubagentStart. PreToolUse é o mais usado para bloquear uma chamada de ferramenta antes de ela executar.
Como um hook bloqueia uma chamada de ferramenta?
Pelo código de saída. Exit code 0 sem saída nenhuma significa que o hook não tem decisão a reportar, e a chamada segue o fluxo normal de permissão. Exit code 2 é o erro bloqueante: em eventos que podem bloquear, ele bloqueia a ação mesmo que a própria saída JSON do hook dissesse para permitir.
Onde fica o arquivo de settings de um hook do Claude Code?
Em mais de um lugar possível: ~/.claude/settings.json para todos os projetos da máquina, .claude/settings.json para um projeto (feito para ir para o git), ou .claude/settings.local.json para um projeto (fora do git). As managed policy settings de uma organização e o hooks/hooks.json de um plugin também podem definir hooks.
Leia em seguida
- A certificação Claude vale a pena?O que uma certificação Claude realmente te dá, quanto custa mantê-la e os números que a Anthropic não publica — decida antes de pagar, não depois.
- Qual certificação Claude você deve fazer?Quatro certificações Claude comparadas: preço, número de domínios, pré-requisitos e status de Partner Network — uma recomendação honesta por perfil.
- Quem pode fazer a certificação Claude?As certificações Claude exigem e-mail de empresa do Claude Partner Network — e-mail pessoal não serve.
- Como é, de fato, o exame de certificação Claude120 minutos, nota de corte 720 numa escala de 100 a 1.
- Como se preparar para a certificação Claude — e quanto tempo levaComo se preparar para a certificação Claude: o que a Anthropic oferece, como planejar por peso de domínio, erros comuns e como estimar sua data de prontidão.
- Questões de prática da certificação Claude — onde achar as reaisOnde achar questões de prática reais para a certificação Claude, como é uma questão real do exame e como diferenciar uma questão útil de um dump decorado.
- Dia da prova da certificação Claude — o que realmente aconteceComo agendar a certificação Claude pela Pearson, a regra de 24 horas que faz você perder a taxa, o que fazer antes do dia e como o resultado chega até você.
- Claude Certified Associate — Foundations (CCAO-F)A certificação Claude de nível inicial: US$ 99, sete domínios, 120 minutos, corte de 720 — o que o CCAO-F cobre, quem pode fazer e o que ele não libera.
- Claude Certified Developer — Foundations (CCDV-F)A certificação Claude de quem constrói: US$ 125, oito domínios ponderados, 120 minutos, corte de 720 — e o domínio que sozinho é um terço da prova.
- Claude Certified Architect — Foundations (CCAR-F)A certificação Claude de nível arquiteto: US$ 125, 60 questões, cinco domínios ponderados e corte de 720 — o que a troca de CCA-F para CCAR-F mudou e não mudou.
- Claude Certified Architect — Professional (CCAR-P)A única certificação Claude de nível profissional: US$ 175, sete domínios e corte de 720 — o blueprint mais plano dos quatro, e o que soma ao Foundations.
- O que é o MCP (Model Context Protocol)?O MCP conecta aplicações de IA a ferramentas e dados externos por host, client e server.
- O que é a janela de contexto, e por que conversas longas pioram?A janela de contexto é todo o texto que um modelo referencia ao responder, e mais contexto não é automaticamente melhor.
Um hook roda toda vez, sem exceção. Seu esforço também deveria.
O AgentPrep treina o ofício que esta página descreve — questões de cenário originais e domínio medido por área, em Telegram. Grátis para começar no navegador, sem cartão.
Começar grátisTrês questões de treino, com as respostas explicadas
Deixe o seu e-mail e enviamos as três questões do nosso quiz com o gabarito comentado — cada uma escrita a partir de material público, nunca lembrada de um exame real.
Pronto — já está a caminho da sua caixa de entrada.
Não deu certo — confira a conexão e tente de novo.