Sandboxing
Backends y modos: referencia completa de sandbox.
Sandbox frente a política de herramientas frente a elevado
Depurar “¿por qué está bloqueado esto?”
Modo elevado
Exec elevado para remitentes de confianza.
Ejemplos de configuración
Ejemplo 1: Agente personal + familiar restringido
Ejemplo 1: Agente personal + familiar restringido
- Agente
main: se ejecuta en el host, con acceso completo a herramientas. - Agente
family: se ejecuta en Docker (un contenedor por agente), soloready envíos de mensajes de la conversación actual.
Ejemplo 2: Agente de trabajo con sandbox compartido
Ejemplo 2: Agente de trabajo con sandbox compartido
Ejemplo 2b: Perfil global de programación + agente solo de mensajería
Ejemplo 2b: Perfil global de programación + agente solo de mensajería
- Los agentes predeterminados obtienen herramientas de programación.
- El agente
supportes solo de mensajería (+ herramienta de Slack).
Ejemplo 3: Diferentes modos de sandbox por agente
Ejemplo 3: Diferentes modos de sandbox por agente
Precedencia de configuración
Cuando existen configuraciones globales (agents.defaults.*) y específicas de agente (agents.list[].*):
Configuración de sandbox
La configuración específica del agente sobrescribe la global:agents.list[].sandbox.{docker,browser,prune}.* sobrescribe agents.defaults.sandbox.{docker,browser,prune}.* para ese agente (se ignora cuando el ámbito de sandbox se resuelve como "shared").Restricciones de herramientas
El orden de filtrado es:Perfil de herramientas del proveedor
tools.byProvider[provider].profile o agents.list[].tools.byProvider[provider].profile.Reglas de precedencia
Reglas de precedencia
- Cada nivel puede restringir más las herramientas, pero no puede volver a conceder herramientas denegadas en niveles anteriores.
- Si
agents.list[].tools.sandbox.toolsestá definido, reemplazatools.sandbox.toolspara ese agente. - Si
agents.list[].tools.profileestá definido, sobrescribetools.profilepara ese agente. - Las claves de herramientas de proveedor aceptan
provider(por ejemplo,google-antigravity) oprovider/model(por ejemplo,openai/gpt-5.4).
Comportamiento de la lista de permitidos vacía
Comportamiento de la lista de permitidos vacía
Si cualquier lista de permitidos explícita en esa cadena deja la ejecución sin herramientas invocables, OpenClaw se detiene antes de enviar el prompt al modelo. Esto es intencionado: un agente configurado con una herramienta faltante como
agents.list[].tools.allow: ["query_db"] debe fallar de forma visible hasta que se habilite el plugin que registra query_db, no continuar como agente solo de texto.group:* que se expanden a varias herramientas. Consulta Grupos de herramientas para ver la lista completa.
Las sobrescrituras elevadas por agente (agents.list[].tools.elevated) pueden restringir aún más el exec elevado para agentes concretos. Consulta Modo elevado para más detalles.
Migración desde agente único
- Antes (agente único)
- Después (multiagente)
Las claves de configuración heredadas
agents.defaults.*/agents.list[].* (como sandbox.perSession, agentRuntime, embeddedPi) son migradas por openclaw doctor; prefiere agents.defaults + agents.list de ahora en adelante.Ejemplos de restricción de herramientas
- Agente de solo lectura
- Ejecución de shell con herramientas de sistema de archivos deshabilitadas
- Solo comunicación
Error común: “non-main”
Pruebas
Después de configurar el sandbox y las herramientas multiagente:Probar restricciones de herramientas
- Envía un mensaje que requiera herramientas restringidas.
- Verifica que el agente no pueda usar herramientas denegadas.
Solución de problemas
El agente no está en sandbox pese a `mode: 'all'`
El agente no está en sandbox pese a `mode: 'all'`
- Comprueba si hay un
agents.defaults.sandbox.modeglobal que lo sobrescriba. - La configuración específica del agente tiene precedencia, así que establece
agents.list[].sandbox.mode: "all".
Herramientas aún disponibles a pesar de la lista de denegación
Herramientas aún disponibles a pesar de la lista de denegación
- Revisa el orden completo de filtrado: perfil → perfil de proveedor → política global → política de proveedor → política de agente → política de proveedor de agente → sandbox → subagente.
- Cada nivel solo puede restringir más, no volver a conceder.
- Consulta Sandbox vs política de herramientas vs elevado para depurar paso a paso.
Contenedor no aislado por agente
Contenedor no aislado por agente
- El
scopepredeterminado es"agent"(un contenedor por id de agente). - Define
scope: "session"para un contenedor por sesión, oscope: "shared"para reutilizar un contenedor entre agentes.
Relacionado
- Modo elevado
- Enrutamiento multiagente
- Configuración del sandbox
- Sandbox vs política de herramientas vs elevado — depuración de “¿por qué está bloqueado esto?”
- Sandboxing — referencia completa del sandbox (modos, ámbitos, backends, imágenes)
- Gestión de sesiones