/coder), a IA tem capacidade de ler, escrever, criar e executar comandos no seu sistema. Para garantir que voce esteja sempre no comando, implementamos um sistema de governanca inspirado no ClaudeCode.
Como Funciona?
Toda a vez que a IA sugere uma acao (como criar um arquivo ou rodar um script), o ChatCLI verifica as suas regras de seguranca locais antes de executar.Os 3 Estados de Permissao
Allow (Permitido)
A acao e executada automaticamente, sem interrupcao. Ideal para comandos de leitura (
read, tree, search) e Git read-only (git-status, git-diff, git-log, git-changed, git-branch).Deny (Bloqueado)
A acao e bloqueada silenciosamente (ou com erro para a IA). Ideal para proteger arquivos sensiveis ou comandos destrutivos.
Ask (Perguntar)
O ChatCLI pausa e exibe um menu interativo para voce decidir. Este e o padrao para acoes nao configuradas.
Menu de Aprovacao Interativo
Quando uma acao cai no estado “Ask”, voce vera uma caixa de seguranca com informacoes contextuais sobre a acao:Tipos de Acao Reconhecidos
| Subcomando | Label no Prompt | Detalhes Exibidos |
|---|---|---|
exec | Executar comando no shell | $ <comando>, dir: <cwd> |
test | Executar testes | $ <comando>, dir: <cwd> |
write | Escrever arquivo | arquivo: <path> |
patch | Modificar arquivo (patch) | arquivo: <path> |
read | Ler arquivo | arquivo: <path> |
search | Pesquisar no codigo | termo: <pattern>, dir: <path> |
tree | Listar estrutura de diretorios | dir: <path> |
Prompt com Contexto no Modo Paralelo
Quando a acao e solicitada por um worker do modo multi-agent, o prompt inclui informacoes adicionais sobre qual agent esta requisitando:Isso permite que voce saiba exatamente qual agent esta solicitando a acao e por que, facilitando decisoes de seguranca informadas.
Opcoes
a (Always)
Cria uma regra permanente de ALLOW para esse comando (ex: libera todas as escritas com
@coder write).Para comandos
exec, as opcoes “Always” e “Deny Forever” nao sao disponibilizadas, pois cada execucao e unica e requer aprovacao individual.Gerenciamento de Regras
As regras sao salvas localmente em~/.chatcli/coder_policy.json. Voce pode editar esse arquivo manualmente se desejar, mas o menu interativo e a forma mais facil de configurar.
O matching usa o subcomando efetivo do @coder mesmo quando args e JSON (ex.: {"cmd":"read"} vira @coder read).
Policy Local (Por Projeto)
Voce pode adicionar uma policy local no diretorio do projeto:- Local:
./coder_policy.json - Global:
~/.chatcli/coder_policy.json
- Com merge (local + global)
- Sem merge (somente local)
Se
merge: true, as regras locais mesclam com a global (local sobrescreve padroes iguais).Exemplo de Politica (coder_policy.json)
Matching com Word Boundary
O sistema de policies usa matching com word boundary, garantindo que regras nao casem parcialmente com subcomandos diferentes:| Regra | Comando | Resultado |
|---|---|---|
@coder read = allow | @coder read file.txt | Permitido |
@coder read = allow | @coder readlink /tmp | Nao casa (vai para Ask) |
@coder read --file /etc = deny | @coder read --file /etc/passwd | Deny (path-prefix match) |
Validacao de Comandos (50+ Padroes)
Alem da governanca de policies, o@coder exec valida cada comando contra 50+ padroes regex que detectam:
Destruicao de dados
rm -rf, dd if=, mkfs, drop databaseExecucao remota
curl | bash, base64 | shInjecao de codigo
python -c, eval, $(curl ...)Substituicao de processos
<(cmd), >(cmd)Manipulacao de kernel
insmod, modprobe, rmmodEvasao
${IFS;cmd}, VAR=x; bashCHATCLI_AGENT_DENYLIST:
Para a lista completa de protecoes de seguranca do ChatCLI, veja a documentacao de Seguranca e Hardening.
Boas Praticas
Inicie com Cautela
Mantenha os comandos de escrita (
write, patch, exec) como ask ate sentir confianca no agente.Libere Leituras
Geralmente, e seguro dar “Always” para
coder read, coder tree, coder search e Git read-only (git-status, git-diff, git-log).Seja Especifico
O matching usa word boundary para prefixos de subcomando e path-prefix para argumentos. Voce pode liberar
coder exec --cmd 'ls mas bloquear coder exec --cmd 'rm.Governanca no Modo Multi-Agent (Paralelo)
As policies de seguranca sao totalmente respeitadas pelos workers do modo multi-agent. Quando o/coder ou /agent opera em modo paralelo, cada worker verifica as regras do coder_policy.json antes de executar qualquer acao.
Comportamento
| Regra | Acao no Worker |
|---|---|
| allow | Acao executada automaticamente pelo worker |
| deny | Acao bloqueada; o worker recebe [BLOCKED BY POLICY] e continua seu fluxo |
| ask | O worker pausa, o spinner de progresso e suspenso, e o prompt de seguranca e exibido |
Os prompts de seguranca de multiplos workers sao serializados — apenas um prompt por vez e exibido, evitando sobreposicao visual. Regras criadas durante a sessao (via “Always” ou “Deny”) sao imediatamente visiveis para todos os workers subsequentes.
UI do Modo Coder
Voce pode controlar o estilo e o banner do/coder via variaveis de ambiente:
| Variavel | Valores | Descricao |
|---|---|---|
CHATCLI_CODER_UI | full (padrao), minimal | Estilo da interface |
CHATCLI_CODER_BANNER | true (padrao), false | Mostra/oculta o cheat sheet |