Sandbox vs Tool-Policy vs Elevated
OpenClaw hat drei verwandte, aber unterschiedliche Steuerungsmechanismen:
- Sandbox (
agents.defaults.sandbox.*/agents.list[].sandbox.*) bestimmt, wo Tools ausgefĂźhrt werden (Docker vs Host). - Tool-Policy (
tools.*,tools.sandbox.tools.*,agents.list[].tools.*) bestimmt, welche Tools verfĂźgbar/erlaubt sind. - Elevated (
tools.elevated.*,agents.list[].tools.elevated.*) ist ein Exec-only-Notausgang, um bei aktiver Sandbox trotzdem auf dem Host auszufĂźhren.
Schnelldiagnose
Nutze den Inspector, um zu sehen, was OpenClaw tatsächlich macht:
openclaw sandbox explain
openclaw sandbox explain --session agent:main:main
openclaw sandbox explain --agent work
openclaw sandbox explain --json
Er zeigt:
- Effektiven Sandbox-Modus/Scope/Workspace-Zugriff
- Ob die Session aktuell sandboxed ist (Main vs Nicht-Main)
- Effektive Sandbox-Tool-Allow/Deny-Regeln (und ob sie von Agent/Global/Default stammen)
- Elevated-Gates und Fix-it-SchlĂźsselpfade
Sandbox: wo Tools ausgefĂźhrt werden
Sandboxing wird durch agents.defaults.sandbox.mode gesteuert:
"off": Alles läuft auf dem Host."non-main": Nur Nicht-Main-Sessions werden sandboxed (häufige âĂberraschungâ bei Gruppen/Channels)."all": Alles wird sandboxed.
Siehe Sandboxing fßr die vollständige Matrix (Scope, Workspace-Mounts, Images).
Bind-Mounts (Sicherheits-Schnellcheck)
docker.bindsdurchbricht das Sandbox-Dateisystem: Was du mountest, ist im Container mit dem von dir gesetzten Modus sichtbar (:rooder:rw).- Standard ist Read-Write wenn du den Modus weglässt; bevorzuge
:rofĂźr Quellcode/Secrets. scope: "shared"ignoriert per-Agent-Binds (nur globale Binds gelten).- Das Binden von
/var/run/docker.sockgibt der Sandbox effektiv Host-Kontrolle; mache das nur bewusst. - Workspace-Zugriff (
workspaceAccess: "ro"/"rw") ist unabhängig von Bind-Modi.
Tool-Policy: welche Tools existieren/aufrufbar sind
Zwei Ebenen sind relevant:
- Tool-Profil:
tools.profileundagents.list[].tools.profile(Basis-Allowlist) - Provider-Tool-Profil:
tools.byProvider[provider].profileundagents.list[].tools.byProvider[provider].profile - Globale/per-Agent-Tool-Policy:
tools.allow/tools.denyundagents.list[].tools.allow/agents.list[].tools.deny - Provider-Tool-Policy:
tools.byProvider[provider].allow/denyundagents.list[].tools.byProvider[provider].allow/deny - Sandbox-Tool-Policy (gilt nur bei aktiver 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-Policy ist der Hard-Stop:
/execkann ein deniedexec-Tool nicht ßberschreiben. /execändert nur Session-Defaults fßr autorisierte Sender; es gewährt keinen Tool-Zugriff. Provider-Tool-Keys akzeptieren entwederprovider(z. B.google-antigravity) oderprovider/model(z. B.openai/gpt-5.2).
Tool-Gruppen (Kurzformen)
Tool-Policies (global, Agent, Sandbox) unterstßtzen group:*-Einträge, die zu mehreren Tools expandieren:
{
tools: {
sandbox: {
tools: {
allow: ["group:runtime", "group:fs", "group:sessions", "group:memory"],
},
},
},
}
VerfĂźgbare Gruppen:
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 eingebauten OpenClaw-Tools (ohne Provider-Plugins)
Elevated: Exec-only âauf dem Host ausfĂźhrenâ
Elevated gewährt keine zusätzlichen Tools; es betrifft nur exec.
- In einer Sandbox fĂźhrt
/elevated on(oderexecmitelevated: true) auf dem Host aus (Genehmigungen kĂśnnen weiterhin gelten). - Verwende
/elevated full, um Exec-Genehmigungen fĂźr die Session zu Ăźberspringen. - Wenn du bereits direkt ausfĂźhrst, ist Elevated effektiv ein No-Op (trotzdem gated).
- Elevated ist nicht Skill-bezogen und Ăźberschreibt nicht Tool-Allow/Deny.
/execist separat von Elevated. Es passt nur per-Session-Exec-Defaults fĂźr autorisierte Sender an.
Gates:
- Aktivierung:
tools.elevated.enabled(und optionalagents.list[].tools.elevated.enabled) - Sender-Allowlists:
tools.elevated.allowFrom.<provider>(und optionalagents.list[].tools.elevated.allowFrom.<provider>)
Siehe Elevated-Modus.
Häufige âSandbox-Jailâ-LĂśsungen
âTool X durch Sandbox-Tool-Policy blockiertâ
Fix-it-Schlßssel (wähle einen):
- Sandbox deaktivieren:
agents.defaults.sandbox.mode=off(oder per-Agentagents.list[].sandbox.mode=off) - Tool innerhalb der Sandbox erlauben:
- Entferne es aus
tools.sandbox.tools.deny(oder per-Agentagents.list[].tools.sandbox.tools.deny) - oder fĂźge es zu
tools.sandbox.tools.allowhinzu (oder per-Agent allow)
- Entferne es aus
âIch dachte, das wäre Main, warum wird es sandboxed?â
Im "non-main"-Modus sind Gruppen-/Channel-Keys nicht Main. Verwende den Main-Session-Key (angezeigt von sandbox explain) oder wechsle den Modus auf "off".