Konfiguration av Multi-Agent Sandbox & Tools
Översikt
Varje agent i en multi-agent-konfiguration kan nu ha sin egen:- Sandbox-konfiguration (
agents.list[].sandboxåsidosätteragents.defaults.sandbox) - Verktygsbegränsningar (
tools.allow/tools.deny, plusagents.list[].tools)
- Personlig assistent med full åtkomst
- Familje-/arbetsagenter med begränsade verktyg
- Publikt exponerade agenter i sandboxes
setupCommand hör hemma under sandbox.docker (globalt eller per agent) och körs en gång
när containern skapas.
Autentisering är per agent: varje agent läser från sitt eget agentDir-autentiseringslager på:
agentDir över agenter.
Om du vill dela krediter, kopiera auth-profiles.json till den andra agentens agentDir.
För hur sandlådan beter sig vid körning, se Sandboxing.
För felsökning “varför är detta blockerat?”, se Sandbox vs Tool Policy vs Elevated och openclaw sandlåda förklara.
Konfigurationsexempel
Exempel 1: Personlig + begränsad familjeagent
main-agent: Körs på värden, full verktygsåtkomstfamily-agent: Körs i Docker (en container per agent), endastread-verktyget
Exempel 2: Arbetsagent med delad sandbox
Exempel 2b: Global kodningsprofil + agent endast för meddelanden
- standardagenter får kodningsverktyg
support-agenten är endast för meddelanden (+ Slack-verktyg)
Exempel 3: Olika sandbox-lägen per agent
Konfigurationsföreträde
När både globala (agents.defaults.*) och agentspecifika (agents.list[].*) konfigurationer finns:
Sandbox-konfiguration
Agentspecifika inställningar åsidosätter globala:agents.list[].sandbox.{docker,browser,prune}.*åsidosätteragents.defaults.sandbox.{docker,browser,prune}.*för den agenten (ignoreras när sandbox-omfattningen löses till"shared").
Verktygsbegränsningar
Filtreringsordningen är:- Verktygsprofil (
tools.profileelleragents.list[].tools.profile) - Leverantörens verktygsprofil (
tools.byProvider[provider].profileelleragents.list[].tools.byProvider[provider].profile) - Global verktygspolicy (
tools.allow/tools.deny) - Leverantörens verktygspolicy (
tools.byProvider[provider].allow/deny) - Agentspecifik verktygspolicy (
agents.list[].tools.allow/deny) - Agentens leverantörspolicy (
agents.list[].tools.byProvider[provider].allow/deny) - Sandbox-verktygspolicy (
tools.sandbox.toolselleragents.list[].tools.sandbox.tools) - Underagentens verktygspolicy (
tools.subagents.tools, om tillämpligt)
agents.list[].tools.sandbox.tools är satt, ersätter det tools.sandbox.tools för den agenten.
Om agents.list[].tools.profile är satt, åsidosätter den tools.profile för den agenten.
Verktygsnycklar för leverantörer accepterar antingen provider (t.ex. google-antigravity) eller provider/model (t.ex. openai/gpt-5.2).
Verktygsgrupper (förkortningar)
Verktygspolicys (globala, agent, sandbox) stödjergroup:*-poster som expanderar till flera konkreta verktyg:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: alla inbyggda OpenClaw-verktyg (exkluderar leverantörsplugins)
Förhöjt läge
tools.elevated är den globala baslinjen (avsändarbaserad allowlist). agents.list[].tools.elevated kan ytterligare begränsa förhöjd för specifika agenter (båda måste tillåta).
Mönster för riskminimering:
- Neka
execför ej betrodda agenter (agents.list[].tools.deny: ["exec"]) - Undvik att tillåtslista avsändare som routar till begränsade agenter
- Inaktivera förhöjt läge globalt (
tools.elevated.enabled: false) om du endast vill ha sandboxad körning - Inaktivera förhöjt läge per agent (
agents.list[].tools.elevated.enabled: false) för känsliga profiler
Migrering från en agent
Före (en agent):agent.*-konfigurationer migreras av openclaw doctor; föredra agents.defaults + agents.list framöver.
Exempel på verktygsbegränsningar
Skrivskyddad agent
Agent för säker körning (inga filändringar)
Agent endast för kommunikation
Vanlig fallgrop: ”non-main”
agents.defaults.sandbox.mode: "non-main" är baserad på session.mainKey (standard "main"),
inte agent-id. Grupp/kanal sessioner får alltid sina egna nycklar, så de
behandlas som icke-huvud och kommer att sandlåda. Om du vill ha en agent att aldrig
sandbox, sätt agents.list[].sandbox.mode: "off".
Testning
Efter att ha konfigurerat multi-agent sandbox och verktyg:-
Kontrollera agentupplösning:
-
Verifiera sandbox-containrar:
-
Testa verktygsbegränsningar:
- Skicka ett meddelande som kräver begränsade verktyg
- Verifiera att agenten inte kan använda nekade verktyg
-
Övervaka loggar:
Felsökning
Agenten är inte sandboxad trots mode: "all"
- Kontrollera om det finns en global
agents.defaults.sandbox.modesom åsidosätter den - Agentspecifik konfiguration har företräde, så sätt
agents.list[].sandbox.mode: "all"
Verktyg fortfarande tillgängliga trots neklista
- Kontrollera filtreringsordningen för verktyg: global → agent → sandbox → underagent
- Varje nivå kan endast ytterligare begränsa, inte återge
- Verifiera med loggar:
[tools] filtering tools for agent:${agentId}
Containern är inte isolerad per agent
- Sätt
scope: "agent"i agentspecifik sandbox-konfiguration - Standard är
"session"som skapar en container per session