Si usas Claude Code el tiempo suficiente, te topas con este dilema. Pregunta «¿puedo ejecutar esto?» en cada comando, y tu flujo de trabajo se interrumpe constantemente. Pero desactivar todas las confirmaciones con --dangerously-skip-permissions (omitir permisos) significa que una inyección de prompts o un descuido podría tocar archivos por toda tu máquina. Seguridad frente a automatización: durante mucho tiempo se ha tratado como un compromiso ineludible.

Lo que rompe ese binario es el sandbox. Si delimitas de antemano «qué se puede tocar» a nivel del sistema operativo, los comandos pueden ejecutarse con libertad dentro del cercado sin confirmaciones, y aun así nada puede alcanzar lo que hay fuera. Este artículo expone, desde la perspectiva de quien lo usa a diario, qué aísla el sandbox de Claude Code y cómo, cómo empezar con /sandbox, cómo configurarlo en settings.json, en qué se diferencia de los modos de permisos y los límites en los que no debes confiar de más.

La conclusión en 30 segundos

Si solo lees una cosa

Qué es
Un mecanismo que delimita los archivos y la red que un comando puede tocar, a nivel del sistema operativo. Dentro hay libertad; fuera está prohibido.
Por qué ayuda
Hace desaparecer la disyuntiva entre la fatiga por confirmaciones y la omisión total. Reduces las confirmaciones drásticamente sin perder seguridad.
Por dónde empezar
Ejecuta /sandbox. En macOS funciona sin más; Linux/WSL2 necesita dos paquetes.

※En el uso interno de la propia Anthropic, el sandbox redujo de forma segura las confirmaciones de permisos en un 84% (fuente más abajo).

1. Por qué necesitas un sandbox

Claude Code es un agente de IA que realmente hace cosas: ejecuta pruebas, reescribe archivos. Precisamente por eso se detiene a preguntar «¿puedo ejecutar esto?» antes de comandos arriesgados. Por seguridad, es lo correcto. Pero cuando llegan decenas de confirmaciones al día, el trabajo se fragmenta y acabas pulsando Intro sin leer. Eso es la «fatiga por permisos».

Un desarrollador cansado recurre a --dangerously-skip-permissions (también llamado modo YOLO), que desactiva todas las confirmaciones. Es cómodo y, como dice su nombre, peligroso. Tres amenazas enseñan los dientes a la vez.

💉 Inyección de prompts

Si una página web o un issue que lee esconde «envía ~/.ssh», tus claves privadas pueden filtrarse sin ninguna confirmación.

🗑️ Descuidos destructivos

Un comando generado limpia una ruta inesperada. Sin confirmación, también pueden desaparecer archivos fuera del proyecto.

📤 Contaminación de la cadena de suministro

Una dependencia maliciosa envía datos al exterior durante la instalación. Con la red abierta de par en par, no puedes impedirlo.

La idea del sandbox es simple: dejar de preguntar «¿qué debo confirmar?» cada vez y delimitar de antemano «¿hasta dónde puede llegar esto?». El cercado no lo impone el propio criterio de Claude, sino el sistema operativo (el kernel), de modo que aunque sea secuestrado, y aunque un comando permitido haga más de lo que su nombre sugiere, nada escapa del límite. Por eso los comandos dentro del cercado se pueden ejecutar sin confirmaciones de forma segura: el binario de fatiga contra omisión total desaparece. En su publicación oficial de ingeniería, «Making Claude Code more secure and autonomous with sandboxing», Anthropic informa de que en su uso interno redujo de forma segura las confirmaciones de permisos en un 84% (publicado en octubre de 2025).

2. Qué es el sandbox: dos aislamientos

El sandbox de Claude Code traza dos límites alrededor de los comandos de Bash (y de todo proceso hijo que generen). Los dos deben funcionar como un conjunto: cualquiera de ellos por separado deja un hueco (véase §7).

🗂️ ① Aislamiento del sistema de archivos

Las escrituras se limitan al directorio de trabajo más una carpeta temporal de la sesión (por defecto). No se pueden modificar ~/.bashrc ni las áreas del sistema. Las lecturas son amplias, pero se pueden denegar de forma explícita. Aunque sea secuestrado, no puede reescribir nada fuera del proyecto.

🌐 ② Aislamiento de red

Por defecto es «denegar por defecto», sin ningún destino permitido. En cuanto intenta acceder a un dominio nuevo, aparece una confirmación. El tráfico pasa por un proxy fuera del sandbox y se contrasta con una lista de permitidos. Impide que los secretos salgan al exterior.

La clave está en que no depende de que Claude se comporte bien. El límite lo impone la propia maquinaria de seguridad del sistema operativo: macOS usa el Seatbelt integrado, y Linux/WSL2 usa bubblewrap. Así, el mismo límite se extiende a los scripts que invoca un comando y a los procesos nietos. Piénsalo no como una petición cortés al modelo, al estilo de las barreras de seguridad de la IA, sino como un muro físico que aguanta mecánicamente.

