Sandbox vs. Tool-Richtlinie vs. Elevated
OpenClaw hat drei verwandte (aber unterschiedliche) Steuerungen:- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) entscheidet, wo Tools ausgeführt werden (Docker vs. 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 ein nur für Exec vorgesehener Escape Hatch, um außerhalb der Sandbox zu laufen, wenn Sie sandboxed sind (gatewaystandardmäßig odernode, wenn das Exec-Ziel entsprechend konfiguriert ist).
Schnelles Debugging
Verwenden Sie den Inspector, um zu sehen, was OpenClaw tatsächlich macht:- effektiver Sandbox-Modus/-Scope/-Workspace-Zugriff
- ob die Sitzung derzeit sandboxed ist (main vs. non-main)
- effektives Sandbox-Tool-Allow/Deny (und ob es von Agent/global/default stammt)
- Elevated-Gates und Fix-it-Schlüsselpfade
Sandbox: wo Tools laufen
Sandboxing wird durchagents.defaults.sandbox.mode gesteuert:
"off": Alles läuft auf dem Host."non-main": Nur non-main-Sitzungen sind sandboxed (häufige „Überraschung“ für Gruppen/Channels)."all": Alles ist sandboxed.
Bind-Mounts (schnelle Sicherheitsprüfung)
docker.bindsdurchdringt das Sandbox-Dateisystem: Was immer Sie mounten, ist im Container mit dem von Ihnen gesetzten Modus sichtbar (:rooder:rw).- Standard ist Lesen/Schreiben, wenn Sie den Modus weglassen; bevorzugen Sie
:rofür Quellcode/Secrets. scope: "shared"ignoriert Bind-Mounts pro Agent (es gelten nur globale Bind-Mounts).- OpenClaw validiert Bind-Quellen zweimal: zuerst auf dem normalisierten Quellpfad und dann erneut nach der Auflösung über den tiefsten vorhandenen Vorfahren. Escape-Versuche über Symlink-Parents umgehen Prüfungen für blockierte Pfade oder erlaubte Roots nicht.
- Nicht existierende Blattpfade werden trotzdem sicher geprüft. Wenn
/workspace/alias-out/new-fileüber einen Symlink-Parent auf einen blockierten Pfad oder außerhalb der konfigurierten erlaubten Roots aufgelöst wird, wird der Bind-Mount abgelehnt. - Das Binden von
/var/run/docker.sockübergibt effektiv Host-Kontrolle an die Sandbox; tun Sie das nur bewusst. - 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/pro-Agent-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, wenn sandboxed):
tools.sandbox.tools.allow/tools.sandbox.tools.denyundagents.list[].tools.sandbox.tools.*
denygewinnt immer.- Wenn
allownicht leer ist, wird alles andere als blockiert behandelt. - Die Tool-Richtlinie ist der harte Stop:
/execkann ein verweigertesexec-Tool nicht überschreiben. /execändert nur Sitzungs-Standardwerte 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).
Tool-Gruppen (Kurzschreibweisen)
Tool-Richtlinien (global, Agent, Sandbox) unterstützengroup:*-Einträge, die zu mehreren Tools erweitert werden:
group:runtime:exec,process,code_execution(bashwird als Alias fürexecakzeptiert)group:fs:read,write,edit,apply_patchgroup: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:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:agents:agents_listgroup:media:image,image_generate,ttsgroup:openclaw: alle integrierten OpenClaw-Tools (ohne Provider-Plugins)
Elevated: nur für Exec vorgesehenes „auf dem Host ausführen“
Elevated gewährt keine zusätzlichen Tools; es betrifft nurexec.
- Wenn Sie sandboxed 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 laufen, ist Elevated effektiv ein No-op (bleibt aber gated).
- Elevated ist nicht skill-scoped und überschreibt Tool-Allow/Deny nicht.
- Elevated gewährt keine beliebigen Cross-Host-Überschreibungen von
host=auto; es folgt den normalen Exec-Zielregeln und bewahrtnodenur dann, wenn das konfigurierte/Sitzungs-Ziel bereitsnodeist. /execist von Elevated getrennt. Es passt nur Exec-Standardwerte pro Sitzung für autorisierte Absender an.
- Aktivierung:
tools.elevated.enabled(und optionalagents.list[].tools.elevated.enabled) - Absender-Allowlists:
tools.elevated.allowFrom.<provider>(und optionalagents.list[].tools.elevated.allowFrom.<provider>)
Häufige Korrekturen für „Sandbox-Gefängnis“
„Tool X durch Sandbox-Tool-Richtlinie blockiert“
Fix-it-Schlüssel (wählen Sie einen):- Sandbox deaktivieren:
agents.defaults.sandbox.mode=off(oder pro Agentagents.list[].sandbox.mode=off) - Das Tool innerhalb der Sandbox erlauben:
- aus
tools.sandbox.tools.denyentfernen (oder pro Agentagents.list[].tools.sandbox.tools.deny) - oder zu
tools.sandbox.tools.allowhinzufügen (oder pro-Agent-Allowlist)
- aus
„Ich dachte, das wäre main, warum ist es sandboxed?“
Im Modus"non-main" sind Gruppen-/Channel-Schlüssel nicht main. Verwenden Sie den main-Sitzungsschlüssel (wird von sandbox explain angezeigt) oder wechseln Sie den Modus zu "off".
Siehe auch
- Sandboxing — vollständige Sandbox-Referenz (Modi, Scopes, Backends, Images)
- Multi-Agent Sandbox & Tools — Überschreibungen pro Agent und Priorität
- Elevated Mode