Exec-Werkzeug
Führt Shell-Befehle im Workspace aus. Unterstützt Vordergrund- und Hintergrundausführung überprocess.
Wenn process nicht erlaubt ist, läuft exec synchron und ignoriert yieldMs/background.
Hintergrundsitzungen sind pro Agent begrenzt; process sieht nur Sitzungen desselben Agenten.
Parameter
command(erforderlich)workdir(Standard: cwd)env(Key/Value-Overrides)yieldMs(Standard 10000): automatisches Hintergrundsetzen nach Verzögerungbackground(bool): sofort im Hintergrund ausführentimeout(Sekunden, Standard 1800): Beenden bei Ablaufpty(bool): in einem Pseudo-Terminal ausführen, wenn verfügbar (nur-TTY-CLIs, Coding-Agents, Terminal-UIs)host(sandbox | gateway | node): Ausführungsortsecurity(deny | allowlist | full): Durchsetzungsmodus fürgateway/nodeask(off | on-miss | always): Genehmigungsabfragen fürgateway/nodenode(String): Node-ID/-Name fürhost=nodeelevated(bool): erhöhten Modus anfordern (Gateway-Host);security=fullwird nur erzwungen, wenn „elevated“ zufullauflöst
hostist standardmäßigsandbox.elevatedwird ignoriert, wenn sandboxing deaktiviert ist (exec läuft bereits auf dem Host).- Genehmigungen für
gateway/nodewerden durch~/.openclaw/exec-approvals.jsongesteuert. nodeerfordert einen gekoppelten Node (Companion-App oder Headless-Node-Host).- Wenn mehrere Nodes verfügbar sind, setzen Sie
exec.nodeodertools.exec.node, um einen auszuwählen. - Auf Nicht-Windows-Hosts verwendet exec
SHELL, wenn gesetzt; istSHELLfish, wirdbash(odersh) ausPATHbevorzugt, um fish-inkompatible Skripte zu vermeiden; andernfalls erfolgt der Fallback aufSHELL, falls keines existiert. - Host-Ausführung (
gateway/node) lehntenv.PATHund Loader-Overrides (LD_*/DYLD_*) ab, um Binary-Hijacking oder injizierten Code zu verhindern. - Wichtig: sandboxing ist standardmäßig deaktiviert. Ist sandboxing aus, wird
host=sandboxdirekt auf dem Gateway-Host (ohne Container) ausgeführt und erfordert keine Genehmigungen. Um Genehmigungen zu erzwingen, führen Sie mithost=gatewayaus und konfigurieren Sie Exec-Genehmigungen (oder aktivieren Sie sandboxing).
Konfiguration
tools.exec.notifyOnExit(Standard: true): Wenn true, stellen im Hintergrund ausgeführte Exec-Sitzungen ein Systemereignis in die Warteschlange und fordern beim Beenden einen Heartbeat an.tools.exec.approvalRunningNoticeMs(Standard: 10000): Gibt eine einzelne „running“-Meldung aus, wenn eine genehmigungspflichtige Exec-Ausführung länger als dieser Wert läuft (0 deaktiviert).tools.exec.host(Standard:sandbox)tools.exec.security(Standard:denyfür sandbox,allowlistfür Gateway + Node, wenn nicht gesetzt)tools.exec.ask(Standard:on-miss)tools.exec.node(Standard: nicht gesetzt)tools.exec.pathPrepend: Liste von Verzeichnissen, die für Exec-Läufe vorPATHvorangestellt werden.tools.exec.safeBins: Nur-stdin-sichere Binaries, die ohne explizite Allowlist-Einträge ausgeführt werden können.
PATH-Verarbeitung
host=gateway: Führt Ihr Login-Shell-PATHin die Exec-Umgebung zusammen.env.PATH-Overrides werden für Host-Ausführung abgelehnt. Der Daemon selbst läuft weiterhin mit einem minimalenPATH:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: Führtsh -lc(Login-Shell) innerhalb des Containers aus, sodass/etc/profilePATHzurücksetzen kann. OpenClaw stelltenv.PATHnach dem Sourcing der Profile über eine interne Umgebungsvariable voran (keine Shell-Interpolation);tools.exec.pathPrependgilt hier ebenfalls.host=node: Es werden nur nicht blockierte Env-Overrides, die Sie übergeben, an den Node gesendet.env.PATH-Overrides werden für Host-Ausführung abgelehnt. Wenn du zusätzliche PATH-Einträge auf einem Node benötigst, konfiguriere die Umgebung des Node-Host-Services (systemd/launchd) oder installiere Tools an Standardorten.
Sitzungs-Overrides (/exec)
Verwenden Sie /exec, um pro Sitzung Standardwerte für host, security, ask und node festzulegen.
Senden Sie /exec ohne Argumente, um die aktuellen Werte anzuzeigen.
Beispiel:
Autorisierungsmodell
/exec wird nur für autorisierte Absender berücksichtigt (Kanal-Allowlists/Kopplung plus commands.useAccessGroups).
Es aktualisiert nur den Sitzungszustand und schreibt keine Konfiguration. Um Exec hart zu deaktivieren, untersagen Sie es über die Tool-
Richtlinie (tools.deny: ["exec"] oder pro Agent). Host-Genehmigungen gelten weiterhin, sofern Sie nicht explizit
security=full und ask=off setzen.
Exec-Genehmigungen (Companion-App / Node-Host)
Sandboxed Agents können vor jeder Anfrage eine Genehmigung verlangen, bevorexec auf dem Gateway- oder Node-Host ausgeführt wird.
Siehe Exec approvals für Richtlinie, Allowlist und UI-Ablauf.
Wenn Genehmigungen erforderlich sind, gibt das Exec-Werkzeug sofort mit
status: "approval-pending" und einer Genehmigungs-ID zurück. Nach Genehmigung (oder Ablehnung / Zeitüberschreitung)
sendet das Gateway Systemereignisse (Exec finished / Exec denied). Läuft der Befehl nach
tools.exec.approvalRunningNoticeMs noch, wird eine einzelne Exec running-Meldung ausgegeben.
Allowlist + sichere Binaries
Die Allowlist-Durchsetzung gleicht nur aufgelöste Binary-Pfade ab (keine Basename-Abgleiche). Wennsecurity=allowlist, sind Shell-Befehle nur dann automatisch erlaubt, wenn jedes Pipeline-Segment
allowlisted ist oder ein sicheres Binary darstellt. Verkettungen (;, &&, ||) und Umleitungen werden im
Allowlist-Modus abgelehnt, es sei denn, jedes Top-Level-Segment erfüllt die Allowlist (einschließlich Safe Bins).
Umleitungen werden weiterhin nicht unterstützt.
Beispiele
Vordergrund:apply_patch (experimentell)
apply_patch ist ein Unterwerkzeug von exec für strukturierte Mehrdatei-Bearbeitungen.
Aktivieren Sie es explizit:
- Nur verfügbar für OpenAI/OpenAI Codex-Modelle.
- Tool-Richtlinien gelten weiterhin;
allow: ["exec"]erlaubt implizitapply_patch. - Die Konfiguration befindet sich unter
tools.exec.applyPatch. tools.exec.applyPatch.workspaceOnlyist standardmäßig auftruegesetzt (auf den Workspace beschränkt). Setzen Sie es nur auffalse, wenn Sie ausdrücklich möchten, dassapply_patchaußerhalb des Workspace-Verzeichnisses schreibt/löscht.