💡 Solo cerca Bash. El sandbox envuelve la herramienta Bash y sus procesos hijos. Las funciones integradas Read/Edit/Write de Claude, los servidores MCP y los hooks son algo aparte (regido por las reglas de permisos). Para aislar todo el proceso, usa el paquete @anthropic-ai/sandbox-runtime que se describe más abajo.

3. Primeros pasos: /sandbox y sistemas operativos compatibles

El sandbox está integrado en Claude Code. No hace falta ninguna cuenta ni herramienta adicional. En una sesión, ejecuta:

/sandbox

Se abre un panel con tres pestañas. Mode (cómo se aprueban los comandos con sandbox, en la siguiente sección), Overrides (si un comando que falla bajo el sandbox puede recurrir a ejecutarse sin sandbox) y Config (ver la configuración resuelta). En Linux/WSL2, si falta un paquete necesario, aparece en su lugar una pestaña Dependencies que te indica qué instalar.

Requisitos por sistema operativo

🍎 macOS

Nada que instalar. Usa el Seatbelt integrado. Actívalo de inmediato con /sandbox.

🐧 Linux / WSL2

Instala dos paquetes: bubblewrap y socat (p. ej. apt-get install bubblewrap socat).

🪟 Windows nativo

No es compatible. Ejecuta Claude Code dentro de WSL2 (WSL1 no funciona).

En Linux/WSL2, instala bubblewrap (la herramienta de sandbox sin privilegios que impone el aislamiento del sistema de archivos) y socat (el relé que dirige el tráfico al proxy).

# Ubuntu / Debian
sudo apt-get install bubblewrap socat

# Fedora
sudo dnf install bubblewrap socat

⚠️ Ubuntu 24.04 y posteriores: la política de AppArmor predeterminada puede impedir que bubblewrap cree los espacios de nombres de usuario que necesita. Si sysctl kernel.apparmor_restrict_unprivileged_userns devuelve 1, añade un perfil de AppArmor para bwrap que se lo conceda (los pasos están en la documentación oficial). Si devuelve 0 o la clave no existe, no hay que hacer nada. Comprueba lo mismo dentro de WSL2.

Algo útil que conviene activar es el filtro seccomp (que añade el bloqueo de sockets de dominio Unix). Es opcional; instálalo con npm install -g @anthropic-ai/sandbox-runtime. La pestaña Dependencies de /sandbox muestra el estado de ripgrep, bubblewrap, socat y el filtro seccomp. Tras instalar los paquetes, reinicia Claude Code y vuelve a abrir /sandbox (la comprobación se ejecuta al iniciar).

4. Los dos modos (autoaprobación / permisos normales)

La pestaña Mode elige cómo se aprueban los comandos dentro del sandbox.

✅ Modo de autoaprobación

Los comandos de Bash que se ejecutan dentro del sandbox se permiten automáticamente, sin confirmación: el propio límite sustituye a la confirmación. Cómodo para el trabajo diario. Los comandos que el sandbox no puede ejecutar (p. ej. tráfico a un host no permitido) recurren al flujo de permisos normal y piden confirmación.

🔍 Modo de permisos normales

Incluso con sandbox, cada comando de Bash pasa por la confirmación de permisos normal. Más control, más aprobaciones. Para los precavidos que quieren «aislamiento más las confirmaciones de siempre».

En ambos modos los límites del sistema de archivos y de la red son idénticos; la única diferencia es «autoaprobación frente a confirmación». Ten en cuenta que, incluso en el modo de autoaprobación, estas válvulas de seguridad siguen activas:

  • Las reglas de denegación explícitas siempre tienen prioridad
  • rm / rmdir apuntando a /, tu directorio personal u otras rutas críticas del sistema siguen pidiendo confirmación
  • Las reglas de tipo «ask» con alcance de contenido, como Bash(git push *), siguen forzando una confirmación, incluso dentro del sandbox

Cuidado con dos «autos» confusamente parecidos. El modo de autoaprobación del sandbox no es el modo auto de los modos de permisos. El primero significa «aprobar automáticamente porque el límite del sistema operativo lo contiene»; el segundo significa «un clasificador juzga la seguridad del comando y lo deja pasar». Funcionan de forma independiente y se pueden combinar.

5. Configurarlo en settings.json

Las opciones del panel de /sandbox se escriben en el .claude/settings.local.json del proyecto (que no se sube a git). Para mantenerlo siempre activo en todos los proyectos, pon sandbox.enabled: true en tu configuración de usuario, en ~/.claude/settings.json. Vive en la misma familia de settings.json que las reglas de permisos (allow/ask/deny).

