Sandbox vs política de herramientas vs Elevated
OpenClaw tiene tres controles relacionados (pero diferentes):- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) decide dónde se ejecutan las herramientas (Docker vs 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 para exec para ejecutar fuera del sandbox cuando estás en sandbox (gatewayde forma predeterminada, onodecuando el destino de exec está configurado ennode).
Depuración rápida
Usa el inspector para ver lo que OpenClaw está haciendo realmente:- modo/alcance/acceso al workspace efectivos del sandbox
- si la sesión está actualmente en sandbox (main vs no main)
- allow/deny efectivo de herramientas del sandbox (y si provino de agent/global/default)
- controles de elevated y rutas clave 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 no main están en sandbox (sorpresa habitual para grupos/canales)."all": todo está en sandbox.
Bind mounts (comprobación rápida de seguridad)
docker.bindsatraviesa el sistema de archivos del sandbox: todo lo que montes será visible dentro del contenedor con el modo que configures (: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 en la ruta de origen normalizada y luego de nuevo después de resolver a través del ancestro existente más profundo. Los escapes por padres con symlink no omiten las comprobaciones de rutas bloqueadas o raíces permitidas.
- Las rutas hoja inexistentes también se comprueban 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 intencionadamente. - El acceso al workspace (
workspaceAccess: "ro"/"rw") es independiente de los modos de bind.
Política de herramientas: qué herramientas existen/se pueden invocar
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 la parada estricta:
/execno puede sobrescribir una herramientaexecdenegada. /execsolo cambia los valores predeterminados de sesión para remitentes autorizados; no concede acceso a herramientas. Las claves de herramientas por proveedor aceptanprovider(por ejemplogoogle-antigravity) oprovider/model(por ejemploopenai/gpt-5.4).
Grupos de herramientas (atajos)
Las políticas de herramientas (global, agente, sandbox) admiten entradasgroup:* que se expanden a múltiples herramientas:
group:runtime:exec,process,code_execution(bashse acepta como alias deexec)group:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_listgroup:media:image,image_generate,ttsgroup:openclaw: todas las herramientas integradas de OpenClaw (excluye plugins de proveedores)
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 para la sesión. - Si ya estás ejecutando directamente, elevated es efectivamente una operación sin efecto (aunque sigue estando controlado).
- Elevated no está limitado a Skills y no sobrescribe allow/deny de herramientas.
- Elevated no concede sobrescrituras arbitrarias entre hosts desde
host=auto; sigue las reglas normales del destino exec y solo conservanodecuando el destino configurado/de sesión ya esnode. /execes independiente 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 la “cárcel del sandbox"
"La herramienta X está bloqueada por la política de herramientas del sandbox”
Claves de corrección (elige una):- Deshabilita el sandbox:
agents.defaults.sandbox.mode=off(o por agenteagents.list[].sandbox.mode=off) - Permite la herramienta dentro del sandbox:
- elimínala de
tools.sandbox.tools.deny(o por agenteagents.list[].tools.sandbox.tools.deny) - o agrégala a
tools.sandbox.tools.allow(o a la allowlist por agente)
- elimínala de
“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".
Ver también
- Sandboxing — referencia completa del sandbox (modos, alcances, backends, imágenes)
- Multi-Agent Sandbox & Tools — sobrescrituras por agente y precedencia
- Elevated Mode