Configuratie van Multi-Agent Sandbox & Tools
Overzicht
Elke agent in een multi-agent-opzet kan nu zijn eigen:- Sandboxconfiguratie (
agents.list[].sandboxoverschrijftagents.defaults.sandbox) - Toolbeperkingen (
tools.allow/tools.deny, plusagents.list[].tools)
- Persoonlijke assistent met volledige toegang
- Familie-/werkagents met beperkte tools
- Publiek toegankelijke agents in sandboxes
setupCommand hoort onder sandbox.docker (globaal of per agent) en wordt één keer uitgevoerd
wanneer de container wordt aangemaakt.
Authenticatie is per agent: elke agent leest uit zijn eigen agentDir-auth store op:
agentDir nooit tussen agents.
Als je credentials wilt delen, kopieer auth-profiles.json naar de agentDir van de andere agent.
Voor hoe sandboxing zich tijdens runtime gedraagt, zie Sandboxing.
Voor het debuggen van “waarom is dit geblokkeerd?”, zie Sandbox vs Tool Policy vs Elevated en openclaw sandbox explain.
Configuratievoorbeelden
Voorbeeld 1: Persoonlijke + Beperkte familie-agent
main-agent: Draait op de host, volledige tooltoegangfamily-agent: Draait in Docker (één container per agent), alleen deread-tool
Voorbeeld 2: Werkagent met gedeelde sandbox
Voorbeeld 2b: Globaal codeerprofiel + alleen-berichten-agent
- standaard agents krijgen codeertools
support-agent is alleen voor berichten (+ Slack-tool)
Voorbeeld 3: Verschillende sandboxmodi per agent
Configuratieprioriteit
Wanneer zowel globale (agents.defaults.*) als agentspecifieke (agents.list[].*) configuraties bestaan:
Sandboxconfiguratie
Agentspecifieke instellingen overschrijven globale:agents.list[].sandbox.{docker,browser,prune}.*overschrijftagents.defaults.sandbox.{docker,browser,prune}.*voor die agent (genegeerd wanneer de sandboxscope wordt opgelost naar"shared").
Toolbeperkingen
De filtervolgorde is:- Toolprofiel (
tools.profileofagents.list[].tools.profile) - Provider-toolprofiel (
tools.byProvider[provider].profileofagents.list[].tools.byProvider[provider].profile) - Globaal toolbeleid (
tools.allow/tools.deny) - Provider-toolbeleid (
tools.byProvider[provider].allow/deny) - Agentspecifiek toolbeleid (
agents.list[].tools.allow/deny) - Agent-providerbeleid (
agents.list[].tools.byProvider[provider].allow/deny) - Sandbox-toolbeleid (
tools.sandbox.toolsofagents.list[].tools.sandbox.tools) - Subagent-toolbeleid (
tools.subagents.tools, indien van toepassing)
agents.list[].tools.sandbox.tools is ingesteld, vervangt dit tools.sandbox.tools voor die agent.
Als agents.list[].tools.profile is ingesteld, overschrijft dit tools.profile voor die agent.
Provider-tool-sleutels accepteren zowel provider (bijv. google-antigravity) als provider/model (bijv. openai/gpt-5.2).
Toolgroepen (verkorte notaties)
Toolbeleiden (globaal, agent, sandbox) ondersteunengroup:*-items die uitbreiden naar meerdere concrete tools:
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: alle ingebouwde OpenClaw-tools (sluit provider-plugins uit)
Elevated-modus
tools.elevated is de globale basislijn (afzendergebaseerde toegestane lijst). agents.list[].tools.elevated kan elevated verder beperken voor specifieke agents (beide moeten toestaan).
Mitigatiepatronen:
- Weiger
execvoor niet-vertrouwde agents (agents.list[].tools.deny: ["exec"]) - Vermijd het toestaan van afzenders die naar beperkte agents routeren
- Schakel elevated globaal uit (
tools.elevated.enabled: false) als je alleen gesandboxte uitvoering wilt - Schakel elevated per agent uit (
agents.list[].tools.elevated.enabled: false) voor gevoelige profielen
Migratie vanaf één agent
Voor (één agent):agent.*-configuraties worden gemigreerd door openclaw doctor; geef voortaan de voorkeur aan agents.defaults + agents.list.
Voorbeelden van toolbeperkingen
Alleen-lezen-agent
Veilige uitvoeringsagent (geen bestandswijzigingen)
Alleen-communicatie-agent
Veelvoorkomende valkuil: “non-main”
agents.defaults.sandbox.mode: "non-main" is gebaseerd op session.mainKey (standaard "main"),
niet op de agent-id. Groeps-/kanaalsessies krijgen altijd hun eigen sleutels, dus
worden ze behandeld als non-main en gesandboxed. Als je wilt dat een agent nooit
gesandboxed wordt, stel dan agents.list[].sandbox.mode: "off" in.
Testen
Na het configureren van multi-agent sandbox en tools:-
Controleer agent-resolutie:
-
Verifieer sandboxcontainers:
-
Test toolbeperkingen:
- Stuur een bericht dat beperkte tools vereist
- Verifieer dat de agent geweigerde tools niet kan gebruiken
-
Monitor logs:
Problemen oplossen
Agent niet gesandboxed ondanks mode: "all"
- Controleer of er een globale
agents.defaults.sandbox.modeis die dit overschrijft - Agentspecifieke configuratie heeft voorrang, dus stel
agents.list[].sandbox.mode: "all"in
Tools nog steeds beschikbaar ondanks weigerlijst
- Controleer de filtervolgorde van tools: globaal → agent → sandbox → subagent
- Elk niveau kan alleen verder beperken, niet terug toestaan
- Verifieer met logs:
[tools] filtering tools for agent:${agentId}
Container niet per agent geïsoleerd
- Stel
scope: "agent"in de agentspecifieke sandboxconfiguratie in - Standaard is
"session", wat één container per sessie aanmaakt