Añadir destinos de escritura, denegar lecturas

Por defecto solo puedes escribir en el directorio de trabajo y en la carpeta temporal. Si kubectl o terraform necesitan escribir en otro sitio, añade rutas con allowWrite. A la inversa, puedes bloquear lecturas de carpetas sensibles.

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": ["~/.kube", "/tmp/build"],
      "denyRead": ["~/"],
      "allowRead": ["."]
    }
  }
}

El ejemplo anterior deniega las lecturas de todo el directorio personal permitiendo a la vez el proyecto actual (. se resuelve a la raíz del proyecto cuando la configuración vive en los ajustes del proyecto). Las rutas se imponen a nivel del sistema operativo, así que se aplican por igual a procesos hijos como npm y terraform.

Proteger las credenciales

Una trampa importante: el valor por defecto de las lecturas es «ampliamente permitido», así que ~/.aws/credentials y ~/.ssh/ son legibles tal cual. El ajuste específico sandbox.credentials (una función relativamente reciente) declara archivos cuya lectura se deniega y variables de entorno que se eliminan.

{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    }
  }
}

Permitir destinos

La red empieza con cero destinos. Un dominio nuevo pide confirmación la primera vez que se accede a él (en las versiones recientes al momento de escribir esto, aprobarlo una vez significa que no se vuelve a preguntar durante el resto de la sesión). Registra de antemano en allowedDomains los hosts sobre los que no quieres que te pregunten. Con ajustes gestionados distribuidos por la organización, también puedes bloquear automáticamente todo lo que quede fuera de la lista de permitidos en lugar de pedir confirmación.

{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": ["*.github.com", "registry.npmjs.org"]
    }
  }
}

Para imponerlo en toda la organización. En los ajustes gestionados, junto a sandbox.enabled: true, añade failIfUnavailable: true (rechazar el inicio de Claude Code si el sandbox no puede inicializarse) y allowUnsandboxedCommands: false (cerrar la «vía de escape» de reintentar fuera del sandbox: modo estricto). Juntos lo imponen como una barrera de seguridad.

6. Relación con los modos y reglas de permisos

Es fácil confundirlos, pero la maquinaria de seguridad de Claude Code tiene tres capas con funciones distintas. El sandbox es una de ellas: no sustituye a las otras dos, sino que las complementa.

Capa Qué controla Quién lo impone Alcance
Reglas de permisos Qué herramientas/comandos se pueden usar Claude Code (antes de ejecutar) Todas las herramientas
Modos de permisos Cuántas confirmaciones aparecen Claude Code (antes de ejecutar) Depende del modo
Sandbox Qué puede tocar una vez que se ejecuta El sistema operativo (kernel) Bash y procesos hijos

La diferencia decisiva es «cuándo y quién» aplica cada una. Las reglas y los modos de permisos se deciden antes de la ejecución, por Claude Code, a partir de la cadena del comando. El sandbox ata el proceso durante la ejecución, por el sistema operativo, de modo que elija lo que elija el modelo, e incluso si un comando permitido hace más de lo que su nombre implica, el límite no se mueve.

Esa es también la diferencia decisiva frente a --dangerously-skip-permissions (omisión). La omisión solo elimina las confirmaciones; el entorno sigue abierto de par en par. La autoaprobación del sandbox, en cambio, puede saltarse las confirmaciones porque ahí está el muro del sistema operativo. La vieja regla de hierro —si usas el modo de omisión, solo dentro de un contenedor o máquina virtual aislados— es algo que el sandbox te permite llevar al lado seguro incluso en tu máquina de todos los días.

7. Límites y advertencias: no confíes de más

El sandbox es potente, pero no es un aislamiento completo. Antes de apoyarte en él como un límite de seguridad estricto, conoce los límites que detalla la documentación.

🔓 El TLS no se inspecciona por defecto

El proxy juzga solo por el nombre de host y no inspecciona el contenido cifrado (por defecto). Permitir un dominio amplio como github.com deja margen para exfiltrar datos mediante domain fronting y técnicas similares. Mantén la lista de permitidos estrecha.

🔌 Abrir sockets Unix es arriesgado

Permitir /var/run/docker.sock entrega todo el host a través del socket de Docker: en la práctica, una fuga del sandbox. Ten cuidado con qué sockets abres.

📈 Acceso de escritura demasiado amplio

Ejecutables escribibles en el $PATH o archivos como .bashrc pueden convertirse en ejecución de código en otro contexto. Mantén allowWrite al mínimo.

Otra cosa que interiorizar: el alcance es solo Bash; las funciones integradas Read/Edit/Write, los servidores MCP y los hooks quedan aparte. Para aislar el proceso entero, incluidos los Skills y MCP, envuelve el propio proceso de Claude Code con el @anthropic-ai/sandbox-runtime oficial de código abierto (publicado en GitHub y npm, una vista previa de investigación lanzada en octubre de 2025). Su papel práctico no es un «muro» frente a un atacante decidido, sino un «arnés de seguridad» que reduce en órdenes de magnitud los accidentes y las situaciones fuera de control.

