Qué pasa cuando escribes ai-jail claude
ai-jail construye una copia pequeña y cerrada de tu sistema, pone tu proyecto dentro y arranca ahí al agente. Los muros son funciones del propio sistema operativo, así que el agente corre a toda velocidad y no puede desactivarlos.
Qué pasa al arrancar
Tarda un instante, cada vez, y después nada queda corriendo en segundo plano.

Lee tus reglas
ai-jail confía en tu propio archivo ~/.ai-jail. A un archivo .ai-jail dentro del proyecto lo trata como no confiable: ese archivo puede endurecer el sandbox, pero nunca abrirlo. Los flags de la línea de comandos mandan sobre ambos.
Construye el sandbox
ai-jail prepara cada una de las capas de abajo antes de que el agente exista. Si un archivo de configuración es ilegible o inválido, ai-jail se detiene en lugar de arrancar con reglas más débiles.
Arranca al agente dentro
El agente, y cada script, paquete y servidor MCP que arranca, hereda los mismos muros. Cuando el agente termina, ai-jail también termina.
Las capas, de fuera hacia dentro
ai-jail no confía en que un solo muro aguante por sí mismo. En Linux el agente queda detrás de cinco, cada uno impuesto por el kernel, más dos filtros sobre lo que entra y lo que sale.

Namespaces
bubblewrap- Qué es
- Un namespace es el kernel dándole a un proceso su propia vista privada del sistema. ai-jail le pide a bubblewrap que los cree, la misma herramienta pequeña que Flatpak usa para aislar aplicaciones de escritorio, y no necesita root.
- Qué detiene
- El agente recibe su propia lista de procesos, su propio hostname (
ai-sandbox), ningún canal entre procesos hacia los programas del host y nada de red salvo que pases--network. Si ai-jail muere, todo lo que hay dentro muere con él.
Sistema de archivos
montajes- Qué es
- Dentro del namespace solo existe lo que ai-jail monta. El proyecto está en lectura y escritura en su ruta real, los directorios del sistema como
/usrestán en solo lectura, y el directorio home y/tmpson nuevos y viven en memoria. - Qué detiene
~/.ssh,~/.aws,~/.gnupg,~/.dockery los perfiles del navegador están en una lista integrada que nunca se monta. Todo lo que se escribe fuera del proyecto desaparece cuando termina la sesión.
Landlock
kernel 5.13+- Qué es
- Landlock es una función del kernel de Linux que permite a un proceso renunciar para siempre al acceso a archivos. ai-jail la usa para repetir las reglas del sistema de archivos como una segunda lista de permitidos dentro del kernel.
- Qué detiene
- Un error o un truco en la capa de montajes no basta para llegar a una ruta fuera de la lista, y lo que es de solo lectura sigue siéndolo. En kernels demasiado antiguos para Landlock, ai-jail lo avisa y continúa con las demás capas.
seccomp
llamadas al sistema- Qué es
- Los programas le piden cosas al kernel mediante llamadas al sistema (syscalls). seccomp es un filtro sobre esas llamadas, y ai-jail lo usa para rechazar las que un agente de programación nunca necesita.
- Qué detiene
- El filtro bloquea
ptrace,mount,bpf, los módulos del kernel,io_uring, el keyring del kernel, los sockets raw yTIOCSTI, la llamada que escribe pulsaciones de teclas en una terminal. Es una lista de bloqueo a propósito, para que los compiladores y runtimes sigan funcionando.
Límites de recursos
rlimits- Qué es
- Topes que el kernel impone a cuánto puede usar un árbol de procesos: 4096 procesos y 65 536 archivos abiertos, con los core dumps desactivados. El modo lockdown los baja a 1024 y 4096.
- Qué detiene
- Una fork bomb o un script desbocado chocan con el techo dentro de la jaula en lugar de congelar tu máquina. El agente no puede volver a subir los límites.
Lista de permitidos del entorno
lo que entra- Qué es
- Tu shell está llena de variables, y algunas son claves de API. ai-jail limpia el entorno y pasa solo una lista corta:
PATH,HOME,TERM, el locale y los ajustes de proxy y de certificados. - Qué detiene
- Los tokens y las credenciales de la nube exportados en tu shell nunca llegan al agente. Dejas pasar uno por su nombre con
--envcuando una tarea lo necesita.
Proxy de terminal
lo que sale- Qué es
- El agente corre detrás de su propia pseudoterminal, y lo que imprime pasa por un parser de terminal antes de llegar a tu pantalla. El mismo proxy dibuja la barra de estado de ai-jail en la última fila.
- Qué detiene
- El proxy filtra las secuencias de escape que tocan tu portapapeles o consultan tu terminal. Dentro de tmux o zellij se desactiva solo, porque las terminales anidadas se pelean por el redimensionado.
En macOS el muro es más delgado
macOS no tiene namespaces, Landlock ni seccomp. ai-jail convierte la misma política en un perfil para sandbox-exec, el sandbox integrado de Apple. La documentación de ai-jail dice claramente que esto no equivale al aislamiento de Linux.

