Choosing the coding-agent CLI your agents run
The five coding-agent CLIs CodeHerder can launch, what stays the same across all of them, and the four things that actually change when you switch.
A harness is the coding-agent CLI CodeHerder launches to do the work — Claude Code, Codex, Cursor, OpenCode, or Pi. Every agent’s launch config names one, and CodeHerder wraps it the same way regardless of which you pick: same sandbox, same stage machine, same briefs. But the harnesses themselves aren’t identical, and a few of the differences are worth knowing before you pick one.
Where you set it
In the web app, open an agent’s detail page and set Harness on a launch config — the Command field is derived automatically from your choice, so you don’t fill it in yourself. From the CLI:
ch agent config set <agent-id> --harness <harness>
The default is claude. Whichever harness you choose has to be installed and signed in on the device that runs the agent — see Managing your devices for the readiness and sign-in checks.
| Harness value | CLI launched |
|---|---|
claude |
claude (default) |
codex |
codex |
cursor |
cursor-agent |
opencode |
opencode |
pi |
pi |
For every flag config set and config add accept, see Choosing a harness in Agents and the CLI.
What’s the same whichever you pick
- Every session runs in its own sandbox — an isolated git worktree and branch, so parallel tasks never collide.
- Every session follows the same stage machine and receives the same task brief, persona, and system prompt.
- Every session can recall the workspace’s shared memory.
- Skills delivery works for all five, with one nuance for Pi — see Delivering skills to your agents.
What changes when you switch
Where the work can be placed
Codex, Cursor, OpenCode, and Pi each require CodeHerder to have detected that specific CLI on a device before it will place a task there. Claude is the one exception: it’s the universal default, so a Claude agent isn’t limited to specially-detected devices. A device only picks up Codex, Cursor, OpenCode, or Pi work once CodeHerder has confirmed that CLI is present — see Managing your devices for how a device reports what it has installed.
Whether the session’s spend is recorded
Claude, Codex, OpenCode, and Pi sessions all report spend, and it rolls up into your costs and spend caps as usual. Cursor sessions don’t report spend yet — a Cursor-run session shows $0 in Understanding costs, and because spend caps act on recorded spend, neither the per-agent daily cap nor the per-task total cap can ever trip on Cursor’s own usage. If you’re relying on spend caps to bound cost, keep Cursor agents off tasks where that matters, or pair them with a different harness for cost-sensitive work.
Whether the agent continues its own conversation on rework
When a stage runs again — for example, review sends a task back for changes — Claude and Pi agents pick up the same conversation they had last time, with their prior reasoning intact. Codex, Cursor, and OpenCode agents start a fresh conversation instead: they work from the task, its comments, any hand-off notes, and the code already on the branch, which covers the same ground but without the prior turn-by-turn context.
Model choice and subscription pauses
Choosing a model by tier (model:opus, model:sonnet, and so on) only applies to the Claude harness — see Which model your agents run. The automatic pause when a device’s AI subscription runs out of usage also keys on a Claude subscription signal specifically — see AI usage limits.
Running more than one harness for an agent
An agent can carry more than one launch config, each with its own harness — useful for a primary harness with a fallback, or a different harness per stage. See Running more than one launch config in Agents and the CLI.
Switching an existing agent’s harness
ch agent config set replaces most of a launch config’s fields with exactly what you provide on that call — but --harness is one of the exceptions: omit it and the config keeps its current value. See What config set replaces vs. preserves in Agents and the CLI before you change one field on a config you don’t want to reset entirely.
Related guides
- Agents and the CLI — creating and configuring agents, launch configs, and the full flag reference
- Understanding costs — how spend is tracked and which sessions report it
- Spend limits — per-agent and per-task spend caps
- Managing your devices — device readiness checks, including Harness ready and Harness auth
- Why isn’t my task moving? — diagnosing a device stuck on a sign-in or readiness check
- Which model your agents run — tier-based model routing on the Claude harness
- AI usage limits — the Claude-subscription pause
- Delivering skills to your agents — how skills reach each harness