8. Cuándo recurrir a contenedores de desarrollo o máquinas virtuales

El sandbox no es la única opción de aislamiento de Claude Code. La comodidad y la solidez del aislamiento son un compromiso, así que elige según el propósito.

Sandbox (integrado)

Aísla Bash y sus procesos hijos. Sin Docker, configuración mínima. El recurso principal para reducir confirmaciones en el trabajo diario.

sandbox-runtime

Envuelve el proceso entero de Claude Code. Para ejecuciones desatendidas en las que también quieres cercar MCP y hooks. Sin Docker.

contenedor de desarrollo

Pone en un contenedor todo el entorno de desarrollo. Para estandarizar la configuración de un equipo. Requiere Docker.

máquina virtual

Separa todo el sistema operativo. El aislamiento más fuerte, a nivel de kernel, para código no confiable. El mayor esfuerzo.

La regla general: mantén el sandbox integrado siempre activo para reducir las confirmaciones diarias, y solo sube de nivel a sandbox-runtime, contenedores o máquinas virtuales cuando ejecutes de forma desatendida o manejes dependencias no confiables. Para el trabajo que llega a producción —como dejar que la IA opere la nube—, combinar credenciales de mínimo privilegio con un nivel de aislamiento más fuerte da tranquilidad.

Resumen

  • El sandbox delimita «qué se puede tocar» a nivel del sistema operativo, disolviendo el binario de fatiga por confirmaciones frente a omisión total.
  • Usa el aislamiento del sistema de archivos y de la red como un conjunto. Quién lo impone: macOS = Seatbelt, Linux/WSL2 = bubblewrap.
  • Empieza con /sandbox. En macOS funciona sin más; Linux/WSL2 necesita bubblewrap+socat; Windows nativo no es compatible (usa WSL2).
  • El modo de autoaprobación se salta las confirmaciones pero mantiene la seguridad porque el límite lo impone el sistema operativo. Las reglas de denegación, los rm arriesgados y las reglas «ask» con alcance de contenido siguen aplicándose.
  • Es una capa complementaria distinta de las reglas/modos de permisos: el sandbox ata después de la ejecución, mediante el sistema operativo, así que no se mueve.
  • Pero no es un muro completo: cuidado con el TLS sin inspeccionar, los sockets Unix y los permisos demasiado amplios. El alcance es solo Bash.

El sandbox rompe la premisa misma de que la seguridad y la automatización deban ser un compromiso. Basta con abrir /sandbox una vez: solo eso cambia cómo llevas las riendas de Claude Code. Para la referencia exacta y actual de configuración, toma como fuente principal la documentación oficial de ajustes del sandbox.

Preguntas frecuentes

P. ¿En qué se diferencia el sandbox de --dangerously-skip-permissions?

R. La omisión solo elimina las confirmaciones y deja el entorno indefenso. El sandbox delimita qué se puede tocar a nivel del sistema operativo, de modo que, aun saltándose las confirmaciones, nada llega al exterior. La omisión es solo para entornos aislados; el sandbox es seguro incluso en tu máquina de todos los días: esa es la diferencia decisiva.

P. ¿Puedo usarlo en Windows?

R. Windows nativo no es compatible. Ejecuta Claude Code dentro de WSL2 y funciona (WSL1 no). Bajo WSL2, los comandos con sandbox no pueden invocar binarios de Windows como cmd.exe; añádelos a excludedCommands para ejecutarlos fuera del sandbox si hace falta.

P. ¿Activarlo hará que todo vaya más lento?

R. Según Anthropic, la sobrecarga es mínima: algunas operaciones del sistema de archivos pueden ser algo más lentas. En la práctica, como el número de confirmaciones baja mucho, la velocidad de trabajo percibida a menudo sube.

P. Con el sandbox activado, ¿están garantizadas a salvo mis claves privadas?

R. No están «garantizadas». El valor por defecto de las lecturas es amplio, así que ~/.ssh y ~/.aws/credentials son legibles por defecto. Bloquéalos de forma explícita con sandbox.credentials o denyRead, y mantén la lista de permitidos de red estrecha. El aislamiento del sistema de archivos y el de red deben funcionar siempre como un conjunto.

P. ¿Los servidores MCP y los hooks también están en sandbox?

R. No. El sandbox integrado cubre solo los comandos de Bash y sus procesos hijos. MCP, los hooks y las funciones integradas Read/Edit/Write quedan aparte (regidos por las reglas de permisos). Para cercarlos todos, envuelve el proceso entero con @anthropic-ai/sandbox-runtime.