- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decide dónde se ejecutan las herramientas (backend de sandbox frente al host). - Política de herramientas (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) decide qué herramientas están disponibles/permitidas. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) es una vía de escape solo paraexecpara ejecutarse fuera del sandbox cuando estás en sandbox (gatewayde forma predeterminada, onodecuando el destino deexecestá configurado comonode).
Depuración rápida
Usa el inspector para ver qué está haciendo OpenClaw realmente:- modo/ámbito/acceso al espacio de trabajo efectivos del sandbox
- si la sesión está actualmente en sandbox (main frente a non-main)
- allow/deny efectivos de herramientas del sandbox (y si provienen del agente/global/predeterminado)
- puertas de elevated y rutas de claves de corrección
Sandbox: dónde se ejecutan las herramientas
El sandbox se controla medianteagents.defaults.sandbox.mode:
"off": todo se ejecuta en el host."non-main": solo las sesiones non-main se ejecutan en sandbox (una “sorpresa” común en grupos/canales)."all": todo se ejecuta en sandbox.
agents.defaults.sandbox.workspaceAccess controla qué puede ver el sandbox: "none", "ro" o "rw".
Consulta Sandboxing para ver la matriz completa (ámbito, montajes del espacio de trabajo, imágenes).
Montajes bind (comprobación rápida de seguridad)
docker.bindsperfora el sistema de archivos del sandbox: cualquier cosa que montes queda visible dentro del contenedor con el modo que definas (:roo:rw).- El valor predeterminado es lectura-escritura si omites el modo; prefiere
:ropara código fuente/secretos. scope: "shared"ignora los binds por agente (solo se aplican los binds globales).- OpenClaw valida las fuentes de bind dos veces: primero sobre la ruta de origen normalizada y luego otra vez tras resolver a través del ancestro existente más profundo. Las salidas por padres con symlink no eluden las comprobaciones de rutas bloqueadas ni de raíces permitidas.
- Las rutas hoja inexistentes siguen comprobándose de forma segura. Si
/workspace/alias-out/new-filese resuelve a través de un padre con symlink hacia una ruta bloqueada o fuera de las raíces permitidas configuradas, el bind se rechaza. - Vincular
/var/run/docker.sockentrega efectivamente el control del host al sandbox; hazlo solo de forma intencional. - El acceso al espacio de trabajo (
workspaceAccess) es independiente de los modos de bind.
Política de herramientas: qué herramientas existen/pueden invocarse
Importan dos capas:- Perfil de herramientas:
tools.profileyagents.list[].tools.profile(allowlist base) - Perfil de herramientas por proveedor:
tools.byProvider[provider].profileyagents.list[].tools.byProvider[provider].profile - Política global/por agente de herramientas:
tools.allow/tools.denyyagents.list[].tools.allow/agents.list[].tools.deny - Política de herramientas por proveedor:
tools.byProvider[provider].allow/denyyagents.list[].tools.byProvider[provider].allow/deny - Política de herramientas del sandbox (solo se aplica cuando hay sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyyagents.list[].tools.sandbox.tools.*
denysiempre gana.- Si
allowno está vacío, todo lo demás se trata como bloqueado. - La política de herramientas es el bloqueo definitivo:
/execno puede anular una herramientaexecdenegada. - La política de herramientas filtra la disponibilidad de herramientas por nombre; no inspecciona los efectos secundarios dentro de
exec. Siexecestá permitido, denegarwrite,editoapply_patchno convierte los comandos de shell en solo lectura. /execsolo cambia los valores predeterminados de sesión para remitentes autorizados; no concede acceso a herramientas.- Las claves de herramientas por proveedor aceptan
provider(por ejemplo,google-antigravity) oprovider/model(por ejemplo,openai/gpt-5.4). - Los registros de Gateway incluyen entradas de auditoría
agents/tool-policycuando un paso de política de herramientas elimina herramientas o una política de herramientas del sandbox bloquea una llamada. Usaopenclaw logspara ver la etiqueta de la regla, la clave de configuración y los nombres de herramientas afectados.
Grupos de herramientas (atajos)
Las políticas de herramientas (globales, de agente, de sandbox) admiten entradasgroup:* que se expanden a varias herramientas:
| Grupo | Herramientas |
|---|---|
group:runtime | exec, process, code_execution (bash se acepta como alias de exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | heartbeat_respond, cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list, get_goal, create_goal, update_goal, update_plan, skill_workshop |
group:media | image, image_generate, music_generate, video_generate, tts |
group:openclaw | la mayoría de las herramientas integradas de OpenClaw (excluye las primitivas fs y de runtime read/write/edit/apply_patch/exec/process, canvas y los plugins de proveedor) |
group:plugins | todas las herramientas cargadas propiedad de plugins, incluidos los servidores MCP configurados expuestos mediante bundle-mcp |
group:runtime además de las herramientas mutadoras del sistema de archivos, salvo que la política del sistema de archivos del sandbox o un límite de host independiente imponga la restricción de solo lectura.
Para servidores MCP en sandbox, la política de herramientas del sandbox es una segunda puerta de autorización. Si mcp.servers está configurado pero los turnos en sandbox solo muestran herramientas integradas, añade bundle-mcp, group:plugins o un nombre/glob de herramienta MCP con prefijo de servidor, como outlook__send_mail u outlook__*, a tools.sandbox.tools.alsoAllow; luego reinicia/recarga el gateway y vuelve a capturar la lista de herramientas. Los globs de servidor usan el prefijo de servidor MCP seguro para proveedores: los caracteres que no sean [A-Za-z0-9_-] se convierten en -, los nombres que no empiezan por una letra reciben el prefijo mcp-, y los prefijos largos o duplicados pueden truncarse o recibir un sufijo.
openclaw doctor actualmente comprueba esta forma para servidores administrados por OpenClaw en mcp.servers. Los servidores MCP cargados desde manifiestos de plugins incluidos o desde .mcp.json de Claude usan la misma puerta de sandbox, pero este diagnóstico aún no enumera esas fuentes; usa las mismas entradas de allowlist si sus herramientas desaparecen en turnos en sandbox.
Elevated: “ejecutar en host” solo para exec
Elevated no concede herramientas adicionales; solo afecta aexec.
- Si estás en sandbox,
/elevated on(oexecconelevated: true) se ejecuta fuera del sandbox (las aprobaciones aún pueden aplicarse). - Usa
/elevated fullpara omitir las aprobaciones de exec en la sesión. - Si ya te estás ejecutando directamente, elevated es efectivamente una no operación (sigue estando restringido por puertas).
- Elevated no está limitado por skill y no anula allow/deny de herramientas.
- Elevated no concede anulaciones arbitrarias entre hosts desde
host=auto; sigue las reglas normales de destino de exec y solo conservanodecuando el destino configurado/de sesión ya esnode. /execestá separado de elevated. Solo ajusta los valores predeterminados de exec por sesión para remitentes autorizados.
- Habilitación:
tools.elevated.enabled(y opcionalmenteagents.list[].tools.elevated.enabled) - Allowlists de remitentes:
tools.elevated.allowFrom.<provider>(y opcionalmenteagents.list[].tools.elevated.allowFrom.<provider>)
Correcciones comunes de “cárcel de sandbox”
“Herramienta X bloqueada por la política de herramientas del sandbox”
Claves de corrección (elige una):- Deshabilitar sandbox:
agents.defaults.sandbox.mode=off(o por agenteagents.list[].sandbox.mode=off) - Permitir la herramienta dentro del sandbox:
- elimínala de
tools.sandbox.tools.deny(o por agenteagents.list[].tools.sandbox.tools.deny) - o añádela a
tools.sandbox.tools.allow(o al allow por agente)
- elimínala de
- Revisa
openclaw logspara ver la entradaagents/tool-policy. Registra el modo de sandbox y si la regla allow o deny bloqueó la herramienta.
“Pensé que esto era main, ¿por qué está en sandbox?”
En modo"non-main", las claves de grupo/canal no son main. Usa la clave de sesión main (mostrada por sandbox explain) o cambia el modo a "off".
Relacionado
- Sandboxing — referencia completa de sandbox (modos, ámbitos, backends, imágenes)
- Sandbox y herramientas multiagente — anulaciones por agente y precedencia
- Elevated Mode