| Linux | macOS | |
|---|---|---|
| Backend | bubblewrap, y luego Landlock, seccomp y límites de recursos | sandbox-exec con un perfil generado en cada arranque. Apple lo marcó como obsoleto, y no existe nada mejor sin extensiones del kernel. |
| Directorio home | Un home nuevo en memoria. El real no está montado. | El perfil parte sin lecturas globales y luego permite solo las rutas que el agente necesita, así que tu home real sigue cerrado. |
/tmp | Privado, se descarta al salir | El /tmp del host, porque no hay namespace de montaje. TMPDIR apunta a una carpeta privada creada para ese arranque, y esa es la única ruta temporal concedida. |
| Mapeos copy-on-write | --overlay-map deja que el agente escriba en una copia | Se trata como un mapeo de solo lectura |
| Red | Apagada por defecto, en su propio namespace de red | Apagada por defecto. En lockdown siempre está bloqueada, incluso con --network. |
| Otros programas | Invisibles: lista de procesos propia, sin IPC del host | Mach, IOKit y el IPC del host están denegados salvo que pases --macos-host-ipc |
Por qué estas piezas
ai-jail escribe el mínimo posible de código de seguridad propio. Maneja bubblewrap, que es pequeño, está empaquetado en todas las distribuciones importantes y Flatpak lo pone a prueba a diario, y le suma funciones del kernel.
| Opción | Por qué no |
|---|---|
| Firejail | Puede hacer el trabajo, pero es un binario setuid root, y varios CVE vienen de ese diseño. bubblewrap funciona sin root. |
| Reescribir bubblewrap en Rust | Más de 500 líneas de código sensible para la seguridad que mantener y parchear en solitario, para evitar una dependencia de unos 50 KB que recibe correcciones de upstream. |
| nsjail | Es capaz, pero está pensado para servidores, se maneja con archivos de configuración protobuf y está empaquetado en menos sitios. |
| systemd-nspawn | Requiere systemd, así que falla dentro de contenedores y en sistemas que no lo tienen. |
Tan pequeño que se puede leer
Toda la herramienta es un solo programa síncrono en Rust, sin runtime async, daemon ni imagen de contenedor.
- 1
- binario que instalar
- 8
- dependencias directas
- 720
- tests unitarios en el código
- 19
- tests que intentan escapar de un sandbox real
Contado en el repositorio de ai-jail en la versión 1.22.0.
Sigue leyendo
Configurar
Cada flag y cada clave de configuración, y cómo abrir solo lo que la tarea necesita.
Seguridad
El modelo de amenazas, los opt-ins que lo debilitan, las auditorías y la firma de versiones.
Comparar
En qué se diferencia de los sandboxes integrados de los agentes, de Docker y de las máquinas virtuales.
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