Outil Exec
Execute des commandes shell dans l’espace de travail. Prend en charge l’execution au premier plan et en arriere-plan viaprocess.
Si process est interdit, exec s’execute de maniere synchrone et ignore yieldMs/background.
Les sessions en arriere-plan sont limitees par agent ; process ne voit que les sessions du meme agent.
Parametres
command(requis)workdir(par defaut : cwd)env(surcharges cle/valeur)yieldMs(par defaut 10000) : passage automatique en arriere-plan apres delaibackground(bool) : passer immediatement en arriere-plantimeout(secondes, par defaut 1800) : arret a l’expirationpty(bool) : executer dans un pseudo-terminal quand disponible (CLI uniquement TTY, agents de code, interfaces terminal)host(sandbox | gateway | node) : ou executersecurity(deny | allowlist | full) : mode d’application pourgateway/nodeask(off | on-miss | always) : invites d’approbation pourgateway/nodenode(string) : id/nom du nœud pourhost=nodeelevated(bool) : demander le mode eleve (hote de la Gateway (passerelle)) ;security=fulln’est force que lorsque l’elevation aboutit afull
hosta pour valeur par defautsandbox.elevatedest ignore lorsque le sandboxing est desactive (exec s’execute deja sur l’hote).- Les approbations
gateway/nodesont controlees par~/.openclaw/exec-approvals.json. nodenecessite un nœud associe (application compagnon ou hote de nœud headless).- Si plusieurs nœuds sont disponibles, definissez
exec.nodeoutools.exec.nodepour en selectionner un. - Sur les hôtes non Windows, exec utilise
SHELLlorsqu’il est defini ; siSHELLvautfish, il preferebash(oush) depuisPATHafin d’eviter les scripts incompatibles avec fish, puis se rabat surSHELLsi aucun n’existe. - L’execution sur l’hote (
gateway/node) rejetteenv.PATHet les surcharges du chargeur (LD_*/DYLD_*) afin de prevenir le detournement de binaires ou l’injection de code. - Important : le sandboxing est desactive par defaut. Si le sandboxing est desactive,
host=sandboxs’execute directement sur l’hote de la Gateway (passerelle) (sans conteneur) et ne requiert pas d’approbations. Pour exiger des approbations, lancez avechost=gatewayet configurez les approbations exec (ou activez le sandboxing).
Configuration
tools.exec.notifyOnExit(par defaut : true) : lorsque true, les sessions exec mises en arriere-plan mettent en file un evenement systeme et demandent un heartbeat a la sortie.tools.exec.approvalRunningNoticeMs(par defaut : 10000) : emet un unique avis « running » lorsqu’un exec soumis a approbation dure plus longtemps que ce delai (0 desactive).tools.exec.host(par defaut :sandbox)tools.exec.security(par defaut :denypour le sandbox,allowlistpour Gateway (passerelle) + nœud lorsque non defini)tools.exec.ask(par defaut :on-miss)tools.exec.node(par defaut : non defini)tools.exec.pathPrepend: liste de repertoires a prefixer aPATHpour les executions exec.tools.exec.safeBins: binaires surs en stdin uniquement pouvant s’executer sans entrees explicites dans la liste d’autorisation.
Gestion de PATH
host=gateway: fusionne votrePATHde shell de connexion dans l’environnement exec. Les surchargesenv.PATHsont rejetees pour l’execution sur l’hote. Le demon lui-meme s’execute toujours avec unPATHminimal :- macOS :
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux :
/usr/local/bin,/usr/bin,/bin
- macOS :
host=sandbox: executesh -lc(shell de connexion) a l’interieur du conteneur, de sorte que/etc/profilepeut reinitialiserPATH. OpenClaw prefixeenv.PATHapres le sourcage des profils via une variable d’environnement interne (sans interpolation du shell) ;tools.exec.pathPrepends’applique ici aussi.host=node: seules les surcharges d’environnement non bloquees que vous passez sont envoyees au nœud. Les remplacements deenv.PATHsont rejetés pour l’exécution sur l’hôte et ignorés par les hôtes node. Si vous avez besoin d’entrées PATH supplémentaires sur un node, configurez l’environnement du service hôte node (systemd/launchd) ou installez les outils dans des emplacements standards.
Surcharges de session (/exec)
Utilisez /exec pour definir des valeurs par defaut par session pour host, security, ask et node.
Envoyez /exec sans arguments pour afficher les valeurs actuelles.
Exemple :
Modele d’autorisation
/exec n’est honore que pour les expediteurs autorises (listes d’autorisation de canaux/appairage plus commands.useAccessGroups).
Il met a jour uniquement l’etat de la session et n’ecrit pas la configuration. Pour desactiver exec de maniere definitive, refusez-le via la politique
d’outil (tools.deny: ["exec"] ou par agent). Les approbations sur l’hote s’appliquent toujours, sauf si vous definissez explicitement
security=full et ask=off.
Approbations exec (application compagnon / hote de nœud)
Les agents en sandbox peuvent exiger une approbation par requete avant queexec ne s’execute sur l’hote de la Gateway (passerelle) ou du nœud.
Voir Exec approvals pour la politique, la liste d’autorisation et le flux UI.
Lorsque des approbations sont requises, l’outil exec retourne immediatement avec
status: "approval-pending" et un identifiant d’approbation. Une fois approuve (ou refuse / expire),
la Gateway (passerelle) emet des evenements systeme (Exec finished / Exec denied). Si la commande est toujours
en cours d’execution apres tools.exec.approvalRunningNoticeMs, un unique avis Exec running est emis.
Liste d’autorisation + binaires surs
L’application de la liste d’autorisation correspond uniquement aux chemins de binaires resolus (pas de correspondance par nom de base). Lorsquesecurity=allowlist, les commandes shell sont auto-autorisees uniquement si chaque segment du pipeline est
autorise par la liste ou est un binaire sur. L’enchaînement (;, &&, ||) et les redirections sont rejetés en
mode allowlist sauf si chaque segment de premier niveau respecte l’allowlist (y compris les safe bins).
Les redirections ne sont toujours pas prises en charge.
Exemples
Premier plan :apply_patch (experimental)
apply_patch est un sous-outil de exec pour des modifications structurees multi-fichiers.
Activez-le explicitement :
- Disponible uniquement pour les modeles OpenAI/OpenAI Codex.
- La politique d’outil s’applique toujours ;
allow: ["exec"]autorise implicitementapply_patch. - La configuration se trouve sous
tools.exec.applyPatch. tools.exec.applyPatch.workspaceOnlyest défini par défaut surtrue(limité à l’espace de travail). Définissez-le surfalseuniquement si vous souhaitez intentionnellement queapply_patchécrive/supprime en dehors du répertoire de l’espace de travail.