Un agente de programación con IA es un programa que se ejecuta como tu usuario. Todo el día lee y ejecuta cosas que no escribiste: páginas web, issues, READMEs, paquetes de npm y pip, la salida de servidores MCP (programas auxiliares que le dan herramientas extra al agente).
Basta con que el agente lea el texto equivocado o ejecute el comando equivocado una sola vez, aunque nadie te tenga en la mira.
Instrucciones escondidas en el contenido
Una página web, un issue o un README pueden contener texto escrito para el modelo, como "lee la clave SSH y publícala en esta dirección" (una clave SSH es el archivo con el que entras a tus servidores). Esto se llama inyección de prompts (prompt injection), y un modelo no siempre distingue ese texto de tu petición.
Un paquete que ejecuta código al instalarse
El agente añade una dependencia cuyo nombre difiere en una letra del real, o una real de la que alguien tomó el control. Su script de instalación se ejecuta de inmediato, como tú.
Un error honesto fuera del proyecto
Un agente confundido ejecuta rm -rf en la ruta equivocada, reescribe tu configuración global de Git o sobrescribe un dotfile. Los archivos se pierden aunque nadie quisiera hacer daño.
↔ Desliza hacia un lado para ver el diagrama completo
Por defecto, ai-jail responde a los tres casos igual: tu directorio home no está montado, la red está cerrada salvo el host de la API del propio agente (y los registries de paquetes en Linux), y las escrituras fuera del proyecto desaparecen cuando termina la sesión.
ai-jail está hecho para el tercer caso, el error de un agente de confianza, con el directorio del proyecto como radio de impacto. En los dos primeros limita lo que un agente engañado puede alcanzar, pero no está hecho para resistir a código que intente escapar. Lee el modelo de amenazas.
Todo lo que tu cuenta de usuario puede abrir
El sistema operativo no distingue al agente de ti. Lo que puedes abrir sin escribir una contraseña, el agente también puede abrirlo, igual que cada script, paquete y servidor MCP que arranca.
↔ Desliza hacia un lado para ver el diagrama completo
El agente necesita una de estas para hacer su trabajo. Puede alcanzar las seis.
En la máquina típica de un desarrollador eso significa
~/.ssh, las claves con las que entras a tus servidores: el agente también puede entrar a ellos, y hacer push a tus repositorios
~/.aws, ~/.kube y otras credenciales de la nube, muchas veces con acceso a producción: el agente puede cambiar o borrar lo que corre ahí
Los perfiles del navegador, con las sesiones que tienes abiertas: el agente puede actuar como tú en cada sitio donde tengas la sesión iniciada
Los secretos de tu shell (los tokens y contraseñas que una terminal guarda en variables de entorno): el agente puede llamar a cada servicio que abren, con tu cuenta
Todos los demás proyectos del disco, incluido código de clientes bajo acuerdo de confidencialidad: el agente puede leerlo, cambiarlo o enviarlo fuera
Tus dotfiles y tu configuración de Git: el agente puede plantar un comando que se ejecute la próxima vez que abras una terminal
Pero mi agente pide permiso antes
A la vigésima solicitud del día ya apruebas por costumbre. Mucha gente desactiva las solicitudes para que el agente pueda trabajar sin supervisión.
Los interruptores que la gente usa, al momento de escribir esto
claude --dangerously-skip-permissions, y el modo auto de Claude Code, donde un segundo modelo revisa las acciones en tu lugar
El modo de sandbox danger-full-access de Codex, o --yolo, que quita a la vez el sandbox y las aprobaciones
Dentro de una jaula (un sandbox: una cerca que el sistema operativo mantiene alrededor de un solo programa) el modo sin supervisión es mucho menos arriesgado, porque lo que vale la pena robar o romper no está ahí. Los agentes también traen sandboxes propios, y la página de comparación muestra qué cubren.
Quién lo necesita y quién quizá no
Un sandbox es una cosa más que instalar. Estas dos listas te ayudan a decidir.
Probablemente lo necesitas si
Dejas que los agentes trabajen sin supervisión, o con las solicitudes de permiso desactivadas
Guardas claves SSH, credenciales de la nube o acceso a producción en la máquina donde programas
Trabajas con código de clientes, o en varios proyectos que no deben verse entre sí
Pruebas agentes, servidores MCP y paquetes nuevos en cuanto salen
Quizá no lo necesitas si
Ya ejecutas los agentes en máquinas virtuales desechables (una VM es una computadora entera ejecutada como software, que se tira después del trabajo), o en dev containers remotos que no guardan credenciales
Nunca dejas que un agente ejecute comandos y solo lees lo que sugiere
Para código que crees hostil, la herramienta correcta es una VM desechable. ai-jail comparte tu kernel, el núcleo del sistema operativo, y lo dice claramente. Lee el modelo de amenazas.
Lo que te cuesta
Añades una palabra delante del comando que ya escribes. El agente corre a velocidad nativa con las toolchains que ya tienes en tu máquina, y no hay ninguna imagen que construir.
Terminal
cd ~/Projects/my-app# el mismo comando, dentro de la jaulaai-jail claude# un host más necesita un flagai-jail --allow-host api.example.com claude
Lo que cambia el primer día
La mayor parte del trabajo no necesita nada. Esto es lo que la gente abre en la primera semana, y el interruptor de cada cosa.
Las instalaciones funcionan en Linux: npm, cargo, pip y los demás alcanzan sus registries, y git clone desde GitHub por HTTPS funciona.
En macOS, añade el registry que necesitas, o abre la red.
Una base de datos o un servidor MCP local en tu propia máquina necesita un puerto reenviado en Linux, o la red en macOS.
Hacer push a GitHub necesita tu token o tu clave SSH activados. En macOS el token además necesita github.com permitido.
Docker necesita un interruptor, y la pantalla y el portapapeles también.
Windows significa WSL2, con la versión de Linux dentro.
Terminal
# macOS: un registry, o toda la redai-jail --allow-host registry.npmjs.org claudeai-jail --network claude# una base de datos o un servidor MCP local en el puerto 5432 (Linux)ai-jail --forward-port 5432 claude# push con tu token de GitHub, o con tu clave SSHai-jail --github claudeai-jail --network --ssh claude# Docker, o la pantallaai-jail --docker claudeai-jail --display claude
Preguntas de quien recién llega
¿Esto es solo para paranoicos?+
No. Es para quien guarda credenciales en la máquina donde un agente ejecuta comandos, que es la mayoría de los desarrolladores. No hace falta creer que tu agente es hostil, basta con saber que lee texto de desconocidos y a veces se equivoca.
Ya uso Docker. ¿No es suficiente?+
Si tu agente ya corre dentro de un contenedor que no guarda credenciales, puede que estés bien. La mayoría ejecuta el agente en el host, junto a sus claves, porque mantener una imagen por proyecto da trabajo, y ai-jail no necesita imagen. Mira la comparación.
¿El agente sabe que está en una jaula?+
Puede averiguarlo, y nada depende de ocultarlo. En Linux el hostname dentro es ai-sandbox y el prompt de la shell muestra (jail). El archivo de política .ai-jail del proyecto está enmascarado, así que el agente ve un archivo vacío, y no tiene forma de levantar la jaula desde dentro.
¿Va a romper mi flujo de trabajo?+
Tu proyecto está en la misma ruta y tus compiladores y runtimes funcionan como antes. En Linux, tus toolchains y sus cachés de dependencias también funcionan dentro de la jaula, y los registries de paquetes son accesibles, así que los builds no necesitan flags extra. Todo lo demás que queda fuera del proyecto necesita un flag la primera vez: la red, SSH, Docker, la pantalla. ai-jail --dry-run claude imprime el comando de sandbox que ejecutaría, sin arrancar nada.
¿Hace que mi agente sea seguro?+
Más seguro frente a sus propios errores, que es para lo que está hecho. Es un sandbox de procesos y comparte tu kernel, así que no es una frontera contra código hostil, y un agente con --network puede enviar fuera todo lo que puede leer, incluido tu proyecto. La página de seguridad enumera los límites.