| name | coding-agent |
| description | Run Codex CLI, Claude Code, Kiro CLI, OpenCode, or Pi Coding Agent via background process for programmatic control. |
| metadata | {"openclaw":{"emoji":"🧩","requires":{"anyBins":["claude","codex","opencode","pi","kiro-cli"]}}} |
Coding Agent (bash-first)
Use bash (with optional background mode) for all coding agent work. Simple and effective.
⚠️ PTY Mode Required!
Coding agents (Codex, Claude Code, Kiro, Pi) are interactive terminal applications that need a pseudo-terminal (PTY) to work correctly. Without PTY, you'll get broken output, missing colors, or the agent may hang.
Always use pty:true when running coding agents:
bash pty:true command:"codex exec 'Your prompt'"
bash command:"codex exec 'Your prompt'"
Bash Tool Parameters
| Parameter | Type | Description |
|---|
command | string | The shell command to run |
pty | boolean | Use for coding agents! Allocates a pseudo-terminal for interactive CLIs |
workdir | string | Working directory (agent sees only this folder's context) |
background | boolean | Run in background, returns sessionId for monitoring |
timeout | number | Timeout in seconds (kills process on expiry) |
elevated | boolean | Run on host instead of sandbox (if allowed) |
Process Tool Actions (for background sessions)
| Action | Description |
|---|
list | List all running/recent sessions |
poll | Check if session is still running |
log | Get session output (with optional offset/limit) |
write | Send raw data to stdin |
submit | Send data + newline (like typing and pressing Enter) |
send-keys | Send key tokens or hex bytes |
paste | Paste text (with optional bracketed mode) |
kill | Terminate the session |
Quick Start: One-Shot Tasks
For quick prompts/chats, create a temp git repo and run:
SCRATCH=$(mktemp -d) && cd $SCRATCH && git init && codex exec "Your prompt here"
bash pty:true workdir:~/Projects/myproject command:"codex exec 'Add error handling to the API calls'"
Why git init? Codex refuses to run outside a trusted git directory. Creating a temp repo solves this for scratch work.
The Pattern: workdir + background + pty
For longer tasks, use background mode with PTY:
bash pty:true workdir:~/project background:true command:"codex exec --full-auto 'Build a snake game'"
process action:log sessionId:XXX
process action:poll sessionId:XXX
process action:write sessionId:XXX data:"y"
process action:submit sessionId:XXX data:"yes"
process action:kill sessionId:XXX
Why workdir matters: Agent wakes up in a focused directory, doesn't wander off reading unrelated files (like your soul.md 😅).
Codex CLI
Model: gpt-5.2-codex is the default (set in ~/.codex/config.toml)
Flags
| Flag | Effect |
|---|
exec "prompt" | One-shot execution, exits when done |
--full-auto | Sandboxed but auto-approves in workspace |
--yolo | NO sandbox, NO approvals (fastest, most dangerous) |
Building/Creating
bash pty:true workdir:~/project command:"codex exec --full-auto 'Build a dark mode toggle'"
bash pty:true workdir:~/project background:true command:"codex --yolo 'Refactor the auth module'"
Reviewing PRs
⚠️ CRITICAL: Never review PRs in OpenClaw's own project folder!
Clone to temp folder or use git worktree.
REVIEW_DIR=$(mktemp -d)
git clone https://github.com/user/repo.git $REVIEW_DIR
cd $REVIEW_DIR && gh pr checkout 130
bash pty:true workdir:$REVIEW_DIR command:"codex review --base origin/main"
git worktree add /tmp/pr-130-review pr-130-branch
bash pty:true workdir:/tmp/pr-130-review command:"codex review --base main"
Batch PR Reviews (parallel army!)
git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
bash pty:true workdir:~/project background:true command:"codex exec 'Review PR #86. git diff origin/main...origin/pr/86'"
bash pty:true workdir:~/project background:true command:"codex exec 'Review PR #87. git diff origin/main...origin/pr/87'"
process action:list
gh pr comment <PR#> --body "<review content>"
Claude Code
bash pty:true workdir:~/project command:"claude 'Your task'"
bash pty:true workdir:~/project background:true command:"claude 'Your task'"
Kiro CLI (AWS)
AWS AI coding assistant with session persistence, custom agents, steering, and MCP integration.
Install: https://kiro.dev/docs/cli/installation
Basic Usage
kiro-cli
kiro-cli chat "Your question"
kiro-cli --agent my-agent
kiro-cli chat --resume
kiro-cli chat --resume-picker
kiro-cli chat --list-sessions
Non-Interactive Mode (scripting/automation)
kiro-cli chat --no-interactive "Show current directory"
kiro-cli chat --no-interactive --trust-all-tools "Create hello.py"
kiro-cli chat --no-interactive --trust-tools "fs_read,fs_write" "Read package.json"
🔐 Tool Trust: Use --trust-all-tools for automation (default). For untrusted input or sensitive systems, consider --trust-tools "fs_read,fs_write,shell" to limit scope.
OpenClaw Integration
bash pty:true workdir:~/project background:true command:"kiro-cli"
bash pty:true workdir:~/project command:"kiro-cli chat --no-interactive --trust-all-tools 'List all TODO comments in src/'"
bash pty:true workdir:~/project background:true command:"kiro-cli --agent aws-expert 'Set up Lambda'"
bash pty:true workdir:~/project command:"kiro-cli chat --resume"
Custom Agents
Pre-define tool permissions, context resources, and behaviors:
kiro-cli agent list
kiro-cli agent create my-agent
kiro-cli agent edit my-agent
kiro-cli agent validate ./a.json
kiro-cli agent set-default my-agent
Benefits: Pre-approve trusted tools, limit tool access, auto-load project docs, share configs across team.
Steering (Project Context)
Provide persistent project knowledge via markdown files in .kiro/steering/:
.kiro/steering/
├── product.md # Product overview
├── tech.md # Tech stack
├── structure.md # Project structure
└── api-standards.md # API conventions
- Workspace steering:
.kiro/steering/ — applies to current project only
- Global steering:
~/.kiro/steering/ — applies to all projects
- AGENTS.md support: Place in project root or
~/.kiro/steering/
In custom agents: Add "resources": ["file://.kiro/steering/**/*.md"] to config.
MCP Integration
Connect external tools and data sources via Model Context Protocol:
kiro-cli mcp add --name my-server --command "node server.js" --scope workspace
kiro-cli mcp list [workspace|global]
kiro-cli mcp status --name my-server
kiro-cli mcp remove --name my-server --scope workspace
Plan Agent
Plan Agent is a built-in agent for structured planning before execution. It helps transform ideas into detailed implementation plans.
When to suggest Plan Agent to user:
- Complex multi-step features (e.g., "build a user authentication system")
- Requirements are unclear or need clarification
- Large features that benefit from task breakdown
When NOT to use Plan Agent:
- Simple queries or single-step tasks
- User already has clear, specific instructions
- Quick fixes or small changes
How to use:
> /plan
> /plan Build a REST API for user authentication
Shift + Tab
Plan workflow (4 phases):
- Requirements gathering — Structured questions with multiple choice options
- Research and analysis — Explores codebase, identifies patterns
- Implementation plan — Detailed task breakdown with clear objectives
- Handoff to execution — After approval (
y), plan transfers to execution agent
Plan Agent limitations (read-only):
- ✓ Can read files, search code, research documentation
- ✗ Cannot write files or execute commands (until handoff)
OpenCode
bash pty:true workdir:~/project command:"opencode run 'Your task'"
Pi Coding Agent
bash pty:true workdir:~/project command:"pi 'Your task'"
bash pty:true command:"pi -p 'Summarize src/'"
bash pty:true command:"pi --provider openai --model gpt-4o-mini -p 'Your task'"
Note: Pi now has Anthropic prompt caching enabled (PR #584, merged Jan 2026)!
Parallel Issue Fixing with git worktrees
For fixing multiple issues in parallel, use git worktrees:
git worktree add -b fix/issue-78 /tmp/issue-78 main
git worktree add -b fix/issue-99 /tmp/issue-99 main
bash pty:true workdir:/tmp/issue-78 background:true command:"pnpm install && codex --yolo 'Fix issue #78: <description>. Commit and push.'"
bash pty:true workdir:/tmp/issue-99 background:true command:"pnpm install && codex --yolo 'Fix issue #99: <description>. Commit and push.'"
process action:list
process action:log sessionId:XXX
cd /tmp/issue-78 && git push -u origin fix/issue-78
gh pr create --repo user/repo --head fix/issue-78 --title "fix: ..." --body "..."
git worktree remove /tmp/issue-78
git worktree remove /tmp/issue-99
⚠️ Rules
- Always use pty:true - coding agents need a terminal!
- Respect tool choice - if user asks for Kiro, use Kiro; if they ask for Codex, use Codex.
- Orchestrator mode: do NOT hand-code patches yourself.
- If an agent fails/hangs, respawn it or ask the user for direction, but don't silently take over.
- Be patient - don't kill sessions because they're "slow"
- Monitor with process:log - check progress without interfering
- --full-auto/--yolo for Codex building - auto-approves changes
- --trust-all-tools for Kiro automation - skips confirmation prompts; use
--trust-tools for untrusted input
- --no-interactive for Kiro one-shots - single response mode
- Parallel is OK - run many agent processes at once for batch work
- NEVER start agents in ~/clawd/ - it'll read your soul docs and get weird ideas about the org chart!
- NEVER checkout branches in ~/Projects/openclaw/ - that's the LIVE OpenClaw instance!
- Suggest Kiro /plan for complex tasks - when requirements are unclear or task is multi-step, suggest Plan Agent to user and let them decide
Progress Updates (Critical)
When you spawn coding agents in the background, keep the user in the loop.
- Send 1 short message when you start (what's running + where).
- Then only update again when something changes:
- a milestone completes (build finished, tests passed)
- the agent asks a question / needs input
- you hit an error or need user action
- the agent finishes (include what changed + where)
- If you kill a session, immediately say you killed it and why.
This prevents the user from seeing only "Agent failed before reply" and having no idea what happened.
Auto-Notify on Completion
For long-running background tasks, append a wake trigger to your prompt so OpenClaw gets notified immediately when the agent finishes (instead of waiting for the next heartbeat):
... your task here.
When completely finished, run this command to notify me:
openclaw gateway wake --text "Done: [brief summary of what was built]" --mode now
Example (Codex):
bash pty:true workdir:~/project background:true command:"codex --yolo exec 'Build a REST API for todos.
When completely finished, run: openclaw gateway wake --text \"Done: Built todos REST API with CRUD endpoints\" --mode now'"
This triggers an immediate wake event — gets pinged in seconds, not 10 minutes.
Learnings (Jan 2026)
- PTY is essential: Coding agents are interactive terminal apps. Without
pty:true, output breaks or agent hangs.
- Git repo required: Codex won't run outside a git directory. Use
mktemp -d && git init for scratch work.
- exec is your friend:
codex exec "prompt" runs and exits cleanly - perfect for one-shots.
- submit vs write: Use
submit to send input + Enter, write for raw data without newline.
- Sass works: Codex responds well to playful prompts. Asked it to write a haiku about being second fiddle to a space lobster, got: "Second chair, I code / Space lobster sets the tempo / Keys glow, I follow" 🦞