Tu agente ya tiene un sandbox. Cubre otra mitad.
Los sandboxes integrados y las solicitudes de permiso vigilan los comandos que ejecuta el modelo. ai-jail decide qué puede ver en tu máquina el programa del agente entero. Los dos trabajan juntos.
Última revisión: 21 de septiembre de 2026. Los otros productos cambian rápido, así que cada afirmación sobre ellos enlaza a la documentación del propio fabricante.
Dónde está el muro
Al momento de escribir esto, el sandbox de Claude Code se aplica a los comandos de shell y a sus procesos hijos. Sus herramientas de archivos usan en cambio el sistema de permisos, y su documentación dice que los servidores MCP y los hooks corren sin restricciones en el host. ai-jail arranca al propio agente dentro del muro, así que todo lo que él lanza también queda dentro.

Codex también aísla los comandos que lanza y deja fuera el proceso codex. Su documentación no dice dónde corren los servidores MCP locales.
Una solicitud de permiso es otro tipo de protección
Una solicitud le pregunta a una persona, y a una persona se la puede apurar o engañar. Un sandbox le pregunta al kernel, que responde lo mismo todas las veces.

Modos que sacan a la persona del medio
Al momento de escribir esto, cada uno de estos agentes tiene un modo que deja de preguntar. Sin la solicitud, el sandbox es la única protección que queda, si hay uno activado.
| Agente | Modo | Qué dice el fabricante que hace |
|---|---|---|
| Claude Code | auto | Todo se ejecuta y un segundo modelo revisa las acciones en tu lugar. La documentación llama a este clasificador un control por acción, no una frontera de aislamiento. |
| Claude Code | bypassPermissions, también --dangerously-skip-permissions | Todo se ejecuta sin comprobaciones. La documentación dice que se use solo en contenedores y VMs aislados. |
| Codex CLI | Política de aprobación never | El agente nunca pregunta. El modo de sandbox sigue aplicándose. Mira aprobaciones y seguridad. |
| Codex CLI | danger-full-access, o --yolo | El sandbox está apagado. Con --yolo tampoco hay aprobaciones. |
Lado a lado
Todo lo que aparece aquí describe la documentación de cada producto al momento de escribir esto. Cuando la documentación que leímos no responde una pregunta, la celda lo dice.
| Sandbox de Claude Code | Sandbox de Codex CLI | Sandbox de Gemini CLI | ai-jail | |
|---|---|---|---|---|
| Lo que añade envolver al agente entero | ||||
| Qué hay dentro del muro | Los comandos de Bash, PowerShell y Monitor y sus hijos. El proceso claude, sus herramientas de archivos, los servidores MCP y los hooks quedan fuera. | Los comandos que lanza el agente. El proceso codex queda fuera. Servidores MCP locales: no documentado. | El proceso entero de la CLI, o solo la shell y las herramientas de escritura con security.toolSandboxing. | Todo el árbol de procesos: el agente, sus herramientas de archivos, los servidores MCP, los hooks y cada comando. |
| Activado por defecto | No. Lo activas con /sandbox o sandbox.enabled. Si falta una dependencia, avisa y ejecuta los comandos sin sandbox, salvo que definas sandbox.failIfUnavailable. | Sí. workspace-write es el modo por defecto. | Lo activas con -s, GEMINI_SANDBOX o tools.sandbox. | Está activado siempre que arrancas al agente a través de él. Si la configuración es inválida, se niega a arrancar. |
¿El código aislado puede leer ~/.ssh por defecto? | Sí. La documentación dice que la configuración por defecto sigue permitiendo leer archivos de credenciales como ~/.aws/credentials y ~/.ssh/. Las reglas de denegación son opt-in. | Sí en Linux, donde todo el sistema de archivos se monta en solo lectura. Las entradas de denegación son opt-in. Valor por defecto en macOS: no documentado. | El perfil por defecto en macOS, permissive-open, permite lecturas amplias de archivos. Los perfiles más estrictos son opt-in. | No. El agente recibe un directorio home nuevo y vacío. --ssh es opt-in. |
| Variables de entorno | Los comandos aislados heredan por defecto el entorno del proceso padre, credenciales incluidas. sandbox.credentials puede denegarlas o enmascararlas. | No documentado | No documentado | Una lista de permitidos mínima con variables de terminal, locale y toolchain. Añades otras por su nombre con --env. |
| Vía de escape que el modelo puede usar | El modelo puede reintentar un comando con dangerouslyDisableSandbox, que pasa por el flujo normal de permisos. allowUnsandboxedCommands: false lo desactiva. | Con la política on-request el agente pide salir del sandbox para editar fuera del workspace o para usar la red. | No documentado | Ninguna. Defines la política antes de que el agente arranque, y el archivo .ai-jail del proyecto puede endurecerla pero nunca abrirla. |
| Funciona con cualquier agente | Solo Claude Code | Solo Codex | Solo Gemini CLI | Cualquier comando, con un solo archivo de política para todos tus agentes. |
| Lo que los sandboxes integrados hacen mejor | ||||
| Modelo de red | Un proxy con una lista de permitidos por dominio. Un dominio nuevo te pide confirmación. La documentación señala que el domain fronting puede saltárselo. | Apagada por defecto en workspace-write. Un ajuste la activa, y un proxy opcional añade reglas de permitir y denegar por dominio. | El perfil por defecto permite la red. Los perfiles más estrictos y los que usan proxy son opt-in. | Todo o nada. Está apagada por defecto, y --network la abre entera. No tiene filtro por dominio, a propósito. |
| Aprobación de cada comando | Sí. Modos de permisos, un modo plan, un modelo clasificador y políticas gestionadas por la organización. | Sí. Políticas de aprobación, reglas por categoría y un agente revisor opcional. | No documentado | Ninguna. ai-jail nunca ve los comandos individuales y nunca pregunta. |
| Rutas protegidas dentro del proyecto | Sí. .git/hooks, .git/config, los ajustes de .claude, .mcp.json, los archivos rc de la shell y otros quedan en solo lectura. | Sí. .git, .agents y .codex bajo las raíces escribibles quedan en solo lectura. | No documentado | Ninguna integrada. Todo el proyecto es escribible. Enmascaras o deniegas rutas tú mismo con --mask y deny_paths. |
| Ocultar secretos al agente sin dejar de usarlos | El enmascaramiento de credenciales puede inyectar el secreto real en el proxy. Requiere un ajuste experimental. | No documentado | No documentado | No. Un archivo enmascarado es un archivo vacío. |
| Plataformas | macOS, Linux, WSL2. Ni Windows nativo ni WSL1. | macOS, Linux, WSL2 y Windows nativo. | Seatbelt en macOS, Docker o Podman, gVisor, LXC (experimental) y Windows nativo. | Linux y macOS. En Windows, solo WSL2. |
| Instalación | Viene con el agente. En Linux necesita bubblewrap y socat. | Viene con el agente. | Viene con el agente. Los backends de contenedores necesitan Docker o Podman. | Un binario aparte. En Linux necesita bubblewrap. |
Fuentes: Claude Code sandboxing, Claude Code sandbox environments, Codex approvals and security, Codex Linux sandbox, Gemini CLI sandbox.
Usa los dos
Con la red apagada, un agente en la nube no puede llegar a la API de su propio modelo. En la práctica abres dos cosas: la red y el login del agente.
cd ~/Projects/my-appai-jail --network --agent-state claude
Lo que siguen haciendo los controles del agente
Las solicitudes de permiso, las reglas de permitir y denegar y el modo plan son parte del programa del agente, así que funcionan dentro de la jaula igual que fuera. Atrapan el comando que tú no habrías aprobado.
Lo que ai-jail garantiza por debajo
El agente, sus servidores MCP y sus hooks nunca ven tu directorio home, tus claves ni los tokens de tu shell, apruebes lo que apruebes. Lo que el agente puede leer, todavía lo puede enviar, así que enmascara los secretos dentro del proyecto.
Docker, dev containers y máquinas virtuales
Estas también son buenas respuestas, y una máquina virtual es una más fuerte. Se diferencian en lo que tienes que construir y mantener al día.
| Qué te da | Qué cuesta | |
|---|---|---|
| Contenedor Docker | Su propio sistema de archivos, su lista de procesos y su red. El agente ve solo lo que montas. | Una imagen que construir y mantener, con tus toolchains instaladas por segunda vez. Si montas el socket de Docker, el contenedor equivale a root en el host. |
| Dev container | El mismo aislamiento que un contenedor, descrito en un archivo que tu editor entiende y tu equipo puede compartir. | El mismo mantenimiento de imágenes, más un editor o una herramienta que entienda el formato. |
| Máquina virtual | Su propio kernel. Es la frontera más fuerte de esta lista, y la correcta para código que crees hostil. | La opción más pesada: un sistema invitado que instalar, actualizar, al que darle memoria y al que copiar tu proyecto. |
| ai-jail | Un sandbox alrededor de un comando, con los compiladores y runtimes que ya tienes en tu máquina. No necesita imagen, daemon ni root. | Comparte tu kernel, así que un exploit del kernel o de un driver queda fuera de su frontera. Es más débil que una máquina virtual. |
La propia documentación de ai-jail lo llama una capa útil, no un reemplazo de una VM desechable. Lee el modelo de amenazas.
Preguntas sobre usarlos juntos
¿Debo desactivar el sandbox y las solicitudes de mi agente?
¿ai-jail es más seguro que Docker?
¿Por qué no hay una lista de permitidos de red por dominio?
IPAddressAllow=, o un contenedor o una VM que sea dueño del namespace de red.Solo uso Claude Code. ¿Igual necesito ai-jail?
@anthropic-ai/sandbox-runtime de Anthropic, una beta en research preview, envuelve el proceso entero. ai-jail también envuelve el proceso entero, arranca con tu directorio home y tus variables de entorno cerrados, y usa la misma política para cualquier otro agente que pruebes después. Mira la comparación de entornos de sandbox de Anthropic.Pon a tu agente tras las rejas
ai-jail es un único binario que no necesita daemon ni root. Añades una palabra delante del comando que ya usas.
brew tap akitaonrails/tap && brew install ai-jailai-jail claude