Início › Claude Code › Hooks
Visão geralInstalaçãoreferência da CLIPreços e limitesAgent SDKSkills e pluginsGitHubWeb, desktop e IDEModelosErrosCódigo aberto?TutorialPara estudantesAutomação de QAvs Cursorvs Codex e OpenCodeSubagentesHooksMCPEcossistemaVS CodeOpenRouterLimites de requisiçõesGuia em chinês
Última atualização: 11 de outubro de 2026

Hooks do Claude Code: controle determinístico sobre o que o agente faz

Hooks são comandos de shell que o Claude Code executa em pontos fixos do seu ciclo — antes de uma chamada de ferramenta, depois dela, quando você envia um prompt e quando ele termina. Ao contrário das instruções em CLAUDE.md, que o modelo pode ou não seguir, um hook sempre é executado. É assim que você cria regras que são cumpridas.

TLDR

  • Configurados em .claude/settings.json (projeto) ou ~/.claude/settings.json (usuário), ou com /hooks.
  • Eventos: PreToolUse, PostToolUse, UserPromptSubmit, Notification, Stop, SubagentStop, PreCompact, SessionStart.
  • O hook recebe JSON na entrada padrão (nome da ferramenta, entrada, sessão); a saída 0 permite, e a saída 2 bloqueia e envia a saída de erro padrão de volta ao Claude.
  • Usos típicos: formatar após cada edição, bloquear comandos perigosos, exigir testes antes de encerrar e enviar notificações na área de trabalho.

Anatomia de um hook

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.file_path)\"" }
        ]
      }
    ]
  }
}

Três partes: o evento, um matcher (uma expressão regular aplicada ao nome da ferramenta em eventos de ferramenta; omita-o para corresponder a tudo) e um ou mais comandos. O comando recebe um objeto JSON na entrada padrão que descreve o evento — nos eventos de ferramenta, ele inclui tool_name e tool_input, que é como o exemplo acima encontra o arquivo que acabou de ser editado. Coloque-o em .claude/settings.json para compartilhar com o repositório, ~/.claude/settings.json para uso pessoal, ou execute /hooks e deixe o Claude Code escrevê-lo.

Os eventos

  • PreToolUse — antes de uma ferramenta ser executada. O único evento que pode bloquear: a saída 2 cancela a chamada, e o Claude lê sua saída de erro padrão como o motivo.
  • PostToolUse — depois que uma ferramenta é executada com sucesso. Formatadores, linters e verificações de tipos no arquivo editado.
  • UserPromptSubmit — quando você envia um prompt; pode injetar contexto ou rejeitar o prompt.
  • Stop / SubagentStop — quando o agente (ou um subagente) está prestes a encerrar. A saída 2 aqui significa "ainda não terminou" — o uso clássico é impedir o encerramento enquanto os testes falham.
  • PreCompact — antes de /compact; salve tudo de que precisar da transcrição completa.
  • SessionStart — quando uma sessão começa ou é retomada; carregue o ambiente e exiba lembretes.
  • Notification — quando o Claude Code precisa da sua atenção (solicitação de permissão, inatividade); conecte-o a uma notificação na área de trabalho ou no Slack.

Bloqueio de comandos perigosos

#!/usr/bin/env bash
# .claude/hooks/guard.sh  -- PreToolUse, matcher: Bash
cmd=$(jq -r '.tool_input.command')
if echo "$cmd" | grep -Eq 'rm -rf|git push --force|DROP TABLE|--no-verify'; then
  echo "blocked by guard.sh: $cmd" >&2
  exit 2
fi
exit 0

O código de saída 2 é o contrato: a chamada de ferramenta não acontece, e tudo o que o hook escrever na saída de erro padrão se torna a explicação que o Claude vê, para que ele possa escolher outra abordagem em vez de tentar a mesma coisa novamente. Qualquer outro código de saída diferente de zero é registrado, mas não bloqueia.

"Não encerre até que os testes passem"

#!/usr/bin/env bash
# Stop hook: refuse to finish while the suite is red
if ! npm test --silent >/tmp/claude-test.log 2>&1; then
  echo "Tests are failing; fix them before finishing:" >&2
  tail -n 40 /tmp/claude-test.log >&2
  exit 2
fi

