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:| Nível | Arquivo | Escopo |
|---|---|---|
| Global | ~/.chatcli/hooks.json | Todos os projetos e sessões |
| Workspace | .chatcli/hooks.json | Apenas o projeto atual |
Estrutura do Arquivo
Eventos Disponíveis
O ChatCLI emite 9 eventos de lifecycle aos quais hooks podem se vincular:| Evento | Quando dispara | Blocking |
|---|---|---|
SessionStart | Ao iniciar uma nova sessão do ChatCLI | Não |
SessionEnd | Ao encerrar a sessão (exit/quit) | Não |
PromptSubmit | Quando o usuário submete um prompt | Não |
PreToolUse | Antes de executar uma ferramenta | Sim |
PostToolUse | Após executar uma ferramenta com sucesso | Não |
ToolError | Quando uma ferramenta falha | Não |
AgentStart | Ao entrar em agent/coder mode | Não |
AgentEnd | Ao sair de agent/coder mode | Não |
CompactDone | Após uma compactação de histórico | Não |
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:
| Pattern | Ferramentas matched |
|---|---|
write | Apenas write |
write|patch | write ou patch |
exec* | exec, exec_background, etc. |
mcp_* | Todas as ferramentas MCP |
* | Todas as ferramentas (default se omitido) |
Variáveis de Ambiente
Hooks do tipocommand recebem variáveis de ambiente com contexto do evento:
| Variável | Descrição | Exemplo |
|---|---|---|
CHATCLI_HOOK_EVENT | Nome do evento que disparou o hook | PostToolUse |
CHATCLI_HOOK_TOOL | Nome da ferramenta (se aplicavel) | write |
CHATCLI_HOOK_SESSION | ID da sessão atual | session_abc123 |
CHATCLI_HOOK_FILE | Caminho do arquivo afetado (se aplicavel) | /project/main.go |
CHATCLI_HOOK_CWD | Diretório de trabalho atual | /Users/dev/project |
CHATCLI_HOOK_MODE | Modo atual (chat, agent, coder) | agent |
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.