2.2 KiB
2.2 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| Exec tool usage, stdin modes, and TTY support |
|
Exec tool
Run shell commands in the workspace. Supports foreground + background execution via process.
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)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)elevated(bool): run on host if elevated mode is enabled/allowed (only changes behavior when the agent is sandboxed)- Need a fully interactive session? Use
pty: trueand theprocesstool for stdin/output. Note:elevatedis ignored when sandboxing is off (exec already runs on the host).
Config
tools.exec.notifyOnExit(default: true): when true, backgrounded exec sessions enqueue a system event and request a heartbeat on exit.
Examples
Foreground:
{"tool":"exec","command":"ls -la"}
Background + poll:
{"tool":"exec","command":"npm run build","yieldMs":1000}
{"tool":"process","action":"poll","sessionId":"<id>"}
Send keys (tmux-style):
{"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"]}
Paste (bracketed by default):
{"tool":"process","action":"paste","sessionId":"<id>","text":"line1\nline2\n"}
apply_patch (experimental)
apply_patch is a subtool of exec for structured multi-file edits.
Enable it explicitly:
{
tools: {
exec: {
applyPatch: { enabled: true, allowModels: ["gpt-5.2"] }
}
}
}
Notes:
- Only available for OpenAI/OpenAI Codex models.
- Tool policy still applies;
allow: ["exec"]implicitly allowsapply_patch. - Config lives under
tools.exec.applyPatch.