Combine isso com um limite de --max-turns em execuções sem interface para que uma falha realmente impossível de corrigir não gere um ciclo infinito.

Hooks vs CLAUDE.md vs permissões

CLAUDE.md contém orientações que o modelo lê; /permissions é uma lista do que ele pode fazer sem perguntar; hooks são código que é executado independentemente disso. Use CLAUDE.md para estilo e contexto, permissões para definir o que é permitido e o que exige confirmação, e hooks para tudo o que deve ser garantido em todas as ocasiões — formatação, verificação de segredos, validações obrigatórias de testes e logs de auditoria. Eles se combinam: uma permissão permite executar Bash(git *) , e um hook PreToolUse ainda bloqueia git push --force.

Hooks e o gateway

Os hooks são executados localmente e nunca acessam a API, então nada muda quando o Claude Code aponta para ANTHROPIC_BASE_URL=https://aiprimetech.io. Uma combinação útil: um hook Stop que exibe /costde uso no mesmo estilo a partir dos seus próprios logs, para que uma equipe que usa créditos pagos conforme o consumo veja o preço de cada sessão ao encerrá-la.

Experimente gratuitamente primeiro

Novas contas recebem $5 em crédito gratuito para a API com o código CLAUDECODE — suficiente para uma noite de Claude Code com Sonnet — e depois créditos com 7.69231× o valor nominal.

export ANTHROPIC_BASE_URL=https://aiprimetech.io
export ANTHROPIC_API_KEY=your_key

Crie uma conta com o código CLAUDECODE

Perguntas frequentes

O que são hooks do Claude Code?

Comandos de shell que o Claude Code executa automaticamente em eventos do seu ciclo — antes/depois de chamadas de ferramentas, no envio de um prompt e no encerramento. Eles são determinísticos, ao contrário das instruções em CLAUDE.md.

Como bloqueio um comando com um hook?

Um hook PreToolUse com matcher Bash que inspeciona tool_input.command na entrada padrão e termina com o código 2; o texto da saída de erro padrão é mostrado ao Claude como o motivo.

Onde ficam os hooks?

Em .claude/settings.json no projeto (compartilhado) ou em ~/.claude/settings.json (pessoal), sob a chave hooks; /hooks permite editá-los interativamente.

Execute o Claude Code no gateway

Os mesmos modelos, duas variáveis de ambiente, créditos com 7.69231× o valor nominal — ou um plano ilimitado com preço fixo. Novas contas: $5 em crédito gratuito para a API com o código CLAUDECODE.

Obter uma chave de API Ver planos ilimitados

A AI Prime Tech é um gateway de API independente e não é afiliada, endossada nem patrocinada pela Anthropic. “Claude” e “Claude Code” são marcas comerciais da Anthropic. Os recursos do Claude Code descritos aqui seguem a documentação pública da Anthropic no momento da redação e mudam com frequência; os preços e as listas de modelos nesta página são obtidos das configurações atuais deste gateway.

Mais guias do Claude Code

Claude Code: o guia completoComo instalar o Claude CodeDocumentação da CLI do Claude Code: comandos e flagsPreços e limites do Claude Code, explicadosO SDK do Claude Code, agora Claude Agent SDKSkills e plugins do Claude CodeClaude Code no GitHub: o App, a Action e @claudeO Claude Code tem uma interface web? Entenda as versões web, desktop e para IDEQual modelo o Claude Code usa e como alterá-loErros do Claude Code e como corrigi-losO Claude Code é de código aberto?Tutorial do Claude Code: sua primeira sessão realClaude para estudantes: Claude Code, a API e o que você realmente ganha na área de educaçãoComo usar o Claude Code para automação de QAClaude Code vs Cursor: qual usar, quando — e como usar ambosClaude Code vs Codex vs OpenCode: comparação dos agentes de terminalSubagentes do Claude Code: como funcionam, como defini-los e equipes de agentesMCP no Claude Code: conexão de servidores, escopos, MCP remoto e exemplos reaisO ecossistema do Claude Code: roteadores, frameworks, plugins e as listas que os acompanhamClaude Code no VS Code: a extensão, o uso pelo terminal e os errosComo usar o OpenRouter no Claude Code (e quando não usar)Erro de limite de taxa do Claude: o que significa "Erro de API: limite de taxa atingido" e como corrigirComo usar o Claude Code: da instalação ao uso diário