Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Agent Comparison

Capstone reference — synthesizing findings from all prior chapters into quick-lookup tables and per-agent profiles.

Overview Matrix

AgentLanguageInterfaceTool ProtocolSession StorageEdit StrategySubagents
CodexRustCLI/TUI (ratatui)CustomJSONLDiff/PatchNo
ClineTypeScriptVS Code + CLICustom(IDE-managed)Exact match + PatchYes (team)
GooseRustCLI + ElectronMCP-nativeSQLite v15Extension-dependentYes (bounded, depth=1)
Grok BuildRustTUI (ratatui, out-of-process)Custom + MCPSQLite (WAL)Hashline / Exact matchYes (goal pipeline)
Kimi CodeTypeScriptCLI/TUI + WebCustom (kap-server)JSONL (wire)DynamicYes (host+batch)
OpenCodeTypeScriptTUI (opentui/Solid) + DesktopCustom + MCPSQLite (Drizzle)Exact matchYes (sub-session)
KilocodeTypeScriptTUI + VS Code + JetBrainsCustom + MCPSQLite (Drizzle)Exact matchYes (sub-session)
PiTypeScriptCLI/TUI (custom diff-render)CustomJSONL (tree)Exact matchNo
Qwen CodeTypeScriptCLI/TUI (ink/React)Custom + MCPJSONLExact matchYes (arena/team/workflow)
OpenHandsPythonWebMCP(server DB)(CodeActAgent)Microagents

Dimensional Comparison

Permission & Safety (Ch. 07)

AgentLLM Classifier?Fast PathFail-Closed?
GooseYes (single-stage)ToolAnnotations.read_only_hintYes
Grok BuildYes (behind heuristic pre-pass)Deterministic heuristic + allowlistsYes
Qwen CodeYes (two-stage)Stage 1 cheap booleanYes
CodexNois_known_safe_command() allowlistYes
OpenCode/KilocodeNoGlob-matched static rulesYes
ClineNoMode presets remove tools structurallyN/A

Orchestration (Ch. 08)

AgentParadigmConcurrencyResume?
Qwen CodeJS workflow DSL (Turing-complete)16 concurrent, 1000 totalYes (journal replay)
GooseDeclarative YAML recipes5 concurrent delegatesNo (restart from scratch)
Grok BuildHarness-driven goal state machine1–5 skeptics parallelYes (state.json, manual)
Kimi CodeFlat spawn/batchRamp of 5 + 1/700msYes (resume by agentId)

Multi-File Atomicity (Ch. 09)

AgentBatch Primitive?Validate-Before-Write?Rollback?
CodexYes (apply_patch)Yes (full pre-flight)No
Grok BuildSingle-file onlyYes (in-memory compute)N/A (true atomic per-file)
Qwen CodeWorktree isolationN/ADiscard worktree
OpenCode/KilocodeYes (apply_patch)Parse-level onlyNo (documented gap)
Pi / GooseSequential callsNoNo

MCP Integration (Ch. 12)

AgentMCP RoleTransportsDiscoveryAuto-Restart
GooseAll tools via MCPstdio/SSE/HTTPEagerYes (extension lifecycle)
Grok BuildAlongside built-insstdio/SSE/HTTPEager + meta-toolsYes (3 retries + backoff)
Qwen CodeAlongside built-insstdio/SSE/HTTPDeferred (tool-search)Yes (health polling)
CodexClient + Serverstdio/HTTPPrewarmed + cachedBest-effort
ClineAlongside built-insstdio/SSE/HTTPEagerNo (stdio); Yes (HTTP)

Error Recovery (Ch. 11)

AgentTurn CapLoop DetectionRecovery
Goose1000RepetitionInspector (disabled)Stop-hook denial; retry resets conversation
Grok BuildToken budgetStall counter + gap fingerprintStrategist subagent; auto-pause
Qwen Code1000 agents / 30minStall watchdog (60s)Abort workflow
CodexNone (token budget optional)Guardian denial breaker onlyModel self-corrects
Kilocode25 stepsCompaction-attempt cap (3)StepLimitExceededError
OpenCodeInfinity (configurable)None (TODO in source)Forced text-only turn

TUI Rendering (Ch. 13)

