Todo comando que o CliAI devolve recebe um dos três selos antes de chegar na sua shell. Entender os selos é a diferença entre usar com cautela e usar com confiança. Este post é sobre o sistema, o que ele captura e — honestamente — o que escapa.
Três níveis
SAFE. Só leitura ou quase. ls, pwd, cat, grep, find -printf. Aperta Enter, sem atrito extra.
CAUTION. Muda o estado de forma limitada. rm de arquivos específicos, mv, chmod de um único arquivo, kill -9 de PID conhecido, git reset --hard em branch não-compartilhada. Selo amarelo, pausa para confirmação.
DANGER. Muda de forma ampla ou irreversível: rm -rf cruzando raízes conhecidas, dd em block device, chmod -R de /, git push --force em main, qualquer coisa que toque * no nível raiz. Selo vermelho, exige yes literal — o atalho Enter é desabilitado.
┌─ Task ───────────────────────────────────────────────┐│ apaga meu home inteiro │├─ Command ────────────────────────────────────────────┤│ rm -rf -- ~/ │├─ Safety: DANGER ─────────────────────────────────────┤│ Remoção recursiva cruzando raiz $HOME. ││ Digite "yes" para confirmar. │└──────────────────────────────────────────────────────┘
Como a classificação acontece
Por regex, no servidor, depois de o LLM produzir o candidato. Os padrões não são segredo — são uma lista curada de formas estruturais que historicamente causaram dano:
- remoção recursiva cruzando raízes conhecidas (
/,$HOME,/etc,/var,/usr); - escrita crua em block devices (
dd of=/dev/sd*); - operações git destrutivas com force em branches protegidas;
- pipes encadeados com cauda destrutiva (
tar | … && rm -rf …).
Se bate com o conjunto DANGER, vira DANGER. Se muda estado sem cruzar limiares, CAUTION. O resto, SAFE.
O que captura e te pega de surpresa
Um comando que parece tranquilo na primeira leitura pode ser DANGER quando você lê o pipeline todo. O classificador olha a linha inteira, não só o primeiro estágio:
┌─ Task ───────────────────────────────────────────────┐│ arquiva, sobe, e limpa atrás │├─ Command ────────────────────────────────────────────┤│ tar -czf - . | aws s3 cp - s3://b/k && rm -rf -- . │├─ Safety: DANGER ─────────────────────────────────────┤│ Remoção recursiva final de $PWD. │└──────────────────────────────────────────────────────┘
O que escapa — honestamente
- Expansões de glob exóticas que resolvem para alvos perigosos em runtime (
rm -rf $UNSET_VAR/*) — o texto estático nem sempre revela o estrago. - Scripts próprios. Se o comando é
./deploy.sh, o classificador não vê o conteúdo. - Destruição indireta —
dd if=/dev/zero of=/path/to/important/fileraramente é pego, porque não é estatisticamente um "padrão perigoso".
O selo é dica, não garantia. Inspect-then-run continua sendo o mecanismo real de segurança. Você lê o comando, você aperta Enter.
Veja também
- Limpeza de logs e backups antigos — onde os selos aparecem com mais frequência.
- Refinar comandos — quando o CAUTION parece exagero, o certo não é contornar, é refinar o prompt.