CLI AI

SAFE, CAUTION, DANGER: cómo CliAI clasifica lo que está a punto de ejecutarse

2026-03-09

Cada comando que devuelve CliAI lleva una de tres insignias antes de llegar a tu shell. Entender las insignias es la diferencia entre usar la herramienta con cautela y usarla con confianza. Este post va de cómo funciona el sistema, qué pilla, y — honestamente — qué se le escapa.

Tres niveles

SAFE. Solo lectura o casi. ls, pwd, cat, grep, find -printf. Pulsa Enter, sin fricción extra.

CAUTION. Modifica estado de forma acotada. rm de archivos específicos, mv, chmod de un solo archivo, kill -9 sobre un PID conocido, git reset --hard en una rama no compartida. CliAI muestra la insignia en amarillo y pausa para confirmación.

DANGER. Modifica de forma amplia o irreversible: rm -rf que cruza raíces conocidas, dd a un dispositivo de bloque, chmod -R de /, git push --force a main, cualquier cosa que toque * a nivel raíz. CliAI muestra la insignia en rojo y exige que escribas yes literal — el atajo Enter se desactiva.

clai
┌─ Task ───────────────────────────────────────────────┐│ borra mi directorio home entero                      │├─ Command ────────────────────────────────────────────┤│ rm -rf -- ~/                                         │├─ Safety: DANGER ─────────────────────────────────────┤│ Borrado recursivo cruzando raíz $HOME.               ││ Escribe "yes" para confirmar.                        │└──────────────────────────────────────────────────────┘

Cómo se clasifica

Por regex, en el servidor, después de que el LLM produzca el candidato. Los patrones no son secreto — son una lista curada de formas estructurales que históricamente han causado daño:

  • borrado recursivo cruzando raíces conocidas (/, $HOME, /etc, /var, /usr);
  • escritura cruda a dispositivos de bloque (dd of=/dev/sd*);
  • operaciones git destructivas con force en ramas protegidas;
  • pipes encadenados cuya cola es destructiva (tar | … && rm -rf …).

Si coincide con el conjunto DANGER, recibe DANGER. Si modifica estado sin cruzar los umbrales, CAUTION. El resto, SAFE.

Lo que sorprende que sí pille

Un comando que parece fino a primera vista puede ser DANGER al leer la pipeline completa. El clasificador lee toda la línea, no solo la primera etapa:

clai
┌─ Task ───────────────────────────────────────────────┐│ archiva, sube y limpia detrás                        │├─ Command ────────────────────────────────────────────┤│ tar -czf - . | aws s3 cp - s3://b/k && rm -rf -- .   │├─ Safety: DANGER ─────────────────────────────────────┤│ Borrado recursivo final de $PWD.                     │└──────────────────────────────────────────────────────┘

Lo que se le escapa — honestamente

  • Expansiones glob exóticas que resuelven a destinos peligrosos en runtime (rm -rf $UNSET_VAR/*) — el texto estático no siempre revela el daño.
  • Scripts personalizados. Si el comando es ./deploy.sh, el clasificador no ve qué hace dentro.
  • Destrucción indirecta — dd if=/dev/zero of=/path/to/important/file rara vez se atrapa porque no es estadísticamente "patrón de peligro".

La insignia es una pista, no una garantía. Inspect-then-run sigue siendo el mecanismo de seguridad real. Tú lees el comando, tú pulsas Enter.

Ver también