AgentFrameworkProcess ModelCancel Mechanism
Grok BuildratatuiOut-of-process (ACP)Protocol message
CodexratatuiIn-process (tokio)InterruptManager RPC
Qwen Codeink (React)In-processAbortController
OpenCodeopentui (Solid)In-processContext/provider abort
PiCustom diff-renderIn-processKeybinding-routed
GooseStyled stdoutIn-processctrl_c() race in select!
ClineVS Code webviewExtension hostpostMessage cancel

Per-Agent Profiles

Codex (OpenAI)

  • Philosophy: Minimal tool surface, maximum model intelligence
  • Unique strengths: Custom apply_patch diff language (multi-file in one call), prompt cache prewarm, Starlark-based exec policy, self-as-MCP-server mode
  • Weaknesses: No turn limits, no doom-loop detection, relies entirely on model judgment + compaction
  • Crate count: ~15

Cline

  • Philosophy: IDE-native, proactive parallelism
  • Unique strengths: YOLO mode (autonomous background), plan/act mode toggle, gRPC-style streaming to webview, per-tool MCP auto-approval UI
  • Weaknesses: No LLM safety classifier, auto-approves all shell commands by default, no auto-restart for crashed stdio MCP servers
  • Packages: SDK-based (shared, core, llms)

Goose (Block)

  • Philosophy: Extension-first, minimal core
  • Unique strengths: ALL tools via MCP (most modular), recipe/scheduler system with cron, LLM permission judge with prompt-injection defenses, stop-hook denial mechanism
  • Weaknesses: Retry silently disabled for cron-triggered recipes, SubRecipe.sequential_when_repeated declared but never enforced, no full TUI (styled stdout only)
  • Crate count: ~12

Grok Build (xAI)

  • Philosophy: Rich tool taxonomy, maximum robustness
  • Unique strengths: Hashline editing (anchor-based, atomic per-file), adversarial goal verification (skeptic panel), out-of-process TUI (ACP), imports Claude/Cursor MCP configs, most layered permission system (heuristic + LLM + policy), custom resilient MCP transport
  • Weaknesses: Largest codebase (~65 crates), CheckpointChain scheme unshipped, single-file-only atomicity
  • Crate count: ~65

Kimi Code (Moonshot)

  • Philosophy: Enterprise infrastructure, full observability
  • Unique strengths: DI service layer, transcript system with 4 granularity levels, rate-limit-aware batch scheduler (ramp + backoff + capacity recovery), subagent resume by ID
  • Weaknesses: No workflow DSL, no orchestration beyond spawn/batch, no filesystem isolation for subagents
  • Packages: ~12

OpenCode / Kilocode

  • Philosophy: Type-safe effects, composable services
  • Unique strengths: Effect-TS throughout, SystemContext registry, shadow-git checkpoint system (message-level undo), opentui/SolidJS renderer
  • Weaknesses: No LLM safety classifier, OpenCode has no step cap (Infinity default), apply_patch has no rollback (documented gap)
  • Relationship: Near-identical forks. Kilocode adds 25-step hard cap, compaction guard, VS Code + JetBrains extensions.
  • Packages: ~30+

Pi

  • Philosophy: Simplicity, hackability
  • Unique strengths: Smallest codebase with full agent capability, custom differential-rendering TUI, JSONL tree for session branching, cleanest prompt builder
  • Weaknesses: No orchestration, no MCP, no rollback, no loop detection, opt-in-only git checkpoint (example extension)
  • Packages: ~6

Qwen Code (Alibaba)

  • Philosophy: Feature maximalism, orchestration
  • Unique strengths: JS workflow DSL (sandboxed, resumable, budget-aware), arena/team multi-agent, deferred MCP tool discovery (tool-search), worktree isolation, two-stage permission classifier with anti-injection, largest tool count (~60+)
  • Weaknesses: Complexity (shared ancestor with OpenCode means inherited gaps), node:vm sandbox not fully hardened (no isolated-vm)
  • Lineage: Shares structure with OpenCode/Kilocode

OpenHands

  • Philosophy: Enterprise platform, integration-first
  • Unique strengths: Python, microagents with triggers, GitHub/GitLab/Jira/Slack integrations, web-first
  • Focus: PR automation, issue resolution — not interactive CLI