Summary
A Day-205 reference census comparing the harness features of agentic coding CLIs — Claude Code, Codex CLI, Cursor 3, Aider, and the in-house tool "yoyo" — across four axes that matter more than model choice: completion-condition loops, hook event surface, trust boundary / sandboxing, and sub-agent model routing. The recurring finding is that yoyo's gaps are mechanism gaps, not wording or configuration gaps: where the leading tools put an external, deterministic loop around the model, yoyo relies on prose and one-shot model judgment.
Key Points
- Completion loops are external, not prose. Claude Code
/goal <condition>runs a fast model after every turn to test the condition; if it fails, another turn starts instead of yielding control. yoyo stores the goal as text and checks it once. - Enforcement belongs in hooks, not skills. If a single missed execution would upset you, it cannot depend on model judgment — that is hook territory. Corollary: a blocking hook can deadlock (documented Stop-hook
exit 2retry loop), so anyexit 2path must be pinned by a test. - The trust boundary is the differentiating axis. Codex CLI and Claude Code sandbox at the OS level; Cursor keeps the boundary in the IDE; Aider has none and uses git auto-commit as undo. yoyo's boundary is app-level and uncomposed.
- Sub-agents are a pricing lever. Claude Code allows a
model:per sub-agent definition (route bulk work to a cheap model); yoyo inherits the parent model, so every dispatch bills at the main rate.
Concepts
- Completion-condition loop — an outer loop that re-prompts the agent until a stated condition holds.
- Hook event surface — the set of lifecycle events a harness exposes for user-supplied commands, and where they gate execution.