SevenTnewS

Seguridad de terminal

La trampa de '$HOME': los agentes de codificación de IA necesitan sandboxes, no avisos de '¿permitir?'

El sandbox de terminal de Qoder bloquea cerca de un centenar de comandos destructivos de agentes cada día. Los casos detrás de esos bloqueos explican por qué fallan los avisos de '¿permitir?': una carpeta de proyecto llamada $HOME, una limpieza que apuntaba a /root, y un clic que casi cuesta un disco entero.

Emmanuel Fabrice Omgbwa Yasse Asistido por IA

2026-08-13 · 7 min de lectura

La trampa de '$HOME': los agentes de codificación de IA necesitan sandboxes, no avisos de '¿permitir?'

Un millón de comandos de terminal pasan por el sandbox de Qoder cada día, según las propias cifras del equipo. Poco más de diez mil son marcados; cerca de un centenar tocan algo que no deberían, suficiente en una sola línea para destruir una semana de trabajo de un desarrollador.

Las alucinaciones pueden confundir un directorio de proyecto con una carpeta temporal; los desajustes de entorno pueden redirigir una limpieza hacia una ruta del sistema. El informe de Qoder documenta ambos casos y argumenta que cuando un agente ejecuta comandos por ti, un aviso de '¿permitir?' no es suficiente.

Un millón de comandos al día, y un centenar de casi accidentes

El primer caso es una limpieza de Windows que salió mal. El agente ejecutó cmd /c "rmdir /s /q "C:\Users\...\SuperMarioGame\src"". Intención: limpieza de archivos. El modelo trató el directorio fuente del proyecto como desechable, y rmdir /s /q elimina recursivamente sin confirmación. Parece una operación normal de desarrollo, y eso es lo que la hace peligrosa.

El segundo caso es un desajuste de entorno, sin necesidad de atacante. Un desarrollador le pidió al agente ejecutar un script de limpieza de compilación que contenía rm -rf "$OUTPUT/root". Localmente, $OUTPUT apuntaba a artefactos de compilación; cuando el agente lo ejecutó, la variable no se había cargado, $OUTPUT se expandió a vacío, y el comando se convirtió en rm -rf "/root". El sandbox denegó la escritura: /root no estaba en la lista blanca del espacio de trabajo.

La trampa de '$HOME': cuando '¿permitir?' no protege nada

Hay un tercer caso que el equipo de Qoder tiene clavado en la pared. Un desarrollador le pidió a la IA limpiar archivos temporales en la raíz del proyecto. El proyecto contenía un subdirectorio llamado $HOME. El modelo generó rm -rf "$HOME": a simple vista, una eliminación interna del proyecto. En el momento en que el shell lo tocó, $HOME se expandió al directorio personal real del usuario.

El diálogo de confirmación sí apareció. El desarrollador sí hizo clic en confirmar, creyendo que aprobaba la eliminación de una carpeta del proyecto. El disco estuvo a punto de quedar completamente borrado. El sistema operativo no arrancaba.

Esa historia es el argumento. Un diálogo solo puede mostrar lo que el usuario cree que significa un comando; el shell ejecuta lo que el comando significa después de la expansión. Nada en un botón salva esa distancia. Las listas negras comparan cadenas, y las cadenas se pueden evadir: cmd /c "rmdir /s /q" hace el mismo trabajo que rm -rf sin parecerse en nada, y un script envuelto oculta el nombre del comando por completo. Los diálogos entregan la decisión a alguien que ha hecho clic en cientos de avisos y que en su mayoría hace clic por reflejo. Una vez aprobado, un comando se ejecuta con todos los privilegios del usuario: archivos, red, entorno, recursos del sistema.

Cursor, Codex, Claude Code: la industria va más allá de los diálogos

Qoder analizó la seguridad de terminal en las principales herramientas de codificación de IA. La ejecución en terminal es un requisito básico; el sandboxing se está poniendo al día; la pregunta abierta es el plan de respaldo cuando falla. Cursor admite ejecución en sandbox con políticas de red, sistema de archivos y listas blancas en sandbox.json, nativo en macOS y Linux, con Windows dependiendo de WSL2. Codex expone políticas a nivel de sistema operativo para escritura de archivos, red y aprobaciones, una superficie orientada a CLI para usuarios avanzados. Claude Code usa Seatbelt en macOS y bubblewrap en Linux para reducir los avisos de permisos.

HerramientaMecanismo de aislamientoSituación en WindowsÉnfasis de diseño
CursorPolíticas de red, sistema de archivos y listas blancas mediante sandbox.jsonRequiere WSL2Nativo en macOS y Linux
CodexPolíticas a nivel de sistema operativo para escritura de archivos, red y aprobacionesSuperficie de políticas orientada a CLIUsuarios avanzados, automatización
Claude CodeSeatbelt en macOS, bubblewrap en LinuxNo se detalla en el análisisMenos avisos, ejecución acotada
Qodersandbox-exec + Seatbelt, bubblewrap, tokens restringidos personalizados en RustNativo, desde Windows 7Pipeline de cuatro capas más AI Review

