Claude Code · Seguridad · Aislamiento

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.

Filesystem Network Credentials WSL2
Respuesta rápida

¿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.

Protección

Qué controla el Sandbox

El objetivo no es impedir que Claude programe, sino darle libertad dentro de límites concretos.

FS

Filesystem

Controla dónde los comandos pueden leer y escribir.

NET

Red

Limita los dominios que pueden alcanzar los procesos.

KEY

Credenciales

Puede bloquear o enmascarar archivos y variables sensibles.

AUTO

Auto-allow

Los comandos contenidos por el Sandbox pueden ejecutarse sin pedir permiso.

OS

Protección del SO

Las restricciones se aplican al proceso real, no solo al prompt.

TEAM

Políticas de equipo

Organizaciones pueden imponer límites administrados a los desarrolladores.

Publicidad
Defensa en profundidad

Permissions → Hooks → Sandbox

Son capas diferentes que pueden combinarse para reducir riesgos.

01 · PERMISSIONS

¿Puede intentarlo?

Las reglas deciden qué herramientas y acciones puede solicitar Claude.

02 · HOOKS

¿Pasa tus reglas?

Los Hooks pueden validar o bloquear una operación.

03 · SANDBOX

¿Qué puede alcanzar?

El sistema operativo limita filesystem y red durante la ejecución.

Publicidad
Diferencia fundamental

Sandbox no es lo mismo que Permissions

Característica Permissions Sandbox
Actúa antes de ejecutar No
Controla todas las tools No
Protege procesos Bash Indirectamente
Filesystem Reglas de acceso Aislamiento OS
Red de subprocesses Reglas Proxy + allowlist
Procesos hijos No es su función principal También quedan contenidos
El Sandbox se aplica a Bash

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.

Publicidad
Compatibilidad

En qué sistemas funciona Claude Code Sandbox

Sistema Sandbox Tecnología
macOS Seatbelt
Linux bubblewrap
WSL2 bubblewrap
WSL1 No No dispone de las capacidades necesarias
Windows nativo No Usa WSL2 para Sandbox
Activación

Cómo activar Claude Code Sandbox

Dentro de Claude Code

Ejecuta /sandbox

/sandbox
El panel muestra la configuración

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.

Modes

Auto-allow vs permisos normales

Más autónomo

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
Más confirmaciones

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
Auto-allow

Qué sigue necesitando control aunque uses auto-allow

01

Las reglas deny explícitas siempre se respetan.

02

Operaciones rm o rmdir contra rutas críticas siguen pasando por control.

03

Reglas ask específicas como Bash(git push *) siguen solicitando permiso.

04

Comandos que no pueden ejecutarse dentro del Sandbox vuelven al flujo de permisos normal.

Persistencia

Dónde se guarda la configuración elegida en /sandbox

Proyecto local
.claude/settings.local.json
Para todos tus proyectos

Puedes activar el Sandbox desde:

~/.claude/settings.json
settings.json

Configuración básica del Sandbox

{
  "sandbox": {
    "enabled": true
  }
}
Temporal

Activar Sandbox solo para una sesión

claude --settings '{"sandbox":{"enabled":true}}'
Strict sandbox

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
  }
}
Strict Sandbox

Con allowUnsandboxedCommands: false, Claude no puede utilizar el escape hatch para repetir un comando sin Sandbox.

Enforcement

Impedir que Claude continúe si el Sandbox no está disponible

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false
  }
}
Configuración estricta

Si faltan dependencias o el Sandbox no puede iniciarse, Claude Code falla en vez de continuar sin aislamiento.

Filesystem

Qué puede modificar Claude por defecto

Ubicación Lectura Escritura
Working directory
Subdirectorios del proyecto
Session temp directory
Directorios añadidos con /add-dir
Resto del computador Generalmente sí No por defecto
La lectura es más abierta que la escritura

Por defecto, los comandos sandboxed pueden leer gran parte del computador. Por eso debes proteger explícitamente credenciales y archivos sensibles cuando sea necesario.

allowWrite

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"
      ]
    }
  }
}
Prefiere allowWrite a excluir toda la herramienta

Si un programa necesita únicamente escribir en una ruta adicional, es más restrictivo conceder esa ruta que sacarlo completamente del Sandbox.

Deny

Bloquear lectura y escritura en rutas sensibles

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "denyRead": [
        "~/.ssh",
        "~/.aws",
        "~/.config/private"
      ],
      "denyWrite": [
        "~/important-data",
        "/etc"
      ]
    }
  }
}
Excepciones

