Exec-tool
Voer shellopdrachten uit in de werkruimte. Ondersteunt uitvoering op de voorgrond en achtergrond viaprocess.
Als process niet is toegestaan, wordt exec synchroon uitgevoerd en worden yieldMs/background genegeerd.
Achtergrondsessies zijn per agent afgebakend; process ziet alleen sessies van dezelfde agent.
Parameters
command(vereist)workdir(standaard naar cwd)env(key/value-overschrijvingen)yieldMs(standaard 10000): automatisch naar achtergrond na vertragingbackground(bool): direct naar achtergrondtimeout(seconden, standaard 1800): beëindigen bij verlopenpty(bool): uitvoeren in een pseudo-terminal wanneer beschikbaar (TTY-only CLI’s, coding agents, terminal-UI’s)host(sandbox | gateway | node): waar uitvoerensecurity(deny | allowlist | full): afdwingingsmodus voorgateway/nodeask(off | on-miss | always): goedkeuringsprompts voorgateway/nodenode(string): node-id/naam voorhost=nodeelevated(bool): verzoek om verhoogde modus (Gateway-host);security=fullwordt alleen afgedwongen wanneer verhoogd oplossen resulteert infull
hostis standaardsandbox.elevatedwordt genegeerd wanneer sandboxing uit staat (exec draait al op de host).- Goedkeuringen voor
gateway/nodeworden aangestuurd door~/.openclaw/exec-approvals.json. nodevereist een gekoppelde node (Companion-app of headless node-host).- Als meerdere nodes beschikbaar zijn, stel
exec.nodeoftools.exec.nodein om er één te selecteren. - Op niet-Windows-hosts gebruikt exec
SHELLwanneer ingesteld; alsSHELLfishis, geeft het de voorkeur aanbash(ofsh) uitPATHom fish-incompatibele scripts te vermijden, en valt daarna terug opSHELLals geen van beide bestaat. - Hostuitvoering (
gateway/node) weigertenv.PATHen loader-overschrijvingen (LD_*/DYLD_*) om binaire kaping of geïnjecteerde code te voorkomen. - Belangrijk: sandboxing staat standaard uit. Als sandboxing uit staat, wordt
host=sandboxdirect uitgevoerd op de Gateway-host (geen container) en vereist geen goedkeuringen. Om goedkeuringen te vereisen, voer uit methost=gatewayen configureer exec-goedkeuringen (of schakel sandboxing in).
Configuratie
tools.exec.notifyOnExit(standaard: true): wanneer true, plaatsen exec-sessies in de achtergrond een systeemgebeurtenis in de wachtrij en vragen ze een heartbeat bij afsluiten.tools.exec.approvalRunningNoticeMs(standaard: 10000): emitteert één enkele “running”-melding wanneer een exec met goedkeuringsvereiste langer duurt dan dit (0 schakelt uit).tools.exec.host(standaard:sandbox)tools.exec.security(standaard:denyvoor sandbox,allowlistvoor Gateway + node wanneer niet ingesteld)tools.exec.ask(standaard:on-miss)tools.exec.node(standaard: niet ingesteld)tools.exec.pathPrepend: lijst met mappen die voorafgaand aanPATHworden toegevoegd voor exec-runs.tools.exec.safeBins: stdin-only veilige binaries die zonder expliciete allowlist-items mogen draaien.
PATH-afhandeling
host=gateway: voegt dePATHvan je login-shell samen in de exec-omgeving. Overschrijvingen vanenv.PATHworden geweigerd bij hostuitvoering. De daemon zelf draait nog steeds met een minimalePATH:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: voertsh -lc(login-shell) uit binnen de container, waardoor/etc/profilePATHkan resetten. OpenClaw voegtenv.PATHtoe na het sourcen van profielen via een interne env-var (geen shell-interpolatie);tools.exec.pathPrependis hier ook van toepassing.host=node: alleen niet-geblokkeerde env-overschrijvingen die je doorgeeft, worden naar de node verzonden.env.PATH-overschrijvingen worden geweigerd voor hostuitvoering en genegeerd door node-hosts. Als je extra PATH-vermeldingen nodig hebt op een node, configureer dan de serviceomgeving van de node-host (systemd/launchd) of installeer tools op standaardlocaties.
Sessie-overschrijvingen (/exec)
Gebruik /exec om per sessie standaardwaarden in te stellen voor host, security, ask en node.
Verzend /exec zonder argumenten om de huidige waarden te tonen.
Voorbeeld:
Autorisatiemodel
/exec wordt alleen gehonoreerd voor geautoriseerde afzenders (kanaal-allowlists/koppeling plus commands.useAccessGroups).
Het werkt alleen de sessiestatus bij en schrijft geen config. Om exec hard uit te schakelen, weiger het via
toolbeleid (tools.deny: ["exec"] of per agent). Host-goedkeuringen blijven van toepassing tenzij je expliciet
security=full en ask=off instelt.
Exec-goedkeuringen (Companion-app / node-host)
Gesandboxde agents kunnen per verzoek goedkeuring vereisen voordatexec op de Gateway- of node-host wordt uitgevoerd.
Zie Exec approvals voor het beleid, de allowlist en de UI-flow.
Wanneer goedkeuringen vereist zijn, retourneert de exec-tool onmiddellijk met
status: "approval-pending" en een goedkeurings-id. Zodra goedgekeurd (of geweigerd / verlopen),
zendt de Gateway systeemgebeurtenissen uit (Exec finished / Exec denied). Als de opdracht nog
draait na tools.exec.approvalRunningNoticeMs, wordt één enkele Exec running-melding uitgezonden.
Allowlist + veilige bins
Allowlist-handhaving matcht alleen opgeloste binaire paden (geen basenaam-matches). Wanneersecurity=allowlist, worden shellopdrachten automatisch toegestaan alleen als elk pijplijnsegment
op de allowlist staat of een veilige bin is. Chaining (;, &&, ||) en redirects worden geweigerd in
allowlist-modus tenzij elk topniveau-segment voldoet aan de allowlist (inclusief safe bins).
Redirects blijven niet ondersteund.
Voorbeelden
Voorgrond:apply_patch (experimenteel)
apply_patch is een subtool van exec voor gestructureerde bewerkingen over meerdere bestanden.
Schakel het expliciet in:
- Alleen beschikbaar voor OpenAI/OpenAI Codex-modellen.
- Toolbeleid blijft van toepassing;
allow: ["exec"]staat implicietapply_patchtoe. - Configuratie bevindt zich onder
tools.exec.applyPatch. tools.exec.applyPatch.workspaceOnlystaat standaard optrue(beperkt tot de workspace). Zet dit alleen opfalseals je er bewust voor kiest datapply_patchbuiten de workspace-directory mag schrijven/verwijderen.