Tools
Uitvoeringstool
Shellopdrachten uitvoeren in de werkruimte. Ondersteunt uitvoering op de voorgrond + achtergrond via process.
Als process niet is toegestaan, draait exec synchroon en negeert het yieldMs/background.
Achtergrondsessies hebben een bereik per agent; process ziet alleen sessies van dezelfde agent.
Parameters
commandstringrequiredUit te voeren shellopdracht.
workdirstringWerkdirectory voor de opdracht.
envobjectKey/value-omgevingsoverschrijvingen die boven op de geërfde omgeving worden samengevoegd.
yieldMsnumberZet de opdracht automatisch op de achtergrond na deze vertraging (ms).
backgroundbooleanZet de opdracht direct op de achtergrond in plaats van te wachten op yieldMs.
timeoutnumberOverschrijf de geconfigureerde exec-time-out voor deze aanroep. Stel timeout: 0 alleen in wanneer de opdracht zonder time-out van het exec-proces moet draaien.
ptybooleanDraai in een pseudo-terminal wanneer beschikbaar. Gebruik dit voor TTY-only CLI's, coding agents en terminal-UI's.
host'auto' | 'sandbox' | 'gateway' | 'node'Waar moet worden uitgevoerd. auto wordt omgezet naar sandbox wanneer een sandboxruntime actief is en anders naar gateway.
security'deny' | 'allowlist' | 'full'Handhavingsmodus voor uitvoering via gateway / node.
ask'off' | 'on-miss' | 'always'Gedrag van de goedkeuringsprompt voor uitvoering via gateway / node.
nodestringNode-id/naam wanneer host=node.
elevatedbooleanVraag verhoogde modus aan — ontsnap uit de sandbox naar het geconfigureerde hostpad. security=full wordt alleen afgedwongen wanneer verhoogd wordt omgezet naar full.
Opmerkingen:
hoststaat standaard opauto: sandbox wanneer een sandboxruntime actief is voor de sessie, anders gateway.hostaccepteert alleenauto,sandbox,gatewayofnode. Het is geen hostnaamselector; hostnaamachtige waarden worden geweigerd voordat de opdracht draait.autois de standaard routeringsstrategie, geen wildcard. Per aanroep ishost=nodetoegestaan vanuitauto; per aanroep ishost=gatewayalleen toegestaan wanneer er geen sandboxruntime actief is.- Zonder extra configuratie werkt
host=autonog steeds gewoon: geen sandbox betekent dat het wordt omgezet naargateway; een live sandbox betekent dat het in de sandbox blijft. elevatedontsnapt uit de sandbox naar het geconfigureerde hostpad: standaardgateway, ofnodewanneertools.exec.host=node(of de sessiestandaardhost=nodeis). Het is alleen beschikbaar wanneer verhoogde toegang is ingeschakeld voor de huidige sessie/provider.- Goedkeuringen voor
gateway/nodeworden beheerd door~/.openclaw/exec-approvals.json. nodevereist een gekoppelde node (begeleidende app of headless node-host).- Als er meerdere nodes beschikbaar zijn, stel dan
exec.nodeoftools.exec.nodein om er een te selecteren. exec host=nodeis het enige shell-uitvoeringspad voor nodes; de oudenodes.run-wrapper is verwijderd.timeoutgeldt voor voorgrond-, achtergrond-,yieldMs-, gateway-, sandbox- en node-system.run-uitvoering. Als dit wordt weggelaten, gebruikt OpenClawtools.exec.timeoutSec; expliciettimeout: 0schakelt de time-out van het exec-proces voor die aanroep uit.- Op niet-Windows-hosts gebruikt exec
SHELLwanneer ingesteld; alsSHELLfishis, geeft het de voorkeur aanbash(ofsh) uitPATHom scripts te vermijden die niet compatibel zijn met fish, en valt daarna terug opSHELLals geen van beide bestaat. - Op Windows-hosts geeft exec de voorkeur aan detectie van PowerShell 7 (
pwsh) (Program Files, ProgramW6432, daarna PATH), en valt daarna terug op Windows PowerShell 5.1. - Hostuitvoering (
gateway/node) weigertenv.PATHen loader-overschrijvingen (LD_*/DYLD_*) om binary hijacking of geïnjecteerde code te voorkomen. - OpenClaw stelt
OPENCLAW_SHELL=execin de omgeving van de gestarte opdracht in (inclusief PTY- en sandboxuitvoering), zodat shell-/profielregels exec-toolcontext kunnen detecteren. openclaw channels loginwordt geblokkeerd vanuitexecomdat het een interactieve channel-auth-flow is; draai het in een terminal op de gateway-host, of gebruik de channel-native logintool vanuit chat wanneer die bestaat.- Belangrijk: sandboxing is standaard uitgeschakeld. Als sandboxing uit staat, wordt impliciet
host=autoomgezet naargateway. Expliciethost=sandboxfaalt nog steeds gesloten in plaats van stilzwijgend op de gateway-host te draaien. Schakel sandboxing in of gebruikhost=gatewaymet goedkeuringen. - Script-preflightcontroles (voor veelvoorkomende Python/Node-shellsyntaxfouten) inspecteren alleen bestanden binnen de
effectieve
workdir-grens. Als een scriptpad buitenworkdirwordt omgezet, wordt preflight voor dat bestand overgeslagen. - Voor langlopend werk dat nu start, start het één keer en vertrouw op automatische
completion wake wanneer die is ingeschakeld en de opdracht uitvoer geeft of faalt.
Gebruik
processvoor logs, status, invoer of interventie; simuleer geen planning met slaaplussen, time-outlussen of herhaald pollen. - Voor werk dat later of volgens een schema moet plaatsvinden, gebruik cron in plaats van
exec-slaap-/vertragingspatronen.
Configuratie
tools.exec.notifyOnExit(standaard: true): wanneer true, plaatsen naar de achtergrond verplaatste exec-sessies een systeemevent in de wachtrij en vragen ze bij afsluiten om een Heartbeat.tools.exec.approvalRunningNoticeMs(standaard: 10000): geef één enkele melding "draait" wanneer een exec met verplichte goedkeuring langer draait dan dit (0 schakelt dit uit).tools.exec.timeoutSec(standaard: 1800): standaard exec-time-out per opdracht in seconden. Per-aanroeptimeoutoverschrijft dit; per-aanroeptimeout: 0schakelt de time-out van het exec-proces uit.tools.exec.host(standaard:auto; wordt omgezet naarsandboxwanneer een sandboxruntime actief is, anders naargateway)tools.exec.security(standaard:denyvoor sandbox,fullvoor gateway + node wanneer niet ingesteld)tools.exec.ask(standaard:off)- Host-exec zonder goedkeuring is de standaard voor gateway + node. Als je goedkeuringen/allowlist-gedrag wilt, maak dan zowel
tools.exec.*als het hostbestand~/.openclaw/exec-approvals.jsonstrikter; zie Exec-goedkeuringen. - YOLO komt uit de hostbeleidsstandaarden (
security=full,ask=off), niet uithost=auto. Als je routering naar gateway of node wilt afdwingen, stel dantools.exec.hostin of gebruik/exec host=.... - In de modus
security=fullplusask=offvolgt host-exec direct het geconfigureerde beleid; er is geen extra heuristische voorfilter voor opdrachtverhulling of script-preflightweigeringslaag. tools.exec.node(standaard: niet ingesteld)tools.exec.strictInlineEval(standaard: false): wanneer true, vereisen inline interpreter-eval-vormen zoalspython -c,node -e,ruby -e,perl -e,php -r,lua -eenosascript -ealtijd expliciete goedkeuring.allow-alwayskan nog steeds goedaardige interpreter-/scriptaanroepen bewaren, maar inline-eval-vormen vragen nog steeds elke keer om bevestiging.tools.exec.pathPrepend: lijst met directories die vóórPATHworden geplaatst voor exec-runs (alleen gateway + sandbox).tools.exec.safeBins: stdin-only veilige binaries die zonder expliciete allowlist-vermeldingen kunnen draaien. Zie Veilige bins voor gedragsdetails.tools.exec.safeBinTrustedDirs: aanvullende expliciete directories die worden vertrouwd voorsafeBins-padcontroles.PATH-items worden nooit automatisch vertrouwd. Ingebouwde standaarden zijn/binen/usr/bin.tools.exec.safeBinProfiles: optioneel aangepast argv-beleid per veilige bin (minPositional,maxPositional,allowedValueFlags,deniedFlags).
Voorbeeld:
{
tools: {
exec: {
pathPrepend: ["~/bin", "/opt/oss/bin"],
},
},
}
PATH-afhandeling
host=gateway: voegt je login-shell-PATHsamen in de exec-omgeving.env.PATH-overschrijvingen worden geweigerd voor 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: draaitsh -lc(login-shell) binnen de container, dus/etc/profilekanPATHresetten. OpenClaw plaatstenv.PATHvooraan na het sourcen van het profiel via een interne env-var (geen shellinterpolatie);tools.exec.pathPrependgeldt hier ook.host=node: alleen niet-geblokkeerde env-overschrijvingen die je doorgeeft, worden naar de node gestuurd.env.PATH-overschrijvingen worden geweigerd voor hostuitvoering en genegeerd door node-hosts. Als je extra PATH-items op een node nodig hebt, configureer dan de serviceomgeving van de node-host (systemd/launchd) of installeer tools op standaardlocaties.
Node-binding per agent (gebruik de agentlijstindex in config):
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"
Control-UI: het tabblad Nodes bevat een klein paneel "Exec-nodebinding" voor dezelfde instellingen.
Sessie-overschrijvingen (/exec)
Gebruik /exec om per-sessie standaarden voor host, security, ask en node in te stellen.
Stuur /exec zonder argumenten om de huidige waarden te tonen.
Voorbeeld:
/exec host=auto security=allowlist ask=on-miss node=mac-1
Autorisatiemodel
/exec wordt alleen gerespecteerd voor geautoriseerde afzenders (channel-allowlists/koppeling plus commands.useAccessGroups).
Het werkt alleen sessiestatus bij en schrijft geen config. Om exec hard uit te schakelen, weiger het via toolbeleid
(tools.deny: ["exec"] of per agent). Hostgoedkeuringen blijven van toepassing tenzij je expliciet
security=full en ask=off instelt.
Exec-goedkeuringen (begeleidende app / node-host)
Gesandboxte agents kunnen goedkeuring per verzoek vereisen voordat exec op de gateway- of node-host draait.
Zie Exec-goedkeuringen voor het beleid, de allowlist en de UI-flow.
Wanneer goedkeuringen vereist zijn, retourneert de exec-tool direct met
status: "approval-pending" en een goedkeurings-id. Na goedkeuring (of weigering / time-out)
zendt de Gateway systeemevents uit (Exec finished / Exec denied). Als de opdracht nog
draait na tools.exec.approvalRunningNoticeMs, wordt één enkele melding Exec running uitgezonden.
Op channels met native goedkeuringskaarten/knoppen moet de agent eerst op die
native UI vertrouwen en alleen een handmatige /approve-opdracht opnemen wanneer het toolresultaat
expliciet zegt dat chatgoedkeuringen niet beschikbaar zijn of dat handmatige goedkeuring het
enige pad is.
Allowlist + veilige bins
Handmatige allowlist-handhaving matcht opgeloste binary-padglobs en kale opdrachtnaam-
globs. Kale namen matchen alleen opdrachten die via PATH worden aangeroepen, dus rg kan matchen met
/opt/homebrew/bin/rg wanneer de opdracht rg is, maar niet met ./rg of /tmp/rg.
Wanneer security=allowlist, worden shellopdrachten alleen automatisch toegestaan als elk pipeline-
segment op de allowlist staat of een veilige bin is. Chaining (;, &&, ||) en omleidingen
worden in allowlist-modus geweigerd tenzij elk segment op topniveau aan de
allowlist voldoet (inclusief veilige bins). Omleidingen blijven niet ondersteund.
Duurzaam allow-always-vertrouwen omzeilt die regel niet: een geketende opdracht vereist nog steeds dat elk
segment op topniveau matcht.
autoAllowSkills is een apart gemakspad in exec-goedkeuringen. Het is niet hetzelfde als
handmatige pad-allowlist-vermeldingen. Houd autoAllowSkills uitgeschakeld voor strikt expliciet vertrouwen.
Gebruik de twee controles voor verschillende taken:
tools.exec.safeBins: kleine, stdin-only streamfilters.tools.exec.safeBinTrustedDirs: expliciete extra vertrouwde directories voor uitvoerbare paden van veilige bins.tools.exec.safeBinProfiles: expliciet argv-beleid voor aangepaste veilige bins.- allowlist: expliciet vertrouwen voor uitvoerbare paden.
Behandel safeBins niet als een generieke lijst met toegestane items en voeg geen interpreter-/runtime-binaries toe (bijvoorbeeld python3, node, ruby, bash). Als je die nodig hebt, gebruik dan expliciete vermeldingen in de toegestane lijst en laat goedkeuringsprompts ingeschakeld.
openclaw security audit waarschuwt wanneer interpreter-/runtime-vermeldingen in safeBins expliciete profielen missen, en openclaw doctor --fix kan ontbrekende aangepaste vermeldingen voor safeBinProfiles aanmaken.
openclaw security audit en openclaw doctor waarschuwen ook wanneer je expliciet bins met breed gedrag, zoals jq, weer toevoegt aan safeBins.
Als je interpreters expliciet toestaat, schakel dan tools.exec.strictInlineEval in, zodat vormen voor inline code-evaluatie nog steeds een nieuwe goedkeuring vereisen.
Zie Exec-goedkeuringen en Veilige bins versus toegestane lijst voor alle beleidsdetails en voorbeelden.
Voorbeelden
Voorgrond:
{ "tool": "exec", "command": "ls -la" }
Achtergrond + pollen:
{"tool":"exec","command":"npm run build","yieldMs":1000}
{"tool":"process","action":"poll","sessionId":"<id>"}
Pollen is bedoeld voor status op aanvraag, niet voor wachtlussen. Als automatisch wekken bij voltooiing is ingeschakeld, kan de opdracht de sessie wekken wanneer deze uitvoer produceert of mislukt.
Toetsen verzenden (tmux-stijl):
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Enter"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["C-c"]}
{"tool":"process","action":"send-keys","sessionId":"<id>","keys":["Up","Up","Enter"]}
Indienen (alleen CR verzenden):
{ "tool": "process", "action": "submit", "sessionId": "<id>" }
Plakken (standaard tussen brackets):
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }
apply_patch
apply_patch is een subtool van exec voor gestructureerde bewerkingen in meerdere bestanden.
Deze is standaard ingeschakeld voor OpenAI- en OpenAI Codex-modellen. Gebruik configuratie alleen
wanneer je deze wilt uitschakelen of beperken tot specifieke modellen:
{
tools: {
exec: {
applyPatch: { workspaceOnly: true, allowModels: ["gpt-5.5"] },
},
},
}
Opmerkingen:
- Alleen beschikbaar voor OpenAI-/OpenAI Codex-modellen.
- Toolbeleid blijft van toepassing;
allow: ["write"]staatapply_patchimpliciet toe. deny: ["write"]weigertapply_patchniet; weigerapply_patchexpliciet of gebruikdeny: ["group:fs"]wanneer patch-schrijfacties ook moeten worden geblokkeerd.- Configuratie staat onder
tools.exec.applyPatch. tools.exec.applyPatch.enabledis standaardtrue; stel dit in opfalseom de tool voor OpenAI-modellen uit te schakelen.tools.exec.applyPatch.workspaceOnlyis standaardtrue(beperkt tot de werkruimte). Stel dit alleen in opfalseals je bewust wilt datapply_patchbuiten de werkruimtemap schrijft/verwijdert.
Gerelateerd
- Exec-goedkeuringen — goedkeuringspoorten voor shellopdrachten
- Sandboxing — opdrachten uitvoeren in gesandboxte omgevingen
- Achtergrondproces — langlopende exec- en proces-tool
- Beveiliging — toolbeleid en verhoogde toegang