Ir al contenido

Configuración de Sandbox y Herramientas para Multi-Agentes

Seguro que te ha pasado: empiezas con un agente para todo y de repente te das cuenta de que darle acceso total a tu sistema no es buena idea. Quizás quieres un asistente personal con permisos totales, pero necesitas que el bot que interactúa con tu familia o clientes esté totalmente limitado.

Gestionar estos niveles de seguridad suele ser un dolor de cabeza cuando las configuraciones se mezclan. La mejor solución es separar las responsabilidades: define qué puede tocar cada agente y dónde puede ejecutarse sin comprometer tu máquina local.

  • Directorio agentDir configurado para cada agente.
  • Archivos auth-profiles.json independientes (las credenciales no se comparten).
  • Docker instalado para el aislamiento de procesos.
  • CLI de OpenClaw actualizado.

Configurar un entorno multi-agente con diferentes perfiles de seguridad te llevará menos de 5 minutos. Solo tienes que definir el sandbox y las tools dentro de tu configuración de agentes.

En este ejemplo, el agente main tiene acceso total al host, mientras que el agente family corre dentro de Docker y solo puede leer archivos.

{
"agents": {
"list": [
{
"id": "main",
"default": true,
"name": "Personal Assistant",
"workspace": "~/.openclaw/workspace",
"sandbox": { "mode": "off" }
},
{
"id": "family",
"name": "Family Bot",
"workspace": "~/.openclaw/workspace-family",
"sandbox": {
"mode": "all",
"scope": "agent"
},
"tools": {
"allow": ["read"],
"deny": ["exec", "write", "edit", "apply_patch", "process", "browser"]
}
}
]
},
"bindings": [
{
"agentId": "family",
"match": {
"provider": "whatsapp",
"accountId": "*",
"peer": {
"kind": "group",
"id": "120363424282127706@g.us"
}
}
}
]
}

Si prefieres que varios agentes de una misma categoría compartan un entorno, usa el modo shared.

{
"agents": {
"list": [
{
"id": "personal",
"workspace": "~/.openclaw/workspace-personal",
"sandbox": { "mode": "off" }
},
{
"id": "work",
"workspace": "~/.openclaw/workspace-work",
"sandbox": {
"mode": "all",
"scope": "shared",
"workspaceRoot": "/tmp/work-sandboxes"
},
"tools": {
"allow": ["read", "write", "apply_patch", "exec"],
"deny": ["browser", "gateway", "discord"]
}
}
]
}
}

Cuando defines opciones globales en agents.defaults y opciones específicas en agents.list[], las del agente siempre mandan.

La configuración del agente sobresale sobre la global en este orden:

  1. agents.list[].sandbox.mode > agents.defaults.sandbox.mode
  2. agents.list[].sandbox.scope > agents.defaults.sandbox.scope

Puedes usar atajos para restringir grupos de herramientas rápidamente:

  • group:runtime: incluye exec, bash, process.
  • group:fs: incluye read, write, edit, apply_patch.
  • group:ui: incluye browser, canvas.
  • group:messaging: incluye message.

Una vez configurado, verifica que todo funcione correctamente con estos comandos:

  1. Revisa la resolución de agentes:

    Ventana de terminal
    openclaw agents list --bindings
  2. Verifica los contenedores de Docker:

    Ventana de terminal
    docker ps --filter "name=openclaw-sbx-"
  3. Prueba las restricciones: Envía un mensaje que requiera una herramienta bloqueada y confirma que el agente no puede ejecutarla.

  4. Monitorea los logs:

    Ventana de terminal
    tail -f "${OPENCLAW_STATE_DIR:-$HOME/.openclaw}/logs/gateway.log" | grep -E "routing|sandbox|tools"

El agente no entra en sandbox a pesar de mode: "all"

Sección titulada «El agente no entra en sandbox a pesar de mode: "all"»
  • Revisa si hay un agents.defaults.sandbox.mode global que esté causando conflicto.
  • Asegúrate de que el ID del agente en agents.list[] coincida exactamente con el que estás usando.

Las herramientas siguen disponibles tras usar deny

Sección titulada «Las herramientas siguen disponibles tras usar deny»
  • Verifica el orden de filtrado: Global → Agente → Sandbox → Subagente.
  • Revisa los logs buscando la línea [tools] filtering tools for agent:${agentId} para ver qué política se está aplicando.
  • Configura scope: "agent" en la sección de sandbox del agente.
  • Si usas el valor por defecto "session", se creará un contenedor nuevo por cada sesión de chat.
  • Recuerda que non-main se basa en session.mainKey, no en el ID del agente.
  • Si quieres que un agente nunca use sandbox, pon mode: "off" explícitamente.

AI Setup Assistant

OpenClaw

OpenClaw Expert

Sigues atascado?

Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.