Skip to main content
O Sistema de Hooks do ChatCLI permite que você execute ações automáticas em resposta a eventos do ciclo de vida da aplicação. Com hooks, você pode auto-formatar código após edicoes, enviar notificações, bloquear comandos perigosos, registrar logs de auditoria e muito mais.
Hooks são aditivos: configurações globais e de workspace são mescladas. Hooks de workspace complementam os globais, nunca os substituem.

Configuração

Os hooks são definidos em arquivos JSON em dois níveis:
Hooks de workspace são aditivos — eles se somam aos hooks globais. Se o mesmo evento tem hooks em ambos os níveis, todos são executados (globais primeiro, depois workspace).

Estrutura do Arquivo


Eventos Disponíveis

O ChatCLI emite 8 eventos de lifecycle aos quais hooks podem se vincular: Os eventos de compactação carregam um campo trigger (auto, manual, recovery) e, no PostCompact, um outcome (applied quando o histórico mudou, skipped quando nada mudou: no-op, resumo rejeitado, falha) no payload JSON e em CHATCLI_HOOK_TRIGGER / CHATCLI_HOOK_OUTCOME; todo PreCompact tem exatamente um PostCompact par, então um hook pode tirar snapshot do transcript antes de uma reescrita automática, logar /compact manuais separadamente ou alertar em recoveries de overflow. PreCompact roda de forma síncrona antes de o histórico mudar; PostCompact roda desacoplado do turno.
O evento PreToolUse e blocking: se o hook retornar exit code 2, a execução da ferramenta e bloqueada. Isso permite criar guardrails que impedem operações perigosas.

Tipos de Hook

Executa um comando shell no sistema operacional. O comando tem acesso a variáveis de ambiente com contexto do evento.
Exit codes:
  • 0 — Sucesso (execução continua normalmente)
  • 1 — Erro (logado, mas não bloqueia)
  • 2 — Bloqueia a operação (apenas para PreToolUse)
O comando e executado via sh -c no Linux/macOS e cmd /c no Windows.

ToolPattern — Filtro por Ferramenta

O campo toolPattern permite filtrar quais ferramentas acionam o hook. Ele aceita padroes glob:

Variáveis de Ambiente

Hooks do tipo command recebem variáveis de ambiente com contexto do evento: Todo o resto do evento — argumentos e output da ferramenta, o prompt do usuário, o diretório de trabalho, a mensagem de erro — chega como payload JSON no stdin (toolArgs, toolOutput, userPrompt, workingDir, error, trigger); leia com jq quando um hook precisar de mais do que as quatro variáveis acima.

Exemplos Completos

Auto-formatar arquivos Go após qualquer edicao:

Casos de Uso

Auto-Format

Execute formatadores (gofmt, prettier, black) automaticamente após edicoes de arquivo.

Notificações

Envie alertas para Slack, Discord ou email ao final de sessões ou em erros.

Guardrails

Bloqueie comandos perigosos (rm -rf, DROP TABLE, force push) com PreToolUse.

Auditoria

Registre todas as ações do agent em arquivos de log para compliance.

Testes Automaticos

Execute testes automaticamente após cada edicao de código.

Linting

Execute linters (golangci-lint, eslint) após cada write/patch.

Próximos Passos

Coder Security

Politicas de segurança e aprovação para operações do coder.

Segurança

Entenda o modelo de segurança do ChatCLI.

UI Compacta

Modo de exibicao minimalista para o coder mode.

Modo Coder

O ciclo completo de engenharia com hooks integrados.