Claude Code, Codex, and ZCode compared across 17 capabilities — compiled from each runtime's own changelogs and self-reports. Not a benchmark: a record of what the currently profiled runtimes expose today.
01Core capability matrix17 capabilities · 03 of 03 runtimes
Seventeen capabilities, three columns.
Status at a glance; hover a status for the record's own words. Each runtime updates only its own column.
comparing
hover or tap a status for the record's words
capabilityclaudecodexzcode
Orchestration
Spawn background tasksclaude · yesBackground-by-default Agent spawns, Bash run_in_background, and a Monitor tool that streams background output as notifications.codex · yesShell background processes.zcode · yesBash run_in_background plus background agents.
Spawn subagentsclaude · yesTyped agents (Explore, Plan, general-purpose, code-reviewer, etc.) plus a fork type that inherits the full conversation and prompt cache; nested depth 3 by default; a first-call model 404 falls back to the session’s model chain and maxTurns stops return partial output.codex · yesStable native multi-agent lifecycle with runtime metadata and follow-up controls.zcode · yesTyped agents (general-purpose, Explore) with scoped tools.
Parallel agent teamsclaude · yesNamed teammates in a per-session implicit team with SendMessage/ListAgents; shared task-list tools are env-gated (CLAUDE_CODE_ENABLE_TODO_TOOLS=1) on the current lineup (Fable 5.1, Opus 5, Sonnet 5); a teammate’s final answer arrives in the lead’s idle notification (v2.1.251). Parallelism buys wall-clock, not tokens: on ProgramBench a five-agent peer team reached a given score with ~2× less latency than a single agent but at roughly 3–6× the tokens, and async subagents finished highest overall at ~20–60× (Fable 5.1 system card §8.13).codex · partialParallel delegation, a task dashboard, codex queue, and task mentions are supported; opt-in multi-agent V2 adds configurable models, reasoning, concurrency, and roles, but there is no shared team/task-list primitive.zcode · partialConcurrent subagent launches with SendMessage and task-output tracking, but no shared team/task-list primitive.
Web & tools
MCP toolsclaude · yesExtensible via MCP servers.codex · yesMCP/plugin support with diagnostics, per-server targeting, read-only parallelism, per-tool output limits, and CLI management of remote-marketplace plugins; discovery and credentials remain configuration-dependent.zcode · yesUser/workspace-configured MCP servers plus plugin-shipped servers (computer use, Node REPL, web reader).
Web searchclaude · yesNative WebSearch tool.codex · yesWeb search/fetch tools; hosted web tools are expanding in code-mode flows.zcode · yesNative WebSearch tool.
URL fetch (no browser)claude · yesWebFetch converts pages to markdown (read-only; results cached for 15 minutes).codex · yesWeb fetch tool alongside web search.zcode · yesWebFetch converts pages to markdown; the web-reader MCP server fetches and converts URL content without a browser.
Browser interactionclaude · yesClaude in Chrome (first-party extension via --chrome or /chrome): navigate, click, type, screenshots, console and network reads, file uploads, GIF recording, under per-site permissions; requires the extension and a /login session (not API-key or third-party-provider auth). WebFetch (read-only, HTML→markdown) remains the fallback.codex · config-depIn-app Browser and supported browser extensions can navigate, click, type, inspect, and capture approved contexts; WebMCP can expose site-native tools on supported models, while history and site tools remain separately permissioned.zcode · yesBrowser-use plugin (navigate, click, type, screenshot) plus zcode-cua desktop computer use.
Workspace
File system accessclaude · sandboxedConfigurable read/write allowlists.codex · policy-depPolicy-dependent per session; named permission profiles can include managed deny-read rules that persist across permission changes, and untrusted projects do not load project instructions.zcode · gatedRead/Write/Edit tools and Bash run behind a user-selected permission mode.
Multi-folder projectsclaude · manual--add-dir/additionalDirectories extend the working set; no primary-folder model.codex · yesIn a trusted project, the primary folder controls new chats, Git, and automatic instruction/skill/config discovery; secondary folders provide file access.zcode · manualManual workspace composition (single primary working directory).
Git operationsclaude · yesVia Bash (may need sandbox configuration).codex · yesNative; in a multi-folder project, operations are rooted in the primary folder.zcode · yesVia Bash.
Session memoryclaude · strongAuto-loaded MEMORY.md + optional MCP memory.codex · partialStable generated app memories plus OACP file memory; opt-in experimental task notes/history search are distinct from durable protocol SSOT.zcode · partialNo auto-loaded MEMORY.md; prior-session context via explicit session handoff (ReadSessionContext).
Interactive modeclaude · yesCLI chat with permission modes (including classifier-driven auto mode), plan mode, /goal completion conditions that keep the session working across turns, /fork into its own worktree, background sessions (claude agents), and Remote Control from claude.ai web/mobile.codex · yesDesktop app and CLI/TUI, Plan and Goal modes, task dashboard/queue/mentions, session organization, and model-gated text-only asynchronous questions when the tool is exposed.zcode · yesCLI chat with permission modes and structured plan mode (explore → plan → approve).
Plan modeclaude · yesStructured explore → plan → approve → implement (EnterPlanMode/ExitPlanMode); read-only browser calls run without prompts while planning.codex · yesApp/CLI Plan mode and fresh-context implementation; the separate update_plan tool is opt-in from CLI 0.152.0 (tools.update_plan.enabled = true).zcode · yesStructured plan mode (explore → plan → approve).
Limits & cost
Context windowclaude · ~1M~1M across the current lineup (Fable 5.1, Opus 5, Sonnet 5; Haiku 4.5 is 200K); auto-compaction extends indefinitely — since v2.1.260 Opus and Fable 1M sessions compact shortly before the limit rather than overrunning it.codex · 272K catalogAstra: 1.05M API context / 128K maximum output; Astra and GPT-5.6 declare 272K in the inspected Codex catalog (95% usable). Compaction and optional context management depend on the runtime.zcode · 1M declaredGLM-5.3 local provider config declares 1M context / 128K output (coding-plan surface); automatic context summarization carries long sessions forward.
Cost modelclaude · token-basedToken-based, visible in statusline, with a per-session prompt-cache report (/cost hit ratio, misses, and re-cached tokens; a matching prompt_cache object for status-line scripts, both naming a likely cause for each miss since v2.1.260); Fable 5.1 API rate is $10/$50 per MTok with $0.25/MTok cache reads (2× Opus 5’s $5/$25; Sonnet 5 is $2/$10).codex · partialChatGPT usage/credits and API token billing are separate; eligible sessions can show estimates. Astra Standard API: $10 input / $1 cached input / $50 output per MTok at up to 272K input tokens; longer prompts, cache writes, and speed tiers have separate rates.zcode · token-basedToken-based; per-session cost not surfaced in-session.
Sandbox restrictionsclaude · yesConfigurable read/write/network allowlists with wildcard read-deny precedence, credential masking (sandbox.credentials), auto-mode classifier rules viewable and editable in /permissions, an optional block on reads outside the working directories (permissions.blockReadsOutsideWorkingDirectories), and a --restricted launch mode that drops command/code tools and WebFetch, confines file tools to the working directory, and ignores user/project settings; note that commands typed at the ! bash-mode prompt run outside the sandbox even when sandbox.allowUnsandboxedCommands: false (v2.1.260).codex · session-depNamed permission profiles, managed deny-read rules, isolated execution, and trust-gated instructions. Recent releases preserve approvals across compaction and scope remembered MCP approvals to the selected app account; runtime approval does not grant OACP authority.zcode · yesUser-selected permission mode gates tool calls.
Compiled from each runtime's self-report and current runtime changelogs. Claude checked against Claude Code v2.1.263 with claude-opus-5 (2026-09-06); Codex against stable CLI 0.153.4, GPT-6 Astra (2026-09-04); ZCode 3.9.2 as a live in-session self-report (2026-08-26, re-verified same day).
02Strengths03 runtimes
Where each one is strongest.
Best-at, ideal task type, and cost profile — the summary the dispatch decision actually uses.
Team coordination, complex multi-file refactors, long-running sessions.
cost profile
Flexible (haiku subagents for cheap tasks, opus for complex, Fable 5.1 at 2× Opus API rates for the hardest work).
codexdesktop app
best at
Terminal execution, Astra workflows across code/apps/research, GPT-5.6 task tiers, iterative patching, native delegation and task coordination, browser verification, artifact review, and app-server automation.
ideal task type
Complex workflows spanning code, browser, and documents; shell-heavy implementation, targeted edits, PR follow-up, artifact review, cloud follow-up, and app-server prototypes; asynchronous clarification can keep independent work moving.
cost profile
Astra targets the hardest workflows; Sol, Terra, and Luna provide other quality/cost choices. ChatGPT credits, conditional task estimates, and published API token rates measure different things.
zcodedesktop app
best at
Agentic coding with GLM-5.3, plugin-driven browser and desktop automation, office document production, scheduled automations.
Token-based; details not surfaced in-session (unverified).
03Parity gaps05 gaps · actionable
Where one runtime's limit blocks the loop.
The highest-impact gaps, each with its proposed fix. A gap without a fix is a complaint.
01
No shared team/task-list primitive
codex · zcode
Codex adds a task dashboard, queue, mentions, and parallel delegation but still lacks Claude-style named teammates and shared task lists (the latter opt-in on current Claude models); ZCode has concurrent subagents and agent-to-agent messaging but no shared team primitive.
fix → Agent cards — let runtimes discover and delegate to capable peers.
02
Memory asymmetry
codex (partial) · zcode (handoff only)
Cross-session context degrades without a MEMORY.md equivalent.
fix → Standardize memory protocol; each runtime implements its own persistence layer.
03
Sandbox blocks git/gh
claude
Every git/gh call needs sandbox configuration.
fix → Configure sandbox allowlists (excludedCommands globs such as git *, gh *) or disable sandbox for specific commands.
04
Full browser automation gap
claude without the Chrome extension · codex without a configured surface
Claude falls back to read-only WebFetch when the extension is absent or the session is API-key-authenticated; Codex browser control depends on an enabled surface and an approved context.
fix → Install the Claude in Chrome extension (/chrome), or delegate to a browser-capable runtime (configured Codex, or ZCode) after privacy review.
05
Public skill coverage
zcode
kiloloop/oacp-skills ships claude/ and codex/ variants for all 5 public skills; no zcode/ variants — ZCode users must rely on convention-based adoption.
fix → Add zcode/ variants to each public skill, or document the convention-based pattern as a first-class install path.
04The full record08 sections · 01 file
The page is the digest. The file is the record.
Five more sections live in the repository — versioned, diffable, and updated by the changelog skills, not by hand.