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 sessoes |
| Workspace | .chatcli/hooks.json | Apenas o projeto atual |
Estrutura do Arquivo
Eventos Disponiveis
O ChatCLI emite 9 eventos de lifecycle aos quais hooks podem se vincular:| Evento | Quando dispara | Blocking |
|---|---|---|
SessionStart | Ao iniciar uma nova sessao do ChatCLI | Não |
SessionEnd | Ao encerrar a sessao (exit/quit) | Não |
PromptSubmit | Quando o usuário submete um prompt | Não |
PreToolUse | Antes de executar uma ferramenta | Sim |
PostToolUse | Apos 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 compactacao de histórico | Não |
Tipos de Hook
- Command (Shell)
- HTTP (Webhook)
Executa um comando shell no sistema operacional. O comando tem acesso a variaveis 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) |
Variaveis de Ambiente
Hooks do tipocommand recebem variaveis 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 sessao atual | session_abc123 |
CHATCLI_HOOK_FILE | Caminho do arquivo afetado (se aplicavel) | /project/main.go |
CHATCLI_HOOK_CWD | Diretorio 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 sessoes 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 codigo.
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.
Seguranca
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.