Gateway
Sandbox vs. Tool-Richtlinie vs. erhöhte Berechtigungen
OpenClaw hat drei verwandte (aber unterschiedliche) Steuerungen:
- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) entscheidet, wo Tools ausgeführt werden (Sandbox-Backend oder Host). - Tool-Richtlinie (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) entscheidet, welche Tools verfügbar/erlaubt sind. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) ist eine nur für exec gedachte Ausweichmöglichkeit, um außerhalb der Sandbox auszuführen, wenn Sie in einer Sandbox sind (standardmäßiggateway, odernode, wenn das exec-Ziel aufnodekonfiguriert ist).
Schnelles Debugging
Verwenden Sie den Inspector, um zu sehen, was OpenClaw tatsächlich tut:
openclaw sandbox explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw sandbox explain --jsonEr gibt Folgendes aus:
- effektiver Sandbox-Modus/-Scope und Workspace-Zugriff
- ob die Sitzung aktuell in einer Sandbox läuft (main vs. nicht-main)
- effektive Sandbox-Tool-Erlaubnis/-Ablehnung (und ob sie von Agent/global/default stammt)
- Elevated-Gates und Fix-it-Schlüsselpfade
Sandbox: wo Tools ausgeführt werden
Sandboxing wird über agents.defaults.sandbox.mode gesteuert:
"off": Alles läuft auf dem Host."non-main": Nur nicht-main-Sitzungen laufen in einer Sandbox (häufige „Überraschung“ für Gruppen/Kanäle)."all": Alles läuft in einer Sandbox.
Die vollständige Matrix (Scope, Workspace-Mounts, Images) finden Sie unter Sandboxing.
Bind-Mounts (schneller Sicherheitscheck)
docker.bindsdurchdringt das Sandbox-Dateisystem: Alles, was Sie mounten, ist im Container mit dem von Ihnen gesetzten Modus sichtbar (:rooder:rw).- Standard ist Lese-/Schreibzugriff, wenn Sie den Modus weglassen; bevorzugen Sie
:rofür Source/Secrets. scope: "shared"ignoriert agentenspezifische Binds (nur globale Binds gelten).- OpenClaw validiert Bind-Quellen zweimal: zuerst auf dem normalisierten Quellpfad, dann erneut nach der Auflösung über den tiefsten existierenden Vorfahren. Symlink-Parent-Escapes umgehen keine Prüfungen für blockierte Pfade oder erlaubte Roots.
- Nicht vorhandene Leaf-Pfade werden weiterhin sicher geprüft. Wenn
/workspace/alias-out/new-fileüber einen verlinkten Parent zu einem blockierten Pfad oder außerhalb der konfigurierten erlaubten Roots aufgelöst wird, wird der Bind abgelehnt. - Das Binden von
/var/run/docker.sockübergibt der Sandbox effektiv die Kontrolle über den Host; tun Sie dies nur absichtlich. - Workspace-Zugriff (
workspaceAccess: "ro"/"rw") ist unabhängig von Bind-Modi.
Tool-Richtlinie: welche Tools existieren/aufrufbar sind
Zwei Ebenen sind wichtig:
- Tool-Profil:
tools.profileundagents.list[].tools.profile(Basis-Allowlist) - Provider-Tool-Profil:
tools.byProvider[provider].profileundagents.list[].tools.byProvider[provider].profile - Globale/agentenspezifische Tool-Richtlinie:
tools.allow/tools.denyundagents.list[].tools.allow/agents.list[].tools.deny - Provider-Tool-Richtlinie:
tools.byProvider[provider].allow/denyundagents.list[].tools.byProvider[provider].allow/deny - Sandbox-Tool-Richtlinie (gilt nur in einer Sandbox):
tools.sandbox.tools.allow/tools.sandbox.tools.denyundagents.list[].tools.sandbox.tools.*
Faustregeln:
denygewinnt immer.- Wenn
allownicht leer ist, wird alles andere als blockiert behandelt. - Die Tool-Richtlinie ist die harte Grenze:
/execkann ein abgelehntesexec-Tool nicht überschreiben. - Die Tool-Richtlinie filtert die Tool-Verfügbarkeit nach Name; sie prüft keine Nebenwirkungen innerhalb von
exec. Wennexecerlaubt ist, macht das Ablehnen vonwrite,editoderapply_patchShell-Befehle nicht schreibgeschützt. /execändert nur Sitzungsstandards für autorisierte Absender; es gewährt keinen Tool-Zugriff. Provider-Tool-Schlüssel akzeptieren entwederprovider(z. B.google-antigravity) oderprovider/model(z. B.openai/gpt-5.4).- Gateway-Logs enthalten
agents/tool-policy-Audit-Einträge, wenn ein Schritt der Tool-Richtlinie Tools entfernt oder eine Sandbox-Tool-Richtlinie einen Aufruf blockiert. Verwenden Sieopenclaw logs, um das Regel-Label, den Konfigurationsschlüssel und die betroffenen Tool-Namen zu sehen.
Tool-Gruppen (Kurzformen)
Tool-Richtlinien (global, Agent, Sandbox) unterstützen group:*-Einträge, die zu mehreren Tools erweitert werden:
{ tools: { sandbox: { tools: { allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"], }, }, },}Verfügbare Gruppen:
group:runtime:exec,process,code_execution(bashwird als Alias fürexecakzeptiert)group:fs:read,write,edit,apply_patchFür schreibgeschützte Agenten lehnen Siegroup:runtimesowie mutierende Dateisystem-Tools ab, sofern die Sandbox-Dateisystemrichtlinie oder eine separate Host-Grenze die Schreibschutzbeschränkung nicht erzwingt.group:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,sessions_yield,subagents,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,x_search,web_fetchgroup:ui:browser,canvasgroup:automation:heartbeat_respond,cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_list,update_plangroup:media:image,image_generate,music_generate,video_generate,ttsgroup:openclaw: alle integrierten OpenClaw-Tools (ohne Provider-Plugins)group:plugins: alle geladenen Plugin-eigenen Tools, einschließlich konfigurierter MCP-Server, die überbundle-mcpverfügbar gemacht werden
Für MCP-Server in einer Sandbox ist die Sandbox-Tool-Richtlinie ein zweites Allow-Gate. Wenn mcp.servers konfiguriert ist, aber Sandbox-Turns nur integrierte Tools anzeigen, fügen Sie bundle-mcp, group:plugins oder einen serverpräfixierten MCP-Tool-Namen/-Glob wie outlook__send_mail oder outlook__* zu tools.sandbox.tools.alsoAllow hinzu, starten/laden Sie dann den Gateway neu und erfassen Sie die Tool-Liste erneut. Server-Globs verwenden den Provider-sicheren MCP-Server-Präfix: Nicht-[A-Za-z0-9_-]-Zeichen werden zu -, Namen, die nicht mit einem Buchstaben beginnen, erhalten ein mcp--Präfix, und lange oder doppelte Präfixe können gekürzt oder mit einem Suffix versehen werden.
openclaw doctor prüft diese Form aktuell für von OpenClaw verwaltete Server in mcp.servers. MCP-Server, die aus gebündelten Plugin-Manifesten oder Claude .mcp.json geladen werden, verwenden dasselbe Sandbox-Gate, aber diese Diagnose listet diese Quellen noch nicht auf; verwenden Sie dieselben Allowlist-Einträge, wenn deren Tools in Sandbox-Turns verschwinden.
Elevated: nur exec „auf dem Host ausführen“
Elevated gewährt keine zusätzlichen Tools; es wirkt sich nur auf exec aus.
- Wenn Sie in einer Sandbox sind, führt
/elevated on(oderexecmitelevated: true) außerhalb der Sandbox aus (Genehmigungen können weiterhin gelten). - Verwenden Sie
/elevated full, um exec-Genehmigungen für die Sitzung zu überspringen. - Wenn Sie bereits direkt ausführen, ist Elevated effektiv ein No-op (weiterhin gegated).
- Elevated ist nicht Skill-scoped und überschreibt keine Tool-Erlaubnis/-Ablehnung.
- Elevated gewährt keine beliebigen hostübergreifenden Overrides von
host=auto; es folgt den normalen exec-Zielregeln und bewahrtnodenur, wenn das konfigurierte/Sitzungsziel bereitsnodeist. /execist von Elevated getrennt. Es passt nur agentenspezifische exec-Standards für autorisierte Absender an.
Gates:
- Aktivierung:
tools.elevated.enabled(und optionalagents.list[].tools.elevated.enabled) - Absender-Allowlists:
tools.elevated.allowFrom.<provider>(und optionalagents.list[].tools.elevated.allowFrom.<provider>)
Siehe Elevated Mode.
Häufige „Sandbox-Gefängnis“-Korrekturen
„Tool X blocked by sandbox tool policy“
Fix-it-Schlüssel (wählen Sie einen):
- Sandbox deaktivieren:
agents.defaults.sandbox.mode=off(oder agentenspezifischagents.list[].sandbox.mode=off) - Tool innerhalb der Sandbox erlauben:
- entfernen Sie es aus
tools.sandbox.tools.deny(oder agentenspezifischagents.list[].tools.sandbox.tools.deny) - oder fügen Sie es zu
tools.sandbox.tools.allowhinzu (oder agentenspezifische Erlaubnis)
- entfernen Sie es aus
- Prüfen Sie
openclaw logsauf den Eintragagents/tool-policy. Er zeichnet den Sandbox-Modus auf und ob die Allow- oder Deny-Regel das Tool blockiert hat.
„Ich dachte, dies sei main, warum läuft es in einer Sandbox?“
Im Modus "non-main" sind Gruppen-/Kanalschlüssel nicht main. Verwenden Sie den main-Sitzungsschlüssel (angezeigt von sandbox explain) oder wechseln Sie den Modus zu "off".
Verwandt
- Sandboxing -- vollständige Sandbox-Referenz (Modi, Scopes, Backends, Images)
- Multi-Agent Sandbox & Tools -- agentenspezifische Overrides und Rangfolge
- Elevated Mode