Multi-Agent-Sandbox- & Werkzeugkonfiguration
Überblick
Jeder Agent in einer Multi-Agent-Konfiguration kann nun über Folgendes verfügen:- Sandbox-Konfiguration (
agents.list[].sandboxüberschreibtagents.defaults.sandbox) - Werkzeugeinschränkungen (
tools.allow/tools.deny, plusagents.list[].tools)
- Persönlicher Assistent mit vollem Zugriff
- Familien-/Arbeitsagenten mit eingeschränkten Werkzeugen
- Öffentlich zugängliche Agenten in Sandboxes
setupCommand gehört unter sandbox.docker (global oder pro Agent) und wird einmal ausgeführt,
wenn der Container erstellt wird.
Authentifizierung ist pro Agent: Jeder Agent liest aus seinem eigenen agentDir-Auth-Store unter:
agentDir niemals für mehrere Agenten erneut.
Wenn Sie Anmeldedaten teilen möchten, kopieren Sie auth-profiles.json in den agentDir des anderen Agenten.
Wie sich Sandboxing zur Laufzeit verhält, siehe Sandboxing.
Zum Debuggen von „Warum ist das blockiert?“ siehe Sandbox vs Tool Policy vs Elevated und openclaw sandbox explain.
Konfigurationsbeispiele
Beispiel 1: Persönlicher + eingeschränkter Familienagent
main-Agent: Läuft auf dem Host, voller Werkzeugzugrifffamily-Agent: Läuft in Docker (ein Container pro Agent), nur das Werkzeugread
Beispiel 2: Arbeitsagent mit geteilter Sandbox
Beispiel 2b: Globales Coding-Profil + reiner Messaging-Agent
- Standardagenten erhalten Coding-Werkzeuge
support-Agent ist nur für Messaging (+ Slack-Werkzeug)
Beispiel 3: Unterschiedliche Sandbox-Modi pro Agent
Konfigurationspriorität
Wenn sowohl globale (agents.defaults.*) als auch agentenspezifische (agents.list[].*) Konfigurationen vorhanden sind:
Sandbox-Konfiguration
Agentenspezifische Einstellungen überschreiben globale:agents.list[].sandbox.{docker,browser,prune}.*überschreibtagents.defaults.sandbox.{docker,browser,prune}.*für diesen Agenten (ignoriert, wenn der Sandbox-Umfang zu"shared"aufgelöst wird).
Werkzeugeinschränkungen
Die Filterreihenfolge ist:- Werkzeugprofil (
tools.profileoderagents.list[].tools.profile) - Anbieter-Werkzeugprofil (
tools.byProvider[provider].profileoderagents.list[].tools.byProvider[provider].profile) - Globale Werkzeugrichtlinie (
tools.allow/tools.deny) - Anbieter-Werkzeugrichtlinie (
tools.byProvider[provider].allow/deny) - Agentenspezifische Werkzeugrichtlinie (
agents.list[].tools.allow/deny) - Agenten-Anbieter-Richtlinie (
agents.list[].tools.byProvider[provider].allow/deny) - Sandbox-Werkzeugrichtlinie (
tools.sandbox.toolsoderagents.list[].tools.sandbox.tools) - Subagenten-Werkzeugrichtlinie (
tools.subagents.tools, falls zutreffend)
agents.list[].tools.sandbox.tools gesetzt ist, ersetzt es tools.sandbox.tools für diesen Agenten.
Wenn agents.list[].tools.profile gesetzt ist, überschreibt es tools.profile für diesen Agenten.
Anbieter-Werkzeugschlüssel akzeptieren entweder provider (z. B. google-antigravity) oder provider/model (z. B. openai/gpt-5.2).
Werkzeuggruppen (Kurzformen)
Werkzeugrichtlinien (global, Agent, Sandbox) unterstützengroup:*-Einträge, die zu mehreren konkreten Werkzeugen erweitert werden:
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 integrierten OpenClaw-Werkzeuge (schließt Anbieter-Plugins aus)
Elevated Mode
tools.elevated ist die globale Basislinie (senderbasierte Allowlist). agents.list[].tools.elevated kann Elevated für bestimmte Agenten weiter einschränken (beide müssen erlauben).
Klimaschutzmuster:
- Verweigern Sie
execfür nicht vertrauenswürdige Agenten (agents.list[].tools.deny: ["exec"]) - Vermeiden Sie das Allowlisting von Absendern, die zu eingeschränkten Agenten routen
- Deaktivieren Sie Elevated global (
tools.elevated.enabled: false), wenn Sie nur sandboxed Ausführung wünschen - Deaktivieren Sie Elevated pro Agent (
agents.list[].tools.elevated.enabled: false) für sensible Profile
Migration von Single Agent
Vorher (Single Agent):agent.*-Konfigurationen werden durch openclaw doctor migriert; bevorzugen Sie künftig agents.defaults + agents.list.
Beispiele für Werkzeugeinschränkungen
Nur-Lese-Agent
Agent für sichere Ausführung (keine Dateimodifikationen)
Kommunikationsagent
Häufige Stolperfalle: „non-main“
agents.defaults.sandbox.mode: "non-main" basiert auf session.mainKey (Standard "main"),
nicht auf der Agenten-ID. Gruppen-/Kanal-Sitzungen erhalten immer eigene Schlüssel,
werden daher als non-main behandelt und sandboxed. Wenn ein Agent niemals
sandboxed werden soll, setzen Sie agents.list[].sandbox.mode: "off".
Tests
Nach der Konfiguration von Multi-Agent-Sandbox und Werkzeugen:-
Agentenauflösung prüfen:
-
Sandbox-Container überprüfen:
-
Werkzeugeinschränkungen testen:
- Senden Sie eine Nachricht, die eingeschränkte Werkzeuge erfordert
- Verifizieren Sie, dass der Agent verweigerte Werkzeuge nicht verwenden kann
-
Logs überwachen:
Fehlerbehebung
Agent nicht sandboxed trotz mode: "all"
- Prüfen Sie, ob es eine globale
agents.defaults.sandbox.modegibt, die dies überschreibt - Agentenspezifische Konfiguration hat Vorrang; setzen Sie daher
agents.list[].sandbox.mode: "all"
Werkzeuge weiterhin verfügbar trotz Deny-Liste
- Prüfen Sie die Filterreihenfolge der Werkzeuge: global → Agent → Sandbox → Subagent
- Jede Ebene kann nur weiter einschränken, nicht wieder freigeben
- Verifizieren Sie dies mit Logs:
[tools] filtering tools for agent:${agentId}
Container nicht pro Agent isoliert
- Setzen Sie
scope: "agent"in der agentenspezifischen Sandbox-Konfiguration - Standard ist
"session", was einen Container pro Sitzung erstellt