Permitir una ruta específica dentro de una zona bloqueada

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "denyRead": [
        "~/"
      ],
      "allowRead": [
        "~/projects"
      ]
    }
  }
}
La regla más específica gana

En este ejemplo, el resto del home permanece bloqueado, pero ~/projects vuelve a ser legible.

Protecciones internas

Claude Code protege archivos que podrían ampliar sus propios permisos

01

Archivos .claude/settings*.

02

Directorios .claude/skills, agents, commands y hooks.

03

Archivo .mcp.json.

04

Configuración sensible dentro de ~/.claude.

05

Determinados archivos de shell como .bashrc y .zshrc.

06

Configuraciones sensibles dentro de .git.

No puedes simplemente usar allowWrite para saltarlas

Las rutas protegidas existen precisamente para impedir que un proceso dentro del Sandbox modifique la configuración y amplíe sus propios privilegios.

Publicidad
Network isolation

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"
      ]
    }
  }
}
No hay dominios preautorizados por defecto

La primera vez que un comando necesita llegar a un host nuevo, Claude Code puede solicitar aprobación.

deniedDomains

Bloquear destinos concretos

{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": [
        "*.example.com"
      ],
      "deniedDomains": [
        "production.example.com"
      ]
    }
  }
}
Strict allowlist

Denegar automáticamente cualquier dominio no autorizado

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

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.

WebFetch

Permissions y red del Sandbox pueden trabajar juntas

{
  "permissions": {
    "allow": [
      "WebFetch(domain:github.com)"
    ]
  },
  "sandbox": {
    "enabled": true
  }
}
La configuración se combina

Los dominios autorizados mediante determinadas reglas WebFetch también pueden alimentar la allowlist del Sandbox.

Secretos

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"
        }
      ]
    }
  }
}
Una de las configuraciones más importantes

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.

Credential masking

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"
          ]
        }
      ]
    }
  }
}
Cómo funciona

El proceso sandboxed recibe un valor sustituto. El proxy inserta la credencial real únicamente cuando la petición sale hacia un host autorizado.

Configuración avanzada

El masking tiene diferencias entre Linux, WSL2 y macOS, y requiere TLS termination para determinadas sustituciones.

Publicidad
Linux y WSL2

Dependencias necesarias

En macOS, Claude Code utiliza Seatbelt incluido en el sistema. Linux y WSL2 utilizan otras herramientas.

bubblewrap

Filesystem isolation

Crea el entorno aislado del proceso.

socat

Network relay

Se utiliza para enrutar el tráfico a través del proxy.

sudo apt-get install bubblewrap socat
Linux avanzado

Filtro seccomp opcional

npm install -g @anthropic-ai/sandbox-runtime
Para qué sirve

Añade protección adicional, incluyendo controles relacionados con Unix sockets.

Windows

Comprobar que estás utilizando WSL2

PowerShell
wsl -l -v
Debe indicar versión 2

Si tu distribución utiliza WSL1, el Sandbox no podrá utilizar bubblewrap correctamente.

Ubuntu 24.04+

AppArmor puede impedir que bubblewrap arranque

sysctl kernel.apparmor_restrict_unprivileged_userns
Si devuelve 1

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.

WSL2

Procesos Windows lanzados desde WSL2

Ejecutar cmd.exe, powershell.exe u otros binarios de Windows desde WSL2 introduce una consideración especial.

WSL utiliza Unix sockets para comunicarse con Windows

El filtro de Unix sockets afecta si un comando sandboxed puede lanzar aplicaciones del host Windows.

Para un aislamiento más limpio

Trabaja preferentemente con herramientas Linux dentro de WSL2 en lugar de depender constantemente de ejecutables Windows desde el Sandbox.

Compatibilidad

Ejecutar algunas herramientas fuera del Sandbox

Algunas herramientas no funcionan correctamente bajo aislamiento.

{
  "sandbox": {
    "enabled": true,
    "excludedCommands": [
      "docker *"
    ]
  }
}
Excluded significa sin Sandbox

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

Docker puede ser incompatible con el Sandbox integrado

docker *

Ejecutarlo fuera del Sandbox

Anthropic documenta actualmente Docker como una herramienta incompatible con el Sandbox Bash integrado.

Mucho cuidado con docker.sock

Dar acceso a /var/run/docker.sock puede equivaler prácticamente a conceder acceso al host completo.

Network-only

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"
      ]
    }
  }
}
Esto reduce mucho la protección

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.

Git

Sandbox y Git worktrees

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.

Config y hooks de Git permanecen protegidos

