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: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.
Tipos de Hook
- Command (Shell)
- HTTP (Webhook)
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 paraPreToolUse)
O comando e executado via
sh -c no Linux/macOS e cmd /c no Windows.ToolPattern — Filtro por Ferramenta
O campotoolPattern permite filtrar quais ferramentas acionam o hook. Ele aceita padroes glob:
Variáveis de Ambiente
Hooks do tipocommand 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-Format
- Notificações
- Bloqueio de Comandos
- Auditoria
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.