Exec tool
Run shell commands in the workspace. Supports foreground + background execution viaprocess.
If process is disallowed, exec runs synchronously and ignores yieldMs/background.
Background sessions are scoped per agent; process only sees sessions from the same agent.
Parameters
command(required)workdir(defaults to cwd)env(key/value overrides)yieldMs(default 10000): auto-background after delaybackground(bool): background immediatelytimeout(seconds, default 1800): kill on expirypty(bool): run in a pseudo-terminal when available (TTY-only CLIs, coding agents, terminal UIs)host(sandbox | gateway | node): where to executesecurity(deny | allowlist | full): enforcement mode forgateway/nodeask(off | on-miss | always): approval prompts forgateway/nodenode(string): node id/name forhost=nodeelevated(bool): alias forhost=gateway+security=fullwhen sandboxed and allowed
hostdefaults tosandbox.elevatedis ignored when sandboxing is off (exec already runs on the host).gateway/nodeapprovals are controlled by~/.clawdbot/exec-approvals.json.noderequires a paired node (companion app or headless node host).- If multiple nodes are available, set
exec.nodeortools.exec.nodeto select one.
Config
tools.exec.notifyOnExit(default: true): when true, backgrounded exec sessions enqueue a system event and request a heartbeat on exit.tools.exec.host(default:sandbox)tools.exec.security(default:deny)tools.exec.ask(default:on-miss)tools.exec.node(default: unset)tools.exec.pathPrepend: list of directories to prepend toPATHfor exec runs.
PATH handling
host=gateway: uses the Gateway processPATH. Daemons install a minimalPATH:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: runssh -lc(login shell) inside the container, so/etc/profilemay resetPATH. Clawdbot prependsenv.PATHafter profile sourcing;tools.exec.pathPrependapplies here too.host=node: only env overrides you pass are sent to the node.tools.exec.pathPrependonly applies if the exec call already setsenv.PATH.
Session overrides (/exec)
Use /exec to set per-session defaults for host, security, ask, and node.
Send /exec with no arguments to show the current values.
Example:
Exec approvals (companion app / node host)
Sandboxed agents can require per-request approval beforeexec runs on the gateway or node host.
See Exec approvals for the policy, allowlist, and UI flow.
Examples
Foreground:apply_patch (experimental)
apply_patch is a subtool of exec for structured multi-file edits.
Enable it explicitly:
- Only available for OpenAI/OpenAI Codex models.
- Tool policy still applies;
allow: ["exec"]implicitly allowsapply_patch. - Config lives under
tools.exec.applyPatch.