La excepción no significa que el proceso pueda modificar libremente toda la configuración interna del repositorio.

WordPress

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"
        }
      ]
    }
  }
}
Ajusta los dominios a tu proyecto

Si utilizas Composer, npm, APIs propias o servicios externos, agrega únicamente los hosts necesarios.

Claude Code para WordPress →
Hooks + Sandbox

Combinar reglas semánticas con aislamiento técnico

Hook

Bloquea git push a producción

Un PreToolUse puede inspeccionar el comando antes de ejecutarse.

Sandbox

Restringe filesystem y red

Aunque un comando haya sido permitido, el sistema operativo continúa imponiendo los límites del Sandbox.

Publicidad
Limitaciones

El Sandbox reduce riesgos, pero no es una VM completa

01

El proxy controla dominios, pero normalmente no inspecciona el contenido TLS cifrado.

02

Una allowlist demasiado amplia puede permitir rutas de exfiltración de información.

03

Unix sockets mal configurados pueden permitir escapar del aislamiento.

04

Dar escritura sobre directorios del $PATH puede provocar escalación.

05

Algunas herramientas necesitan ejecutarse fuera del Sandbox.

06

Para workloads altamente hostiles, considera una VM, container o entorno remoto adicional.

macOS

Apple Events están bloqueados por defecto

open y osascript pueden fallar

El Sandbox limita Apple Events para impedir que procesos aislados controlen otras aplicaciones del sistema.

allowAppleEvents reduce el aislamiento

Activarlo permite lanzar o controlar aplicaciones externas, por lo que debe utilizarse únicamente cuando comprendas las implicaciones.

Troubleshooting

Jest se bloquea dentro del Sandbox

jest --no-watchman
Watchman puede ser incompatible

Si Jest queda esperando o falla dentro del Sandbox, Anthropic recomienda desactivar Watchman para esa ejecución.

Git

Error “unable to unlink old”

Puede ser una protección del Sandbox

Operaciones como git checkout o git merge pueden intentar reemplazar un archivo protegido por las reglas de escritura.

01

Revisa qué archivo Git intenta reemplazar.

02

Comprueba si corresponde a una ruta protegida.

03

Si la operación es legítima, ejecútala tú fuera del Sandbox o aprueba el retry unsandboxed.

Diagnóstico

Archivos read-only de 0 bytes aparecen dentro de .claude

Diagnóstico
claude doctor
Puede ocurrir tras cerrar una sesión abruptamente

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.

Empresas

Forzar Sandbox mediante Managed Settings

{
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false
  }
}
Ideal para políticas corporativas

De esta forma, los equipos pueden requerir que los comandos permanezcan dentro de los límites establecidos por la organización.

Enterprise

Usar un proxy corporativo personalizado

{
  "sandbox": {
    "network": {
      "httpProxyPort": 8080,
      "socksProxyPort": 8081
    }
  }
}
Permite políticas adicionales

Un proxy corporativo puede añadir logging, filtros e inspección adaptada a la infraestructura de la organización.

Configuración práctica

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"
      ]
    }
  }
}
No copies esta configuración ciegamente

Ajusta dominios, rutas y credenciales a tu stack. Un proyecto PHP, WordPress, Node, Python o infraestructura cloud necesitará accesos diferentes.

Buenas prácticas

Cómo utilizar Sandbox de forma segura

01

Actívalo cuando Claude vaya a ejecutar comandos automáticamente.

02

Protege explícitamente credenciales.

03

Mantén la allowlist de red pequeña.

04

Prefiere allowWrite específico a excluir herramientas completas.

05

Usa allowUnsandboxedCommands: false cuando necesites un límite estricto.

06

Combina Sandbox con Permissions y Hooks.

07

No expongas Docker socket ni sockets privilegiados.

08

Para código altamente no confiable, añade una capa de container o VM.

Decisión

Qué capa utilizar en Claude Code

Regla permanente Cómo debe trabajar Claude
CLAUDE.md
Procedimiento Workflow reutilizable
Skill
Control Permitir o denegar herramientas
Permissions
Validación Inspeccionar una acción concreta
Hook
Aislamiento Limitar filesystem y red
Sandbox
Máximo aislamiento Ejecutar código no confiable fuera del host
VM / Container
Fuentes oficiales

Documentación oficial de Claude Code Sandbox

Anthropic

Security

Seguridad, confianza, aislamiento y recomendaciones generales.

Ver Security →
Publicidad
Publicidad
Preguntas frecuentes

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.

Publicidad
Siguiente guía

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 →
Carrito de compra
Scroll al inicio