La conclusión: los diálogos de permisos por sí solos ya no son el control principal. Lo que separa a las herramientas es la cobertura de plataformas y lo fluida que es la transición a la confirmación del usuario. Qoder integra el mecanismo a nivel de sistema operativo más adecuado para cada plataforma, de modo que la protección funcione sin que los usuarios tengan que aprender la implementación.

Cuatro capas, y después una segunda revisión

Antes de la ejecución, cada comando pasa por un pipeline: evaluación de riesgo con LLM, análisis multiplataforma, envoltura de sandbox, aislamiento del sistema operativo. Un LLM juzga la intención en el momento de la generación; tres analizadores AST manejan PowerShell, Bash/Zsh y CMD, descomponiendo los comandos en nombres y listas de argumentos estructurados. Una lista integrada marca rm, format, del, rmdir.

Las listas negras pierden su excusa en la capa AST. Una inyección de prompt podría hacer que el modelo genere whoami `rm -rf /`. A simple vista es whoami; el analizador extrae dos nombres de comando y detecta el rm entre acentos graves. El análisis estructural ve lo que la comparación de cadenas no puede.

Pero "¿es peligroso este comando?" no es la pregunta que decide la experiencia del desarrollador. La pregunta es qué hacer al respecto. Un comando marcado no es necesariamente destructivo: eliminar un archivo confirmado y rastreado por git se puede recuperar; eliminar una ruta construida a partir de una variable sin resolver no. Así que Qoder incorporó una capa de AI Review, una segunda invocación ligera del modelo que juzga la consecuencia, no la intención, en dos puntos. En la entrada del sandbox, recibe el estado de git del repositorio como contexto en lenguaje natural para razonar sobre la recuperabilidad; seguro significa ejecución en sandbox, de lo contrario un diálogo de confirmación. En la puerta de escalada de permisos, cuando la ejecución en sandbox falló y el modelo pide volver a ejecutar con permisos completos, es más conservador y solo comprueba si se dañarían archivos del sistema fuera del espacio de trabajo; permitido, de lo contrario otro diálogo.

Ambas revisiones se ejecutan con temperatura baja, devuelven JSON con un veredicto y una razón, y expiran a los 10 segundos con tres reintentos. La asimetría es intencional: con el interruptor apagado, la entrada permite por defecto mientras que la escalada bloquea por defecto; si no se puede alcanzar, todo bloquea. Un diálogo adicional es barato; un comando destructivo que se escapa no lo es.

Windows fue la parte difícil

En macOS, Qoder reutiliza sandbox-exec, generando políticas de Seatbelt a partir de una línea base que deniega por defecto. Git añadió casos límite: acceso de escritura a archivos temporales y de dispositivo, y un .git de solo lectura para que git log y git diff funcionen mientras git commit y git push requieran escalada. La sobrecarga de inicio es de 43 a 72 milisegundos, menos del 5% en comandos de escala de segundos. Linux usa bubblewrap: sistema de archivos raíz de solo lectura, rutas sensibles cubiertas con tmpfs vacío, red cortada con una bandera.

Windows no tiene un equivalente de serie, y Qoder lo llama la parte más difícil del proyecto. El equipo evaluó 15 tecnologías de aislamiento, desde Hyper-V y Windows Sandbox hasta AppContainer y Sandboxie; pocas encajaban con las restricciones de un IDE: alta frecuencia de invocación, latencia de inicio, compatibilidad hacia atrás. El resultado es una solución personalizada en Rust, que funciona desde Windows 7 con inicio a nivel de milisegundos, usando tokens restringidos para que los procesos hijo escriban solo en rutas autorizadas. AppContainer quedó fuera: aislamiento más fuerte, pero autorización dinámica difícil y solo Windows 8 y superiores. Dos rondas de pruebas arrojaron una sobrecarga promedio del 7.7%, concentrada en el inicio de procesos; los procesos de PowerShell tardaron aproximadamente un 19% más, unos 4.8 segundos más por invocación.

El sandboxing como infraestructura de agentes

El cambio más grande es para qué sirve el sandbox. Los agentes solían generar código, con el riesgo en la revisión de código. Ahora ejecutan comandos, modifican archivos, invocan habilidades y llegan a la red, así que el IDE tiene que hacerse cargo de la seguridad de ejecución. Qoder plantea el sandbox de terminal como infraestructura para el arnés del agente: una oportunidad menos para que un desarrollador en solitario elimine un proyecto; para los equipos, un punto de partida para gobernanza y auditoría. La hoja de ruta: anulaciones de políticas definidas por el usuario y por comando, distribución empresarial, informes de registro de auditoría.

Las otras herramientas de agentes de Alibaba apuntan en la misma dirección. Qoder 1.0 renunció al IDE de espacio de trabajo único por worktrees aislados para que las tareas paralelas dejaran de chocar, y su motor de memoria con alcance redujo los tokens de entrada en un 40% según los datos A/B de Alibaba. Anolisa v0.3 bloquea instrucciones maliciosas ocultas en la entrada externa, analiza el código generado por agentes antes de que se ejecute y firma criptográficamente habilidades de terceros. La apuesta: la próxima ronda competitiva de los agentes de codificación es el proceso, no el rendimiento bruto del modelo.

Lo esencial de la tecnología en 3 minutos cada mañana

Un correo, cada día laborable, con lo que realmente importa en IA y tecnología.