Führen Sie Shell-Befehle im Arbeitsbereich aus.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
exec ist eine mutierende Shell-Oberfläche: Befehle können Dateien überall dort erstellen, bearbeiten oder löschen, wo das ausgewählte Host- oder Sandbox-Dateisystem dies erlaubt. Das Deaktivieren von OpenClaw-Dateisystemtools wie write, edit oder apply_patch macht exec nicht schreibgeschützt.
Unterstützt Vordergrund- und Hintergrundausführung über process. Wenn process nicht erlaubt ist, wird exec synchron ausgeführt und ignoriert yieldMs/background.
Hintergrundsitzungen sind pro Agent begrenzt; process sieht nur Sitzungen desselben Agenten.
Parameter
Auszuführender Shell-Befehl.
Arbeitsverzeichnis für den Befehl.
Schlüssel/Wert-Umgebungsüberschreibungen, die über die geerbte Umgebung gelegt werden.
Den Befehl nach dieser Verzögerung (ms) automatisch in den Hintergrund verschieben.
Den Befehl sofort in den Hintergrund verschieben, statt auf
yieldMs zu warten.Überschreibt das konfigurierte Exec-Timeout für diesen Aufruf. Setzen Sie
timeout: 0 nur, wenn der Befehl ohne Exec-Prozess-Timeout laufen soll.Nach Möglichkeit in einem Pseudo-Terminal ausführen. Verwenden Sie dies für reine TTY-CLIs, Coding-Agents und Terminal-UIs.
Wo die Ausführung erfolgen soll.
auto wird zu sandbox aufgelöst, wenn eine Sandbox-Laufzeit aktiv ist, andernfalls zu gateway.Wird für normale Tool-Aufrufe ignoriert. Die Sicherheit von
gateway / node wird durch
tools.exec.security und ~/.openclaw/exec-approvals.json gesteuert; der erhöhte Modus kann
security=full nur erzwingen, wenn der Operator ausdrücklich erhöhten Zugriff gewährt.Verhalten der Genehmigungsabfrage für die Ausführung über
gateway / node.Node-ID/-Name, wenn
host=node.Erhöhten Modus anfordern — aus der Sandbox auf den konfigurierten Host-Pfad ausbrechen.
security=full wird nur erzwungen, wenn elevated zu full aufgelöst wird.hostist standardmäßigauto: Sandbox, wenn die Sandbox-Laufzeit für die Sitzung aktiv ist, andernfalls Gateway.hostakzeptiert nurauto,sandbox,gatewayodernode. Es ist kein Hostname-Selektor; hostnameähnliche Werte werden abgelehnt, bevor der Befehl ausgeführt wird.autoist die standardmäßige Routing-Strategie, kein Platzhalter. Pro Aufruf isthost=nodevonautoaus erlaubt; pro Aufruf isthost=gatewaynur erlaubt, wenn keine Sandbox-Laufzeit aktiv ist.- Ohne zusätzliche Konfiguration funktioniert
host=autoweiterhin einfach: Keine Sandbox bedeutet, dass es zugatewayaufgelöst wird; eine aktive Sandbox bedeutet, dass es in der Sandbox bleibt. elevatedbricht aus der Sandbox auf den konfigurierten Host-Pfad aus: standardmäßiggatewayodernode, wenntools.exec.host=nodegesetzt ist (oder die Sitzungs-Voreinstellunghost=nodeist). Es ist nur verfügbar, wenn erhöhter Zugriff für die aktuelle Sitzung/den aktuellen Provider aktiviert ist.- 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. exec host=nodeist der einzige Shell-Ausführungspfad für Nodes; der alte Wrappernodes.runwurde entfernt.timeoutgilt für Vordergrund-, Hintergrund-,yieldMs-, Gateway-, Sandbox- und Node-system.run-Ausführung. Wenn es ausgelassen wird, verwendet OpenClawtools.exec.timeoutSec; ein explizitestimeout: 0deaktiviert das Exec-Prozess-Timeout für diesen Aufruf.- Auf Nicht-Windows-Hosts verwendet exec
SHELL, wenn gesetzt; wennSHELLfishist, bevorzugt esbash(odersh) ausPATH, um fish-inkompatible Skripte zu vermeiden, und fällt dann aufSHELLzurück, wenn keines davon existiert. - Auf Windows-Hosts bevorzugt exec die Erkennung von PowerShell 7 (
pwsh) (Program Files, ProgramW6432, dann PATH) und fällt dann auf Windows PowerShell 5.1 zurück. - Host-Ausführung (
gateway/node) lehntenv.PATHund Loader-Überschreibungen (LD_*/DYLD_*) ab, um Binary-Hijacking oder eingeschleusten Code zu verhindern. - OpenClaw setzt
OPENCLAW_SHELL=execin der Umgebung des gestarteten Befehls (einschließlich PTY- und Sandbox-Ausführung), damit Shell-/Profilregeln den Exec-Tool-Kontext erkennen können. openclaw channels loginist inexecblockiert, weil es ein interaktiver Kanal-Authentifizierungsablauf ist; führen Sie ihn in einem Terminal auf dem Gateway-Host aus, oder verwenden Sie das kanaleigene Login-Tool aus dem Chat, sofern eines existiert.- Wichtig: Sandboxing ist standardmäßig deaktiviert. Wenn Sandboxing deaktiviert ist, wird implizites
host=autozugatewayaufgelöst. Expliziteshost=sandboxschlägt weiterhin geschlossen fehl, statt stillschweigend auf dem Gateway-Host zu laufen. Aktivieren Sie Sandboxing oder verwenden Siehost=gatewaymit Genehmigungen. - Skript-Preflight-Prüfungen (für häufige Python-/Node-Shell-Syntaxfehler) prüfen nur Dateien innerhalb der
effektiven
workdir-Grenze. Wenn ein Skriptpfad außerhalb vonworkdiraufgelöst wird, wird der Preflight für diese Datei übersprungen. - Für lang laufende Arbeit, die jetzt startet, starten Sie sie einmal und verlassen Sie sich auf automatisches
Abschluss-Wecken, wenn es aktiviert ist und der Befehl Ausgabe erzeugt oder fehlschlägt.
Verwenden Sie
processfür Logs, Status, Eingabe oder Eingriffe; imitieren Sie keine Planung mit Sleep-Schleifen, Timeout-Schleifen oder wiederholtem Polling. - Für Arbeit, die später oder nach Zeitplan stattfinden soll, verwenden Sie Cron statt
exec-Sleep-/Delay-Mustern.
Konfiguration
tools.exec.notifyOnExit(Standard: true): Wenn true, stellen in den Hintergrund verschobene Exec-Sitzungen beim Beenden ein Systemereignis in die Warteschlange und fordern einen Heartbeat an.tools.exec.approvalRunningNoticeMs(Standard: 10000): Gibt eine einzelne „running“-Benachrichtigung aus, wenn ein genehmigungspflichtiger Exec länger als dies läuft (0 deaktiviert).tools.exec.timeoutSec(Standard: 1800): Standardmäßiges Exec-Timeout pro Befehl in Sekunden.timeoutpro Aufruf überschreibt es;timeout: 0pro Aufruf deaktiviert das Exec-Prozess-Timeout.tools.exec.host(Standard:auto; wird zusandboxaufgelöst, wenn die Sandbox-Laufzeit aktiv ist, andernfalls zugateway)tools.exec.security(Standard:denyfür Sandbox,fullfür Gateway + Node, wenn nicht gesetzt)tools.exec.ask(Standard:off)- Genehmigungsfreies Host-Exec ist der Standard für Gateway + Node. Wenn Sie Genehmigungen/Allowlist-Verhalten wünschen, verschärfen Sie sowohl
tools.exec.*als auch die Host-Datei~/.openclaw/exec-approvals.json; siehe Exec-Genehmigungen. - YOLO stammt aus den Host-Policy-Standards (
security=full,ask=off), nicht aushost=auto. Wenn Sie Gateway- oder Node-Routing erzwingen möchten, setzen Sietools.exec.hostoder verwenden Sie/exec host=.... - Im Modus
security=fullplusask=offfolgt Host-Exec direkt der konfigurierten Policy; es gibt keine zusätzliche heuristische Command-Obfuscation-Vorfilterung oder Skript-Preflight-Ablehnungsschicht. tools.exec.node(Standard: nicht gesetzt)tools.exec.strictInlineEval(Standard: false): Wenn true, erfordern Inline-Interpreter-Eval-Formen wiepython -c,node -e,ruby -e,perl -e,php -r,lua -eundosascript -eimmer eine ausdrückliche Genehmigung.allow-alwayskann weiterhin harmlose Interpreter-/Skriptaufrufe dauerhaft speichern, aber Inline-Eval-Formen fragen weiterhin jedes Mal nach.tools.exec.commandHighlighting(Standard: false): Wenn true, können Genehmigungsabfragen parserabgeleitete Befehlsspannen im Befehlstext hervorheben. Setzen Sie es global oder pro Agent auftrue, um Befehlstext-Hervorhebung zu aktivieren, ohne die Exec-Genehmigungs-Policy zu ändern.tools.exec.pathPrepend: Liste von Verzeichnissen, die für Exec-Läufe vorPATHgestellt werden (nur Gateway + Sandbox).tools.exec.safeBins: stdin-only sichere Binärdateien, die ohne explizite Allowlist-Einträge laufen können. Verhaltensdetails finden Sie unter Safe bins.tools.exec.safeBinTrustedDirs: Zusätzliche explizite Verzeichnisse, denen fürsafeBins-Pfadprüfungen vertraut wird.PATH-Einträge werden nie automatisch vertraut. Eingebaute Standards sind/binund/usr/bin.tools.exec.safeBinProfiles: Optionale benutzerdefinierte argv-Policy pro sicherer Binärdatei (minPositional,maxPositional,allowedValueFlags,deniedFlags).
PATH-Behandlung
host=gateway: Führt Ihr Login-Shell-PATHmit der Exec-Umgebung zusammen.env.PATH-Überschreibungen 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) im Container aus, daher kann/etc/profilePATHzurücksetzen. OpenClaw stelltenv.PATHnach dem Sourcing des Profils über eine interne Umgebungsvariable voran (keine Shell-Interpolation);tools.exec.pathPrependgilt auch hier.host=node: Nur nicht blockierte Umgebungsüberschreibungen, die Sie übergeben, werden an den Node gesendet.env.PATH-Überschreibungen werden für Host-Ausführung abgelehnt und von Node-Hosts ignoriert. Wenn Sie zusätzliche PATH-Einträge auf einem Node benötigen, konfigurieren Sie die Umgebung des Node-Host-Dienstes (systemd/launchd) oder installieren Sie Tools an Standardorten.
Sitzungsüberschreibungen (/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, verweigern Sie es über die Tool-
Policy (tools.deny: ["exec"] oder pro Agent). Host-Genehmigungen gelten weiterhin, sofern Sie nicht ausdrücklich
security=full und ask=off setzen.
Exec-Genehmigungen (Companion-App / Node-Host)
Sandboxed Agents können eine Genehmigung pro Anfrage erfordern, bevorexec auf dem Gateway- oder Node-Host läuft.
Siehe Exec-Genehmigungen für Policy, Allowlist und UI-Ablauf.
Wenn Genehmigungen erforderlich sind, gibt das Exec-Tool sofort
status: "approval-pending" und eine Genehmigungs-ID zurück. Nach der Genehmigung (oder Ablehnung / Zeitüberschreitung)
gibt der Gateway Systemereignisse aus (Exec finished / Exec denied). Wenn der Befehl nach
tools.exec.approvalRunningNoticeMs noch läuft, wird eine einzelne Exec running-Benachrichtigung ausgegeben.
Auf Kanälen mit nativen Genehmigungskarten/-Buttons sollte sich der Agent zuerst auf diese
native UI verlassen und nur dann einen manuellen /approve-Befehl einschließen, wenn das Tool-
Ergebnis ausdrücklich sagt, dass Chat-Genehmigungen nicht verfügbar sind oder manuelle Genehmigung der
einzige Weg ist.
Allowlist + sichere Binärdateien
Die manuelle Allowlist-Durchsetzung vergleicht aufgelöste Binärpfad-Globs und reine Befehlsnamen- Globs. Reine Namen passen nur zu Befehlen, die über PATH aufgerufen werden, sodassrg zu
/opt/homebrew/bin/rg passen kann, wenn der Befehl rg ist, aber nicht zu ./rg oder /tmp/rg.
Wenn security=allowlist, werden Shell-Befehle nur dann automatisch erlaubt, wenn jedes Pipeline-
Segment auf der Allowlist steht oder eine sichere Binärdatei ist. Verkettung (;, &&, ||) und Umleitungen
werden im Allowlist-Modus abgelehnt, sofern nicht jedes Top-Level-Segment die
Allowlist erfüllt (einschließlich sicherer Binärdateien). Umleitungen bleiben nicht unterstützt.
Dauerhaftes allow-always-Vertrauen umgeht diese Regel nicht: Ein verketteter Befehl erfordert weiterhin, dass jedes
Top-Level-Segment passt.
autoAllowSkills ist ein separater Komfortpfad in Exec-Genehmigungen. Er ist nicht dasselbe wie
manuelle Pfad-Allowlist-Einträge. Für strikt explizites Vertrauen lassen Sie autoAllowSkills deaktiviert.
Verwenden Sie die beiden Steuerelemente für unterschiedliche Aufgaben:
tools.exec.safeBins: kleine, nur stdin-basierte Stream-Filter.tools.exec.safeBinTrustedDirs: explizite zusätzliche vertrauenswürdige Verzeichnisse für Safe-Bin-Executable-Pfade.tools.exec.safeBinProfiles: explizite argv-Richtlinie für benutzerdefinierte Safe Bins.- Zulassungsliste: explizites Vertrauen für Executable-Pfade.
safeBins nicht als generische Zulassungsliste, und fügen Sie keine Interpreter-/Runtime-Binärdateien hinzu (zum Beispiel python3, node, ruby, bash). Wenn Sie diese benötigen, verwenden Sie explizite Zulassungslisteneinträge und lassen Sie Genehmigungsaufforderungen aktiviert.
openclaw security audit warnt, wenn Interpreter-/Runtime-safeBins-Einträge keine expliziten Profile haben, und openclaw doctor --fix kann fehlende benutzerdefinierte safeBinProfiles-Einträge als Gerüst anlegen.
openclaw security audit und openclaw doctor warnen außerdem, wenn Sie Bins mit breitem Verhalten wie jq explizit wieder zu safeBins hinzufügen.
Wenn Sie Interpreter explizit auf die Zulassungsliste setzen, aktivieren Sie tools.exec.strictInlineEval, damit Inline-Code-Eval-Formen weiterhin eine neue Genehmigung erfordern.
Vollständige Richtliniendetails und Beispiele finden Sie unter Exec-Genehmigungen und Safe Bins im Vergleich zur Zulassungsliste.
Beispiele
Vordergrund:apply_patch
apply_patch ist ein Unter-Tool von exec für strukturierte Änderungen über mehrere Dateien hinweg.
Es ist standardmäßig für OpenAI- und OpenAI Codex-Modelle aktiviert. Verwenden Sie die Konfiguration nur,
wenn Sie es deaktivieren oder auf bestimmte Modelle beschränken möchten:
- Nur für OpenAI-/OpenAI Codex-Modelle verfügbar.
- Die Tool-Richtlinie gilt weiterhin;
allow: ["write"]erlaubt implizitapply_patch. deny: ["write"]verweigertapply_patchnicht; verweigern Sieapply_patchexplizit oder verwenden Siedeny: ["group:fs"], wenn Patch-Schreibvorgänge ebenfalls blockiert werden sollen.- Die Konfiguration befindet sich unter
tools.exec.applyPatch. tools.exec.applyPatch.enabledist standardmäßigtrue; setzen Sie es auffalse, um das Tool für OpenAI-Modelle zu deaktivieren.tools.exec.applyPatch.workspaceOnlyist standardmäßigtrue(auf den Workspace beschränkt). Setzen Sie es nur dann auffalse, wenn Sie absichtlich möchten, dassapply_patchaußerhalb des Workspace-Verzeichnisses schreibt/löscht.
Verwandte Themen
- Exec-Genehmigungen — Genehmigungssperren für Shell-Befehle
- Sandboxing — Ausführen von Befehlen in Sandbox-Umgebungen
- Hintergrundprozess — lang laufendes Exec- und Process-Tool
- Sicherheit — Tool-Richtlinie und erhöhter Zugriff