Skip to main content

Exec Tool — User Guide

Run shell commands from your agent session. Supports foreground and background execution.

Parameters

  • command (required)
  • workdir (defaults to cwd)
  • env (key/value overrides)
  • yieldMs (default 10000): auto-background after this delay
  • background (bool): background immediately
  • timeout (seconds, default 1800): kill on expiry
  • pty (bool): run in a pseudo-terminal (use for TTY-only CLIs, coding agents, terminal UIs)
  • host (sandbox | gateway | node): where to execute
  • security (deny | allowlist | full): enforcement mode for gateway/node
  • ask (off | on-miss | always): approval prompts for gateway/node
  • node (string): node id/name for host=node
  • elevated (bool): request elevated host execution when sandboxed

When exec asks for approval

When exec runs on the gateway or a node host, it goes through the approval gate. Depending on your policy:
  • deny — host exec is blocked entirely.
  • allowlist — approved only if the command matches an allowlisted path.
  • on-miss — you get a prompt when no allowlist entry matches.
  • always — you get a prompt for every command.
When a prompt fires, you see the command, cwd, agent id, and resolved binary path. You can:
  • Allow once — run now
  • Always allow — add to allowlist and run
  • Deny — block this command
If no UI is available to respond, the request falls back (usually to deny).

Giving an agent full exec permission

To skip approval prompts entirely for an agent, set security: "full" and ask: "off":
Or just for a specific agent:

Trusting specific commands

Two ways to allow commands without full trust:

Safe bins (narrow stdin filters)

Add small stream-filter utilities to tools.exec.safeBins. These run without allowlist entries but only accept stdin — no file arguments.
Default safe bins: jq, cut, uniq, head, tail, tr, wc. Do not add interpreter/runtime binaries (python3, node, bash) to safeBins — use explicit allowlist entries for those.

Allowlist (exec-approvals.json)

Add patterns to ~/.openclaw/exec-approvals.json under your agent’s allowlist. Patterns are case-insensitive globs matching the resolved binary path:
Or use the Control UI → Nodes → Exec approvals card to add patterns interactively.

Per-session overrides (/exec)

Change exec behavior for your current session without touching config:
Send /exec with no arguments to see current session values. Session overrides reset when the session ends; they don’t persist to config.

System events

Exec lifecycle appears as system messages in your session:
  • Exec running — emitted if the command runs longer than approvalRunningNoticeMs (default 10 s)
  • Exec finished — command completed
  • Exec denied — blocked by policy or explicit denial

Quick config reference

Examples

Foreground:
Background + poll:
Related: Exec Approvals (admin) · Sandboxing