Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Cada agente en una configuración multiagente puede anular la política global de sandbox y herramientas. Esta página cubre la configuración por agente, las reglas de precedencia y ejemplos.

Aislamiento en sandbox

Backends y modos: referencia completa del sandbox.

Sandbox frente a política de herramientas frente a elevado

Depurar “¿por qué está bloqueado esto?”

Modo elevado

Ejecución elevada para remitentes de confianza.
La autenticación tiene ámbito por agente: cada agente tiene su propio almacén de autenticación agentDir en ~/.openclaw/agents/<agentId>/agent/auth-profiles.json. Nunca reutilices agentDir entre agentes. Los agentes pueden leer los perfiles de autenticación del agente predeterminado/principal cuando no tienen un perfil local, pero los tokens de actualización de OAuth no se clonan en los almacenes de agentes secundarios. Si copias credenciales manualmente, copia solo perfiles api_key o token estáticos y portables.

Ejemplos de configuración

{
  "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", "message"],
          "deny": ["exec", "write", "edit", "apply_patch", "process", "browser"],
          "message": {
            "crossContext": {
              "allowWithinProvider": false,
              "allowAcrossProviders": false
            }
          }
        }
      }
    ]
  },
  "bindings": [
    {
      "agentId": "family",
      "match": {
        "provider": "whatsapp",
        "accountId": "*",
        "peer": {
          "kind": "group",
          "id": "120363424282127706@g.us"
        }
      }
    }
  ]
}
Resultado:
  • Agente main: se ejecuta en el host, con acceso completo a herramientas.
  • Agente family: se ejecuta en Docker (un contenedor por agente), solo read y envíos de mensajes de la conversación actual.
{
  "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"]
        }
      }
    ]
  }
}
{
  "tools": { "profile": "coding" },
  "agents": {
    "list": [
      {
        "id": "support",
        "tools": { "profile": "messaging", "allow": ["slack"] }
      }
    ]
  }
}
Resultado:
  • los agentes predeterminados obtienen herramientas de programación.
  • el agente support es solo de mensajería (+ herramienta de Slack).
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "scope": "session"
      }
    },
    "list": [
      {
        "id": "main",
        "workspace": "~/.openclaw/workspace",
        "sandbox": {
          "mode": "off"
        }
      },
      {
        "id": "public",
        "workspace": "~/.openclaw/workspace-public",
        "sandbox": {
          "mode": "all",
          "scope": "agent"
        },
        "tools": {
          "allow": ["read"],
          "deny": ["exec", "write", "edit", "apply_patch"]
        }
      }
    ]
  }
}

Precedencia de configuración

Cuando existen configuraciones globales (agents.defaults.*) y específicas del agente (agents.list[].*):

Configuración del sandbox

Las opciones específicas del agente anulan las globales:
agents.list[].sandbox.mode > agents.defaults.sandbox.mode
agents.list[].sandbox.scope > agents.defaults.sandbox.scope
agents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRoot
agents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccess
agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*
agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*
agents.list[].sandbox.{docker,browser,prune}.* anula agents.defaults.sandbox.{docker,browser,prune}.* para ese agente (se ignora cuando el ámbito del sandbox se resuelve como "shared").

Restricciones de herramientas

El orden de filtrado es:
1

Perfil de herramientas

tools.profile o agents.list[].tools.profile.
2

Perfil de herramientas del proveedor

tools.byProvider[provider].profile o agents.list[].tools.byProvider[provider].profile.
3

Política global de herramientas

tools.allow / tools.deny.
4

Política de herramientas del proveedor

tools.byProvider[provider].allow/deny.
5

Política de herramientas específica del agente

agents.list[].tools.allow/deny.
6

Política de proveedor del agente

agents.list[].tools.byProvider[provider].allow/deny.
7

Política de herramientas del sandbox

tools.sandbox.tools o agents.list[].tools.sandbox.tools.
8

Política de herramientas de subagente

tools.subagents.tools, si corresponde.
  • Cada nivel puede restringir más las herramientas, pero no puede volver a conceder herramientas denegadas en niveles anteriores.
  • Si agents.list[].tools.sandbox.tools está definido, reemplaza tools.sandbox.tools para ese agente.
  • Si agents.list[].tools.profile está definido, anula 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).
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 intencional: un agente configurado con una herramienta faltante como agents.list[].tools.allow: ["query_db"] debe fallar de forma evidente hasta que se habilite el plugin que registra query_db, no continuar como agente solo de texto.
Las políticas de herramientas admiten abreviaturas group:* que se expanden a varias herramientas. Consulta Grupos de herramientas para ver la lista completa. Las anulaciones elevadas por agente (agents.list[].tools.elevated) pueden restringir aún más la ejecución elevada para agentes específicos. Consulta Modo elevado para obtener más detalles.

Migración desde un agente único

{
  "agents": {
    "defaults": {
      "workspace": "~/.openclaw/workspace",
      "sandbox": {
        "mode": "non-main"
      }
    }
  },
  "tools": {
    "sandbox": {
      "tools": {
        "allow": ["read", "write", "apply_patch", "exec"],
        "deny": []
      }
    }
  }
}
Las configuraciones heredadas agent.* se migran con openclaw doctor; de ahora en adelante, prefiera agents.defaults + agents.list.

Ejemplos de restricción de herramientas

{
  "tools": {
    "allow": ["read"],
    "deny": ["exec", "write", "edit", "apply_patch", "process"]
  }
}

Error común: “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 se ejecutarán en sandbox. Si quiere que un agente nunca use sandbox, establezca agents.list[].sandbox.mode: "off".

Pruebas

Después de configurar el sandbox y las herramientas multiagente:
1

Comprobar la resolución de agentes

openclaw agents list --bindings
2

Verificar los contenedores de sandbox

docker ps --filter "name=openclaw-sbx-"
3

Probar las restricciones de herramientas

  • Envíe un mensaje que requiera herramientas restringidas.
  • Verifique que el agente no pueda usar herramientas denegadas.
4

Supervisar registros

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

Solución de problemas

  • Compruebe si hay un agents.defaults.sandbox.mode global que lo sobrescriba.
  • La configuración específica del agente tiene prioridad, así que establezca agents.list[].sandbox.mode: "all".
  • Compruebe el orden de filtrado de herramientas: global → agente → sandbox → subagente.
  • Cada nivel solo puede restringir más, no volver a conceder.
  • Verifique con los registros: [tools] filtering tools for agent:${agentId}.
  • Establezca scope: "agent" en la configuración de sandbox específica del agente.
  • El valor predeterminado es "session", que crea un contenedor por sesión.

Relacionado