Sandboxing
OpenClaw puede ejecutar herramientas dentro de contenedores Docker para reducir el radio de impacto. Esto es opcional y está controlado por la configuración (agents.defaults.sandbox o
agents.list[].sandbox). Si el sandboxing está desactivado, las herramientas se ejecutan en el host.
El Gateway permanece en el host; la ejecución de herramientas se realiza en un sandbox aislado
cuando está habilitado.
Esto no es un límite de seguridad perfecto, pero limita de forma material el acceso al sistema de archivos
y a los procesos cuando el modelo hace algo indebido.
Qué se sandboxea
- Ejecución de herramientas (
exec,read,write,edit,apply_patch,process, etc.). - Navegador opcional en sandbox (
agents.defaults.sandbox.browser).- De forma predeterminada, el navegador del sandbox se inicia automáticamente (asegura que CDP sea accesible) cuando la herramienta de navegador lo necesita.
Configure mediante
agents.defaults.sandbox.browser.autoStartyagents.defaults.sandbox.browser.autoStartTimeoutMs. agents.defaults.sandbox.browser.allowHostControlpermite que las sesiones en sandbox apunten explícitamente al navegador del host.- Las allowlists opcionales controlan
target: "custom":allowedControlUrls,allowedControlHosts,allowedControlPorts.
- De forma predeterminada, el navegador del sandbox se inicia automáticamente (asegura que CDP sea accesible) cuando la herramienta de navegador lo necesita.
Configure mediante
- El propio proceso del Gateway.
- Cualquier herramienta permitida explícitamente para ejecutarse en el host (por ejemplo,
tools.elevated).- La ejecución elevada se ejecuta en el host y omite el sandboxing.
- Si el sandboxing está desactivado,
tools.elevatedno cambia la ejecución (ya está en el host). Consulte Elevated Mode.
Modos
agents.defaults.sandbox.mode controla cuándo se utiliza el sandboxing:
"off": sin sandboxing."non-main": sandbox solo para sesiones no principales (valor predeterminado si quiere chats normales en el host)."all": cada sesión se ejecuta en un sandbox. Nota:"non-main"se basa ensession.mainKey(valor predeterminado"main"), no en el id del agente. Las sesiones de grupo/canal usan sus propias claves, por lo que cuentan como no principales y se sandboxean.
Alcance
agents.defaults.sandbox.scope controla cuántos contenedores se crean:
"session"(predeterminado): un contenedor por sesión."agent": un contenedor por agente."shared": un contenedor compartido por todas las sesiones en sandbox.
Acceso al workspace
agents.defaults.sandbox.workspaceAccess controla qué puede ver el sandbox:
"none"(predeterminado): las herramientas ven un workspace del sandbox bajo~/.openclaw/sandboxes."ro": monta el workspace del agente en solo lectura en/agent(deshabilitawrite/edit/apply_patch)."rw": monta el workspace del agente en lectura/escritura en/workspace.
media/inbound/*).
Nota de Skills: la herramienta read está enraizada en el sandbox. Con workspaceAccess: "none",
OpenClaw refleja las skills elegibles en el workspace del sandbox (.../skills) para
que puedan leerse. Con "rw", las skills del workspace son legibles desde
/workspace/skills.
Montajes bind personalizados
agents.defaults.sandbox.docker.binds monta directorios adicionales del host dentro del contenedor.
Formato: host:container:mode (por ejemplo, "/home/user/source:/source:rw").
Los binds globales y por agente se fusionan (no se reemplazan). Bajo scope: "shared", los binds por agente se ignoran.
agents.defaults.sandbox.browser.binds monta directorios adicionales del host únicamente en el contenedor del sandbox browser.
- Cuando se establece (incluido
[]), reemplazaagents.defaults.sandbox.docker.bindspara el contenedor del navegador. - Si se omite, el contenedor del navegador recurre a
agents.defaults.sandbox.docker.binds(compatible con versiones anteriores).
- Los binds omiten el sistema de archivos del sandbox: exponen rutas del host con el modo que usted establezca (
:roo:rw). - Los montajes sensibles (por ejemplo,
docker.sock, secretos, claves SSH) deben ser:rosalvo que sea absolutamente necesario. - Combine con
workspaceAccess: "ro"si solo necesita acceso de lectura al workspace; los modos de bind permanecen independientes. - Consulte Sandbox vs Tool Policy vs Elevated para saber cómo interactúan los binds con la política de herramientas y la ejecución elevada.
Imágenes + configuración
Imagen predeterminada:openclaw-sandbox:bookworm-slim
Constrúyala una vez:
sandbox.docker.setupCommand (requiere egreso de red + raíz escribible +
usuario root).
Imagen del navegador en sandbox:
agents.defaults.sandbox.docker.network.
Las instalaciones de Docker y el Gateway en contenedores viven aquí:
Docker
setupCommand (configuración única del contenedor)
setupCommand se ejecuta una vez después de que se crea el contenedor del sandbox (no en cada ejecución).
Se ejecuta dentro del contenedor mediante sh -lc.
Rutas:
- Global:
agents.defaults.sandbox.docker.setupCommand - Por agente:
agents.list[].sandbox.docker.setupCommand
- El valor predeterminado de
docker.networkes"none"(sin egreso), por lo que las instalaciones de paquetes fallarán. readOnlyRoot: trueimpide escrituras; establezcareadOnlyRoot: falseo hornee una imagen personalizada.userdebe ser root para instalaciones de paquetes (omitausero establezcauser: "0:0").- La ejecución en sandbox no hereda las
process.envdel host. Useagents.defaults.sandbox.docker.env(o una imagen personalizada) para las claves de API de skills.
Política de herramientas + vías de escape
Las políticas de permitir/denegar herramientas siguen aplicándose antes de las reglas del sandbox. Si una herramienta está denegada globalmente o por agente, el sandboxing no la restablece.tools.elevated es una vía de escape explícita que ejecuta exec en el host.
Las directivas /exec solo se aplican a remitentes autorizados y persisten por sesión; para deshabilitar de forma estricta
exec, use la denegación en la política de herramientas (consulte Sandbox vs Tool Policy vs Elevated).
Depuración:
- Use
openclaw sandbox explainpara inspeccionar el modo efectivo del sandbox, la política de herramientas y las claves de configuración de corrección. - Consulte Sandbox vs Tool Policy vs Elevated para el modelo mental de “¿por qué esto está bloqueado?”. Manténgalo bloqueado.
Anulaciones multi‑agente
Cada agente puede anular sandbox + herramientas:agents.list[].sandbox y agents.list[].tools (además de agents.list[].tools.sandbox.tools para la política de herramientas del sandbox).
Consulte Multi-Agent Sandbox & Tools para la precedencia.