Configuración de sandbox y herramientas multiagente
Cada agente en una configuración multiagente puede sobrescribir la política global de sandbox y herramientas. Esta página cubre la configuración por agente, las reglas de precedencia y ejemplos.- Backends y modos de sandbox: consulta Sandboxing.
- Depuración de herramientas bloqueadas: consulta Sandbox vs Tool Policy vs Elevated y
openclaw sandbox explain. - Exec elevado: consulta Elevated Mode.
agentDir en
~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
Las credenciales no se comparten entre agentes. Nunca reutilices agentDir entre agentes.
Si quieres compartir credenciales, copia auth-profiles.json al agentDir del otro agente.
Ejemplos de configuración
Ejemplo 1: agente personal + agente familiar restringido
- agente
main: se ejecuta en el host, acceso completo a herramientas - agente
family: se ejecuta en Docker (un contenedor por agente), solo herramientaread
Ejemplo 2: agente de trabajo con sandbox compartido
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 Slack)
Ejemplo 3: diferentes modos de sandbox por agente
Precedencia de configuración
Cuando existen configuraciones globales (agents.defaults.*) y específicas del agente (agents.list[].*):
Configuración de sandbox
La configuración específica del agente sobrescribe la global:agents.list[].sandbox.{docker,browser,prune}.*sobrescribeagents.defaults.sandbox.{docker,browser,prune}.*para ese agente (se ignora cuando el alcance del sandbox se resuelve a"shared").
Restricciones de herramientas
El orden de filtrado es:- Perfil de herramientas (
tools.profileoagents.list[].tools.profile) - Perfil de herramientas del proveedor (
tools.byProvider[provider].profileoagents.list[].tools.byProvider[provider].profile) - Política global de herramientas (
tools.allow/tools.deny) - Política de herramientas del proveedor (
tools.byProvider[provider].allow/deny) - Política de herramientas específica del agente (
agents.list[].tools.allow/deny) - Política del proveedor del agente (
agents.list[].tools.byProvider[provider].allow/deny) - Política de herramientas de sandbox (
tools.sandbox.toolsoagents.list[].tools.sandbox.tools) - Política de herramientas de subagentes (
tools.subagents.tools, si corresponde)
agents.list[].tools.sandbox.tools está establecido, reemplaza tools.sandbox.tools para ese agente.
Si agents.list[].tools.profile está establecido, sobrescribe tools.profile para ese agente.
Las claves de herramientas de proveedor aceptan provider (por ejemplo google-antigravity) o provider/model (por ejemplo openai/gpt-5.4).
Las políticas de herramientas admiten abreviaturas 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 exec elevado para agentes específicos. Consulta Elevated Mode para ver los detalles.
Migración desde un solo agente
Antes (un solo agente):agent.* se migran mediante openclaw doctor; en adelante, prefiere agents.defaults + agents.list.
Ejemplos de restricción de herramientas
Agente de solo lectura
Agente de ejecución segura (sin modificaciones de archivos)
Agente solo de comunicación
sessions_history en este perfil sigue devolviendo una vista de recuperación
acotada y saneada, en lugar de un volcado sin procesar de la transcripción. La recuperación del asistente elimina etiquetas de thinking,
la estructura <relevant-memories>,
las cargas útiles XML de llamadas a herramientas en texto plano
(incluyendo <tool_call>...</tool_call>,
<function_call>...</function_call>, <tool_calls>...</tool_calls>,
<function_calls>...</function_calls> y bloques truncados de llamadas a herramientas),
la estructura degradada de llamadas a herramientas, tokens de control del modelo filtrados en ASCII/ancho completo
y XML malformado de llamadas a herramientas de MiniMax antes de la redacción/truncado.
Error habitual: “non-main”
agents.defaults.sandbox.mode: "non-main" se basa en session.mainKey (predeterminado "main"),
no en el id del agente. Las sesiones de grupo/canal siempre obtienen sus propias claves, por lo que
se tratan como no principales y usarán sandbox. Si quieres que un agente nunca use
sandbox, establece agents.list[].sandbox.mode: "off".
Pruebas
Después de configurar el sandbox y las herramientas multiagente:-
Comprueba la resolución del agente:
-
Verifica los contenedores sandbox:
-
Prueba las restricciones de herramientas:
- Envía un mensaje que requiera herramientas restringidas
- Verifica que el agente no pueda usar herramientas denegadas
-
Supervisa los registros:
Solución de problemas
El agente no usa sandbox a pesar de mode: "all"
- Comprueba si hay un
agents.defaults.sandbox.modeglobal que lo sobrescriba - La configuración específica del agente tiene prioridad, así que establece
agents.list[].sandbox.mode: "all"
Las herramientas siguen disponibles a pesar de la lista de denegación
- Comprueba el orden de filtrado de herramientas: global → agente → sandbox → subagente
- Cada nivel solo puede restringir más, no volver a conceder
- Verifica con los registros:
[tools] filtering tools for agent:${agentId}
El contenedor no está aislado por agente
- Establece
scope: "agent"en la configuración sandbox específica del agente - El valor predeterminado es
"session", que crea un contenedor por sesión
Consulta también
- Sandboxing — referencia completa del sandbox (modos, alcances, backends, imágenes)
- Sandbox vs Tool Policy vs Elevated — depurar “¿por qué está bloqueado esto?”
- Elevated Mode
- Enrutamiento multiagente
- Configuración de sandbox
- Gestión de sesiones