Claude Code Sandbox: qué es, cómo activarlo y configurarlo
Claude Code Sandbox permite ejecutar comandos Bash dentro de límites controlados de filesystem y red. En lugar de aprobar manualmente cada comando, puedes definir qué directorios puede modificar Claude, qué dominios puede alcanzar, qué credenciales debe proteger y qué comandos deben ejecutarse fuera del Sandbox.
¿Qué es Claude Code Sandbox?
Claude Code Sandbox es una capa
de aislamiento del sistema operativo
aplicada a los comandos Bash
y a sus procesos hijos.
Puede restringir qué archivos
pueden leer o modificar,
qué dominios pueden alcanzar
y qué credenciales pueden utilizar.
Actualmente funciona en
macOS, Linux y WSL2.
No está soportado
en Windows nativo ni WSL1.
Puedes abrir su configuración
directamente con
/sandbox.
Qué controla el Sandbox
El objetivo no es impedir que Claude programe, sino darle libertad dentro de límites concretos.
Filesystem
Controla dónde los comandos pueden leer y escribir.
Red
Limita los dominios que pueden alcanzar los procesos.
Credenciales
Puede bloquear o enmascarar archivos y variables sensibles.
Auto-allow
Los comandos contenidos por el Sandbox pueden ejecutarse sin pedir permiso.
Protección del SO
Las restricciones se aplican al proceso real, no solo al prompt.
Políticas de equipo
Organizaciones pueden imponer límites administrados a los desarrolladores.
Permissions → Hooks → Sandbox
Son capas diferentes que pueden combinarse para reducir riesgos.
¿Puede intentarlo?
Las reglas deciden qué herramientas y acciones puede solicitar Claude.
¿Pasa tus reglas?
Los Hooks pueden validar o bloquear una operación.
¿Qué puede alcanzar?
El sistema operativo limita filesystem y red durante la ejecución.
Sandbox no es lo mismo que Permissions
| Característica | Permissions | Sandbox |
|---|---|---|
| Actúa antes de ejecutar | Sí | No |
| Controla todas las tools | Sí | No |
| Protege procesos Bash | Indirectamente | Sí |
| Filesystem | Reglas de acceso | Aislamiento OS |
| Red de subprocesses | Reglas | Proxy + allowlist |
| Procesos hijos | No es su función principal | También quedan contenidos |
Las permission rules pueden controlar Bash, Read, Edit, WebFetch, MCP y otras tools. El Sandbox integrado está diseñado específicamente para comandos Bash y sus procesos hijos.
En qué sistemas funciona Claude Code Sandbox
| Sistema | Sandbox | Tecnología |
|---|---|---|
| macOS | Sí | Seatbelt |
| Linux | Sí | bubblewrap |
| WSL2 | Sí | bubblewrap |
| WSL1 | No | No dispone de las capacidades necesarias |
| Windows nativo | No | Usa WSL2 para Sandbox |
Cómo activar Claude Code Sandbox
Ejecuta /sandbox
/sandbox
Actualmente incluye secciones para modo, overrides y configuración. En Linux o WSL2 también puede aparecer una pestaña de dependencias si falta algún componente.
Auto-allow vs permisos normales
Auto-allow
Los comandos que pueden ejecutarse dentro de los límites del Sandbox se aprueban automáticamente.
- Menos interrupciones
- Filesystem restringido
- Red restringida
- Las reglas deny siguen aplicando
Regular permissions
El comando continúa ejecutándose dentro del Sandbox, pero sigue pasando por el flujo normal de permisos.
- Más control manual
- Mismo aislamiento
- Más prompts
- Útil para empezar
Qué sigue necesitando control aunque uses auto-allow
Las reglas deny explícitas siempre se respetan.
Operaciones
rm
o
rmdir
contra rutas críticas
siguen pasando
por control.
Reglas
ask
específicas como
Bash(git push *)
siguen solicitando permiso.
Comandos que no pueden ejecutarse dentro del Sandbox vuelven al flujo de permisos normal.
Dónde se guarda la configuración elegida en /sandbox
.claude/settings.local.json
Puedes activar el Sandbox desde:
~/.claude/settings.json
Configuración básica del Sandbox
{
"sandbox": {
"enabled": true
}
}
Activar Sandbox solo para una sesión
claude --settings '{"sandbox":{"enabled":true}}'
Impedir que Claude reintente comandos fuera del Sandbox
Por defecto, ciertos comandos que fallan dentro del Sandbox pueden volver al flujo normal para solicitar ejecución sin aislamiento.
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false
}
}
Con
allowUnsandboxedCommands: false,
Claude no puede
utilizar el escape hatch
para repetir
un comando
sin Sandbox.
Impedir que Claude continúe si el Sandbox no está disponible
{
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false
}
}
Si faltan dependencias o el Sandbox no puede iniciarse, Claude Code falla en vez de continuar sin aislamiento.
Qué puede modificar Claude por defecto
| Ubicación | Lectura | Escritura |
|---|---|---|
| Working directory | Sí | Sí |
| Subdirectorios del proyecto | Sí | Sí |
| Session temp directory | Sí | Sí |
| Directorios añadidos con /add-dir | Sí | Sí |
| Resto del computador | Generalmente sí | No por defecto |
Por defecto, los comandos sandboxed pueden leer gran parte del computador. Por eso debes proteger explícitamente credenciales y archivos sensibles cuando sea necesario.
Permitir escritura fuera del proyecto
Algunas herramientas necesitan escribir cachés o configuraciones en otros directorios.
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"~/.cache/my-tool",
"/tmp/build"
]
}
}
}
Si un programa necesita únicamente escribir en una ruta adicional, es más restrictivo conceder esa ruta que sacarlo completamente del Sandbox.
Bloquear lectura y escritura en rutas sensibles
{
"sandbox": {
"enabled": true,
"filesystem": {
"denyRead": [
"~/.ssh",
"~/.aws",
"~/.config/private"
],
"denyWrite": [
"~/important-data",
"/etc"
]
}
}
}
Permitir una ruta específica dentro de una zona bloqueada
{
"sandbox": {
"enabled": true,
"filesystem": {
"denyRead": [
"~/"
],
"allowRead": [
"~/projects"
]
}
}
}
En este ejemplo,
el resto
del home
permanece bloqueado,
pero
~/projects
vuelve a ser legible.
Claude Code protege archivos que podrían ampliar sus propios permisos
Archivos
.claude/settings*.
Directorios
.claude/skills,
agents,
commands
y
hooks.
Archivo
.mcp.json.
Configuración
sensible
dentro de
~/.claude.
Determinados archivos
de shell
como
.bashrc
y
.zshrc.
Configuraciones
sensibles
dentro de
.git.
Las rutas protegidas existen precisamente para impedir que un proceso dentro del Sandbox modifique la configuración y amplíe sus propios privilegios.
Controlar qué dominios puede alcanzar Claude
Los procesos dentro del Sandbox utilizan un proxy controlado por Claude Code.
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": [
"github.com",
"*.githubusercontent.com",
"registry.npmjs.org"
]
}
}
}
La primera vez que un comando necesita llegar a un host nuevo, Claude Code puede solicitar aprobación.
Bloquear destinos concretos
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": [
"*.example.com"
],
"deniedDomains": [
"production.example.com"
]
}
}
}
Denegar automáticamente cualquier dominio no autorizado
{
"sandbox": {
"enabled": true,
"network": {
"strictAllowlist": true,
"allowedDomains": [
"github.com",
"registry.npmjs.org"
]
}
}
}
strictAllowlist
es una configuración
sensible.
Claude Code
la acepta
desde user settings,
managed settings
o configuración CLI,
pero no permite
que un repositorio
la imponga
desde project settings.
Permissions y red del Sandbox pueden trabajar juntas
{
"permissions": {
"allow": [
"WebFetch(domain:github.com)"
]
},
"sandbox": {
"enabled": true
}
}
Los dominios autorizados mediante determinadas reglas WebFetch también pueden alimentar la allowlist del Sandbox.
Proteger credenciales dentro del Sandbox
El Sandbox no incluye una lista universal que automáticamente bloquee todas tus credenciales.
{
"sandbox": {
"enabled": true,
"credentials": {
"files": [
{
"path": "~/.aws/credentials",
"mode": "deny"
},
{
"path": "~/.ssh",
"mode": "deny"
}
],
"envVars": [
{
"name": "GITHUB_TOKEN",
"mode": "deny"
},
{
"name": "NPM_TOKEN",
"mode": "deny"
}
]
}
}
}
Como la lectura del filesystem es relativamente abierta por defecto, conviene proteger explícitamente SSH, AWS, tokens y otros secretos cuando trabajes con repositorios no confiables.
Usar una credencial sin entregarla directamente al proceso
El modo
mask
permite mantener
ciertas herramientas funcionando
sin exponer
el secreto real
al comando.
{
"sandbox": {
"enabled": true,
"network": {
"tlsTerminate": {},
"allowedDomains": [
"api.github.com"
]
},
"credentials": {
"envVars": [
{
"name": "GH_TOKEN",
"mode": "mask",
"injectHosts": [
"api.github.com"
]
}
]
}
}
}
El proceso sandboxed recibe un valor sustituto. El proxy inserta la credencial real únicamente cuando la petición sale hacia un host autorizado.
El masking tiene diferencias entre Linux, WSL2 y macOS, y requiere TLS termination para determinadas sustituciones.
Dependencias necesarias
En macOS, Claude Code utiliza Seatbelt incluido en el sistema. Linux y WSL2 utilizan otras herramientas.
Filesystem isolation
Crea el entorno aislado del proceso.
Network relay
Se utiliza para enrutar el tráfico a través del proxy.
sudo apt-get install bubblewrap socat
Filtro seccomp opcional
npm install -g @anthropic-ai/sandbox-runtime
Añade protección adicional, incluyendo controles relacionados con Unix sockets.
Comprobar que estás utilizando WSL2
wsl -l -v
Si tu distribución utiliza WSL1, el Sandbox no podrá utilizar bubblewrap correctamente.
AppArmor puede impedir que bubblewrap arranque
sysctl kernel.apparmor_restrict_unprivileged_userns
Tu instalación puede requerir una regla AppArmor que permita a bubblewrap crear user namespaces. Sigue la configuración oficial para tu distribución antes de desactivar controles globales del sistema.
Procesos Windows lanzados desde WSL2
Ejecutar
cmd.exe,
powershell.exe
u otros binarios
de Windows
desde WSL2
introduce una consideración especial.
El filtro de Unix sockets afecta si un comando sandboxed puede lanzar aplicaciones del host Windows.
Trabaja preferentemente con herramientas Linux dentro de WSL2 en lugar de depender constantemente de ejecutables Windows desde el Sandbox.
Ejecutar algunas herramientas fuera del Sandbox
Algunas herramientas no funcionan correctamente bajo aislamiento.
{
"sandbox": {
"enabled": true,
"excludedCommands": [
"docker *"
]
}
}
No es una excepción pequeña dentro del Sandbox: ese comando se ejecutará fuera del aislamiento y volverá al sistema normal de permisos.
Docker puede ser incompatible con el Sandbox integrado
Ejecutarlo fuera del Sandbox
Anthropic documenta actualmente Docker como una herramienta incompatible con el Sandbox Bash integrado.
Dar acceso
a
/var/run/docker.sock
puede equivaler
prácticamente
a conceder acceso
al host completo.
Usar Sandbox solo para controlar la red
Claude Code permite desactivar la capa filesystem y conservar el aislamiento de red.
{
"sandbox": {
"enabled": true,
"filesystem": {
"disabled": true
},
"network": {
"allowedDomains": [
"github.com",
"*.npmjs.org"
]
}
}
}
Con filesystem isolation desactivado, el proceso recupera acceso amplio de lectura y escritura al host. Utilízalo únicamente cuando tu objetivo sea controlar red y confíes en el workload.
Sandbox y Git worktrees
Claude puede actualizar metadata compartida de Git
Cuando trabajas
sobre un worktree,
el Sandbox
permite determinadas
escrituras
en el directorio
.git
compartido
necesarias
para operaciones
como commits.
La excepción no significa que el proceso pueda modificar libremente toda la configuración interna del repositorio.
Ejemplo de Sandbox para desarrollo WordPress
Un entorno de desarrollo local puede permitir edición del proyecto pero proteger claves SSH, AWS y tokens.
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"filesystem": {
"denyRead": [
"~/.ssh",
"~/.aws"
]
},
"network": {
"allowedDomains": [
"wordpress.org",
"*.wordpress.org",
"api.wordpress.org",
"packagist.org",
"repo.packagist.org",
"github.com",
"*.githubusercontent.com"
]
},
"credentials": {
"envVars": [
{
"name": "GITHUB_TOKEN",
"mode": "deny"
}
]
}
}
}
Si utilizas Composer, npm, APIs propias o servicios externos, agrega únicamente los hosts necesarios.
Claude Code para WordPress →Combinar reglas semánticas con aislamiento técnico
Bloquea git push a producción
Un
PreToolUse
puede inspeccionar
el comando
antes de ejecutarse.
Restringe filesystem y red
Aunque un comando haya sido permitido, el sistema operativo continúa imponiendo los límites del Sandbox.
El Sandbox reduce riesgos, pero no es una VM completa
El proxy controla dominios, pero normalmente no inspecciona el contenido TLS cifrado.
Una allowlist demasiado amplia puede permitir rutas de exfiltración de información.
Unix sockets mal configurados pueden permitir escapar del aislamiento.
Dar escritura
sobre directorios
del
$PATH
puede provocar
escalación.
Algunas herramientas necesitan ejecutarse fuera del Sandbox.
Para workloads altamente hostiles, considera una VM, container o entorno remoto adicional.
Apple Events están bloqueados por defecto
El Sandbox limita Apple Events para impedir que procesos aislados controlen otras aplicaciones del sistema.
Activarlo permite lanzar o controlar aplicaciones externas, por lo que debe utilizarse únicamente cuando comprendas las implicaciones.
Jest se bloquea dentro del Sandbox
jest --no-watchman
Si Jest queda esperando o falla dentro del Sandbox, Anthropic recomienda desactivar Watchman para esa ejecución.
Error “unable to unlink old”
Operaciones como
git checkout
o
git merge
pueden intentar
reemplazar
un archivo protegido
por las reglas
de escritura.
Revisa qué archivo Git intenta reemplazar.
Comprueba si corresponde a una ruta protegida.
Si la operación es legítima, ejecútala tú fuera del Sandbox o aprueba el retry unsandboxed.
Archivos read-only de 0 bytes aparecen dentro de .claude
claude doctor
En Linux y WSL2, ciertos placeholders utilizados por el Sandbox pueden quedar en el disco si la sesión termina antes de ejecutar su limpieza.
Forzar Sandbox mediante Managed Settings
{
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false
}
}
De esta forma, los equipos pueden requerir que los comandos permanezcan dentro de los límites establecidos por la organización.
Usar un proxy corporativo personalizado
{
"sandbox": {
"network": {
"httpProxyPort": 8080,
"socksProxyPort": 8081
}
}
}
Un proxy corporativo puede añadir logging, filtros e inspección adaptada a la infraestructura de la organización.
Ejemplo de Sandbox razonablemente estricto para desarrollo
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"filesystem": {
"denyRead": [
"~/.ssh",
"~/.aws",
"~/.gnupg"
],
"denyWrite": [
"~/Documents/private"
]
},
"credentials": {
"files": [
{
"path": "~/.ssh",
"mode": "deny"
},
{
"path": "~/.aws/credentials",
"mode": "deny"
}
],
"envVars": [
{
"name": "GITHUB_TOKEN",
"mode": "deny"
},
{
"name": "OPENAI_API_KEY",
"mode": "deny"
},
{
"name": "ANTHROPIC_API_KEY",
"mode": "deny"
}
]
},
"network": {
"allowedDomains": [
"github.com",
"*.githubusercontent.com",
"registry.npmjs.org",
"pypi.org",
"files.pythonhosted.org"
]
}
}
}
Ajusta dominios, rutas y credenciales a tu stack. Un proyecto PHP, WordPress, Node, Python o infraestructura cloud necesitará accesos diferentes.
Cómo utilizar Sandbox de forma segura
Actívalo cuando Claude vaya a ejecutar comandos automáticamente.
Protege explícitamente credenciales.
Mantén la allowlist de red pequeña.
Prefiere
allowWrite
específico
a excluir
herramientas completas.
Usa
allowUnsandboxedCommands: false
cuando necesites
un límite estricto.
Combina Sandbox con Permissions y Hooks.
No expongas Docker socket ni sockets privilegiados.
Para código altamente no confiable, añade una capa de container o VM.
Qué capa utilizar en Claude Code
Documentación oficial de Claude Code Sandbox
Sandboxing
Filesystem, red, credenciales, modos y troubleshooting.
Ver documentación oficial →Permissions
Reglas allow, ask, deny y relación con Sandbox.
Ver Permissions →Security
Seguridad, confianza, aislamiento y recomendaciones generales.
Ver Security →Guías relacionadas
FAQ sobre Claude Code Sandbox
Respuestas sobre aislamiento, filesystem, red, WSL2, credenciales y permisos.
Es una capa de aislamiento que restringe qué partes del filesystem y de la red pueden alcanzar los comandos Bash ejecutados por Claude Code.
Inicia Claude Code
y ejecuta
/sandbox.
Desde el panel
puedes seleccionar
el modo
y revisar
la configuración
efectiva.
No en Windows nativo. Actualmente el Sandbox integrado funciona en macOS, Linux y WSL2. En Windows debes ejecutar Claude Code dentro de WSL2 si quieres utilizar esta función.
Permissions decide si Claude puede utilizar una herramienta o ejecutar una acción. Sandbox limita lo que un comando Bash puede alcanzar una vez que ya se está ejecutando.
Por defecto, los comandos sandboxed pueden escribir en el working directory, sus subdirectorios, el directorio temporal de la sesión y otros directorios añadidos explícitamente.
No necesariamente de forma predeterminada. La política de lectura es más amplia que la de escritura. Puedes proteger ~/.ssh, credenciales AWS y otros secretos mediante sandbox.credentials o filesystem.denyRead.
Sí.
Utiliza
sandbox.network.allowedDomains
y
deniedDomains.
También puedes
utilizar
strictAllowlist
para denegar
hosts no autorizados
sin mostrar
un prompt.
Controla si Claude puede solicitar repetir fuera del Sandbox un comando que no pudo ejecutarse correctamente dentro de él. Con false, el escape hatch queda desactivado.
Docker puede ser
incompatible
con el Sandbox
Bash integrado.
Anthropic documenta
la posibilidad
de incluir
docker *
en excludedCommands
cuando sea necesario,
lo que implica
ejecutarlo
fuera del aislamiento.
No. Reduce considerablemente la superficie de riesgo, pero Anthropic documenta limitaciones relacionadas con red, sockets, filesystem y compatibilidad. Para código altamente no confiable puede convenir añadir containers, máquinas virtuales u otro aislamiento.
Claude Code vs Cursor: ¿cuál conviene para programar con IA?
Ya conoces las funciones avanzadas de Claude Code: Skills, Subagents, MCP, Plugins, Hooks y Sandbox. Ahora podemos compararlo con uno de sus principales competidores en desarrollo asistido por IA: Cursor.
Claude Code vs Cursor →