| name | acp |
| description | Spawn external coding agents via the Agent Client Protocol (ACP) |
| compatibility | Designed for Vellum personal assistants |
| metadata | {"emoji":"🔗","vellum":{"display-name":"ACP","activation-hints":["User wants to delegate a coding task to Claude Code, Codex, or another ACP agent","User wants to spawn an external coding agent that runs autonomously and streams results back","User mentions ACP, claude-agent-acp, codex-acp, or running multiple coding agents in parallel"],"avoid-when":["Task is small enough to do inline with the assistant's own tools — no need for an external agent"]}} |
ACP agent orchestration - spawn external coding agents (Claude Code, Codex, etc.) to work on tasks via the Agent Client Protocol. Each agent runs as its own subprocess speaking ACP over stdio and streams results back into the conversation.
Usage
Use acp_spawn to delegate a coding task to an external agent. The agent runs as a subprocess speaking the ACP protocol over stdio and streams results back.
First-time setup
When the user first tries to use ACP and it's not configured, set it up automatically:
-
Check if claude-agent-acp is installed by running which claude-agent-acp. If not found, install it:
npm i -g @agentclientprotocol/claude-agent-acp
-
Enable ACP in the workspace config by editing the config file to add the acp section. Default profiles for claude and codex ship out-of-box, so the minimal config is just:
{
"acp": {
"enabled": true,
"maxConcurrentSessions": 4
}
}
-
Wait a few seconds for the config watcher to pick up the change (it hot-reloads automatically - no restart needed).
-
Then retry the acp_spawn call. Do NOT run vellum sleep && vellum wake - that kills the conversation.
Codex setup
To use Codex via ACP, both the codex-acp adapter and the underlying codex CLI must be on PATH:
-
Install the ACP adapter:
npm i -g @zed-industries/codex-acp
This provides the codex-acp binary that the assistant spawns.
-
Install the Codex CLI (version 0.111 or higher) via OpenAI's distribution channel of choice. The codex-acp adapter shells out to codex under the hood and will fail if it isn't on PATH.
-
Authenticate. The codex-acp adapter inherits whatever auth the underlying codex CLI uses. Typical flows:
codex login (OAuth)
CODEX_API_KEY environment variable
OPENAI_API_KEY environment variable
If codex-acp isn't on PATH when the user asks for it, the assistant will surface the install hint via acp_list_agents.
Critical: correct agent command
claude-agent-acp and codex-acp are the two supported adapter binaries today. They are what speak the ACP JSON-RPC protocol.
- NEVER use
claude, claude -p, claude --acp, the bare codex CLI, or any other command as the ACP command. Only the dedicated *-acp adapters speak the protocol.
- Default profiles for
claude and codex ship out-of-box. Users only need an agents.<id> entry in config if they want to override the defaults (e.g. point to a custom binary path or pass extra args).
- NEVER change an existing ACP config to use a different command. If the config already has
claude-agent-acp or codex-acp, leave it alone.
Updating the adapter
If acp_spawn reports that an adapter is outdated, ask the user before updating. To update:
npm i -g @agentclientprotocol/claude-agent-acp@latest
npm i -g @zed-industries/codex-acp@latest
Then retry the acp_spawn call.
When to use acp_steer vs acp_spawn
acp_steer interrupts the in-flight prompt. Use it to course-correct a running agent ("stop, do X instead"). It cancels whatever the agent is currently working on and replaces it with the new instruction.
- For follow-ups after the current task ("also do Y when you're done"), do NOT use
acp_steer. Wait for the acp_session_completed notification and call acp_spawn again with the new task. Queued follow-ups in the same session are not yet supported.
Discoverability
Use acp_list_agents to see what's set up and what's missing. It returns each available agent profile, whether ACP is enabled, whether the agent's binary is on PATH, and an install hint if not. This is the right tool to call when deciding between claude and codex, or when the user asks "what coding agents do I have?"
Working directory
Default to the conversation's current working directory when spawning an agent. For risky changes or parallel work where you don't want the agent touching the same checkout the user is editing, create a git worktree first via the shell tool and pass that worktree path as cwd to acp_spawn. That keeps the agent isolated from the user's in-progress work.
Tips
- The spawned agent runs autonomously with its own tools, file editing, and terminal access.
- Results are streamed back and injected into the conversation when the agent completes.
- Use
acp_status to check on running agents and acp_abort to stop them.
- The
cwd parameter controls where the agent works - set it to the project root the user wants the agent to operate in.