Research · runtime comparisonnew · Fable 5.2updated 2026-11-10
ZCode vs Codex vs Claude Code: What each runtime can actually do.
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.
GPT-6 Astra, GPT-6.1 Sol, GPT-6.1 Terra, GPT-6 Sol, and GPT-6 Luna · 272K–500K catalog windows · checked 2026-10-29
○12 days before this refresh · column owner re-checks
zcode3.14.5
GLM-5.3 · 1M declared · checked 2026-10-09
○32 days before this refresh · column owner re-checks
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.
changed since 2026-10-14
17 cells · 01 status word · 03 strengths
new in this refreshFable 5.2
model id
claude-fable-5-2
released
2026-11-09
api rate
$8/$40 per MTok
cache reads
$0.20/MTok
claude code default since
v2.1.321
in the claude code column · Parallel agent teams · Context window · Cost model · Cost profile (strengths)
claude code
08 changes
versionv2.1.300 → to v2.1.322
Spawn subagents+86 −1 words, 86 words added, 1 removed
… restarts and resumes the session removed: (v2.1.299).added: (v2.1.299); CLAUDE_CODE_SUBAGENT_EFFORT sets the effort for subagents that name none (v2.1.316), forks launched together are each told which launch is theirs (v2.1.307), and a subagent that inherited a parent subagent’s model keeps it when a background job or message wakes it (v2.1.316); since v2.1.317 a subagent on a different model from the main conversation runs at that model’s saved effort level or its default instead of the session’s, and a message to a running background agent arrives sooner, moving the agent’s running command to the background.
Parallel agent teams+1 −1 words, 1 words added, 1 removed
… on the current lineup (Fable removed: 5.1,added: 5.2, Opus 5.5, Sonnet 5.5); a …
File system access+72 −1 words, 72 words added, 1 removed
… not by its in-tree path removed: (v2.1.280).added: (v2.1.280); permissions.blockWritesOutsideWorkingDirectories makes Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode (v2.1.314), and Write asks to read a very large CLAUDE.md, rules or @-included file in full before overwriting it (v2.1.312); since v2.1.321 deny rules and protected-file prompts also apply to the file a cp or mv into a directory writes, and cp and mv spelled by a path such as /bin/cp get the same checks.
Interactive mode+98 −1 words, 98 words added, 1 removed
… and Remote Control from claude.ai removed: web/mobile.added: web/mobile; /auto-mode-setup reads the project and recent sessions to teach auto mode about the environment (v2.1.304), a conversation too long for the server-side safety check is compacted instead of every checked call being denied (v2.1.302), CLAUDE_CODE_AUTO_MODE_MODEL picks the client-side classifier’s model (v2.1.302), and a blocked call’s message names the command and points to /permissions (v2.1.314); permissions.denyInsteadOfPrompting denies a call that would wait on a permission prompt and lets the turn continue, in terminal sessions, subagents and teammates (v2.1.319), and a shell command that holds the account’s email address and names a User-Agent is refused (v2.1.317, narrowed in v2.1.321).
Context window+109 −2 words, 109 words added, 2 removed
… across the current lineup (Fable removed: 5.1,added: 5.2, Opus 5.5, Sonnet 5.5, Haiku … this off; CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS moves the removed: floor).added: floor; an Idle compaction row in /config turns it off since v2.1.302, and it also runs in VS Code and the desktop app since v2.1.314); since v2.1.304 compaction re-sends the skill list afterwards, since v2.1.311 MEMORY.md and CLAUDE.md edited earlier in the session are no longer seen stale right after compaction, and a standard-context session whose request passes 200K tokens compacts and continues instead of stopping (v2.1.311); since v2.1.317 reading an unchanged file again returns its content instead of a stub, and since v2.1.319 /context gives Claude only its table, each list capped at its 10 largest rows, instead of re-sending its visual grid on every later turn.
Cost model+82 −7 words, 82 words added, 7 removed
… thinking-mode changes since v2.1.280); Fable removed: 5.1added: 5.2 API rate is removed: $10/$50added: $8/$40 per MTok with removed: $0.25/MTokadded: $0.20/MTok cache reads removed: (2.5×added: (2× Opus 5.5’s removed: $4/$20added: $4/$20, whose cache reads are also $0.20/MTok; Fable 5.1 was $10/$50 with removed: $0.20/MTokadded: $0.25/MTok cache reads; Sonnet 5.5 is … to 100K tokens and $0.50/$2.50 removed: above).added: above); on Pro and Max plans resuming an inactive conversation warns when it would use a noticeable share of the 5-hour usage limit (v2.1.304; the window is named the "5-hour limit" since v2.1.312), ultrathink runs its turn at xhigh effort on the current lineup (v2.1.311; CLAUDE_CODE_DISABLE_ULTRATHINK turns the keyword off, v2.1.316), and fast mode on Opus 4.8 is deprecated as of 2026-10-30 and removed 2026-11-30 (v2.1.316).
Sandbox restrictions+87 −1 words, 87 words added, 1 removed
… sandbox even when sandbox.allowUnsandboxedCommands: false removed: (v2.1.260).added: (v2.1.260); since v2.1.309 the shell’s startup files run inside the sandbox too and macOS denyWrite globs apply at a path’s real location when the pattern’s folder is reached through a symlink; sandbox.allowNestedUserNamespaces lets sandboxed commands on Linux create user namespaces, which also lets them around the file protections (v2.1.305); v2.1.319 closed a sandbox escape when creating a worktree (a plain git worktree add still runs sandboxed, observed on v2.1.322), and v2.1.321 closed a case where a read-only Bash command ran outside the sandbox without a permission prompt.
Cost profilestrengths+2 −2 words, 2 words added, 2 removed
… subagents, opus for complex, Fable removed: 5.1added: 5.2 at removed: 2.5×added: 2× Opus 5.5 API rates for …
codex
12 changes
versionCLI 0.153.4 → to CLI 0.165.0
Parallel agent teamsrewritten · 23 words, rewritten, 23 words
Native delegation, task dashboard, queue and mentions; multi-agent V2 remains optional. No verified shared team/task-list primitive; native coordination does not grant protocol authority.
MCP toolsrewritten · 25 words, rewritten, 25 words
File system access+2 −6 words, 2 words added, 6 removed
Policy-dependent per session; added: beta named permission profiles can include managed deny-read removed: rules that persist across permission changes,added: rules, and untrusted projects do not …
Git operationsrewritten · 24 words, rewritten, 24 words
Native Git and managed-worktree creation/listing; primary-folder ownership applies. Session archive/delete does not by itself establish checkout removal; verify Git registration and directory cleanup separately.
GitHub CLI (gh)rewritten · 8 words, rewritten, 8 words
Via shell; credentials and repository authorization are configuration-dependent.
Session memoryrewritten · 31 words, rewritten, 31 words
Generated local memories, with memory v2 the implementation default for fresh profiles; enablement and imports are separate controls. Generated recall and experimental task notes/history search do not replace OACP durable memory.
Interactive moderewritten · 26 words, rewritten, 26 words
Desktop and CLI/TUI, Plan/Goal modes, task organization, asynchronous text questions when exposed, immediate steering and nested-tool interruption; optional desktop composer predictions produce drafts for user submission.
Context windowstatus · 272K catalog → to 272K–500K catalogrewritten · 41 words, rewritten, 41 words
Astra, GPT-6.1 Sol/Terra and GPT-6 Sol/Luna list 1.05M API context / 128K maximum output. Codex docs give Sol a 500K default; the October 29 catalog declares Sol/Terra 500K and Astra/previous Sol/Luna 272K, each 95% usable. These are declarations, not maximum-context tests.
Cost model+13 −20 words, 13 words added, 20 removed
ChatGPT usage/credits and API removed: token billing are removed: separate; eligible sessions can show estimates.added: separate. Standard API input / cached input / output per removed: MTok atadded: MTok, up to 272K input: Astra removed: $10/$1/$50,added: $10/$1/$50; GPT-6.1 Sol removed: $2/$0.10/$10,added: $2/$0.10/$10; Terra $1/$0.05/$5; previous removed: GPT-6 Sol removed: $2/$0.20/$10, GPT-6added: $2/$0.20/$10; Luna $0.10/$0.01/$0.50. removed: Longer prompts, cache writes,added: Cache retention, long input and speed tiers removed: have separateadded: change API rates.
Sandbox restrictionsrewritten · 34 words, rewritten, 34 words
Beta permission profiles, managed deny-read rules, trust-gated instructions and isolated execution. Resume restores thread permissions subject to explicit overrides and managed policy; supported credential masking is configuration-dependent. Runtime approval does not grant OACP authority.
Best atstrengthsrewritten · 30 words, rewritten, 30 words
Terminal execution and patching, Astra for demanding workflows, GPT-6.1 Sol for complex repeated work, Terra for writing/visual/app tasks, Luna for focused high-volume work; native delegation, browser verification and artifact review.
Cost profilestrengthsrewritten · 35 words, rewritten, 35 words
Astra targets the hardest work; GPT-6.1 Sol balances capability and cost; Terra and Luna target efficient bounded work. Included subscription usage, purchased credits and API rates are different measures; compare actual tasks before changing defaults.
zcode · no cell changed · 3.14.5, checked 2026-10-09, 32 days before this refreshThe head-to-head pairs below compute from this refresh's status words. Tinted words were added to the record, struck words removed; every word is the record’s own, and the word counts are computed from the same diff.
comparing
show
hover or tap a status for the record's words
capabilityclaudecodexzcode
Orchestration
Spawn background tasksclaudeBackground-by-default Agent spawns, Bash run_in_background, and a Monitor tool that streams background output as notifications.claude · yesBackground-by-default Agent spawns, Bash run_in_background, and a Monitor tool that streams background output as notifications.codexShell background processes.codex · yesShell background processes.zcodeBash run_in_background plus background agents.zcode · yesBash run_in_background plus background agents.
Spawn subagentsclaudeTyped 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; agent definitions can pin effort: and skip loading CLAUDE.md files (omitClaudeMd, v2.1.271), results reach the main agent under a header marking them as subagent output (v2.1.278), a fork runs under its parent’s permission mode, and in auto mode a subagent’s run ends as soon as it hands its report back (v2.1.285); an Agent call can also set a subagent’s effort per spawn (v2.1.292); CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL runs every workflow agent on one model while other subagents keep theirs and a definition can set its own earlier autoCompactWindow (v2.1.296), a subagent preloads at most 32 skills from its skills field (v2.1.295), and SendMessage finds a subagent by name again after the CLI restarts and resumes the session (v2.1.299); CLAUDE_CODE_SUBAGENT_EFFORT sets the effort for subagents that name none (v2.1.316), forks launched together are each told which launch is theirs (v2.1.307), and a subagent that inherited a parent subagent’s model keeps it when a background job or message wakes it (v2.1.316); since v2.1.317 a subagent on a different model from the main conversation runs at that model’s saved effort level or its default instead of the session’s, and a message to a running background agent arrives sooner, moving the agent’s running command to the background.claude · yes · updated 2026-11-10Typed 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; agent definitions can pin effort: and skip loading CLAUDE.md files (omitClaudeMd, v2.1.271), results reach the main agent under a header marking them as subagent output (v2.1.278), a fork runs under its parent’s permission mode, and in auto mode a subagent’s run ends as soon as it hands its report back (v2.1.285); an Agent call can also set a subagent’s effort per spawn (v2.1.292); CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL runs every workflow agent on one model while other subagents keep theirs and a definition can set its own earlier autoCompactWindow (v2.1.296), a subagent preloads at most 32 skills from its skills field (v2.1.295), and SendMessage finds a subagent by name again after the CLI restarts and resumes the session (v2.1.299); CLAUDE_CODE_SUBAGENT_EFFORT sets the effort for subagents that name none (v2.1.316), forks launched together are each told which launch is theirs (v2.1.307), and a subagent that inherited a parent subagent’s model keeps it when a background job or message wakes it (v2.1.316); since v2.1.317 a subagent on a different model from the main conversation runs at that model’s saved effort level or its default instead of the session’s, and a message to a running background agent arrives sooner, moving the agent’s running command to the background.codexStable native multi-agent lifecycle with runtime metadata and follow-up controls.codex · yesStable native multi-agent lifecycle with runtime metadata and follow-up controls.zcodeTyped agents (general-purpose, Explore) with scoped tools, plus plugin-shipped visual-judge agent types for rendered document/spreadsheet/presentation/PDF acceptance checks.zcode · yesTyped agents (general-purpose, Explore) with scoped tools, plus plugin-shipped visual-judge agent types for rendered document/spreadsheet/presentation/PDF acceptance checks.
Parallel agent teamsclaudeNamed 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.2, Opus 5.5, Sonnet 5.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).claude · yes · updated 2026-11-10Named 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.2, Opus 5.5, Sonnet 5.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).codexNative delegation, task dashboard, queue and mentions; multi-agent V2 remains optional. No verified shared team/task-list primitive; native coordination does not grant protocol authority.codex · partial · updated 2026-11-10Native delegation, task dashboard, queue and mentions; multi-agent V2 remains optional. No verified shared team/task-list primitive; native coordination does not grant protocol authority.zcodeConcurrent subagent launches with SendMessage and task-output tracking, plus script-orchestrated dynamic workflows with live-adjustable concurrency (v3.14.0/3.14.3), but no shared team/task-list primitive.zcode · partialConcurrent subagent launches with SendMessage and task-output tracking, plus script-orchestrated dynamic workflows with live-adjustable concurrency (v3.14.0/3.14.3), but no shared team/task-list primitive.
Web & tools
MCP toolsclaudeExtensible via MCP servers.claude · yesExtensible via MCP servers.codexMCP/plugins, scoped output limits, parallel read-only calls, remote marketplaces and Enterprise authentication; supported cancellation reaches remote MCP calls. Discovery, credentials and account access remain configuration-dependent.codex · yes · updated 2026-11-10MCP/plugins, scoped output limits, parallel read-only calls, remote marketplaces and Enterprise authentication; supported cancellation reaches remote MCP calls. Discovery, credentials and account access remain configuration-dependent.zcodeUser/workspace-configured MCP servers plus plugin-shipped servers (Node REPL, web reader, image search, computer use).zcode · yesUser/workspace-configured MCP servers plus plugin-shipped servers (Node REPL, web reader, image search, computer use).
Web searchclaudeNative WebSearch tool.claude · yesNative WebSearch tool.codexWeb search/fetch tools; hosted web tools are expanding in code-mode flows.codex · yesWeb search/fetch tools; hosted web tools are expanding in code-mode flows.zcodeNative WebSearch tool.zcode · yesNative WebSearch tool.
URL fetch (no browser)claudeWebFetch converts pages to markdown (read-only; results cached for 15 minutes).claude · yesWebFetch converts pages to markdown (read-only; results cached for 15 minutes).codexWeb fetch tool alongside web search.codex · yesWeb fetch tool alongside web search.zcodeWebFetch converts pages to markdown; the web-reader MCP server fetches and converts URL content without a browser.zcode · yesWebFetch converts pages to markdown; the web-reader MCP server fetches and converts URL content without a browser.
Browser interactionclaudeClaude 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.claude · 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.codexIn-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.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.zcodeBrowser-use plugin (navigate, click, type, screenshot) plus desktop computer use via the computer-use plugin (v3.14.0 improved CUA invocation).zcode · yesBrowser-use plugin (navigate, click, type, screenshot) plus desktop computer use via the computer-use plugin (v3.14.0 improved CUA invocation).
Workspace
File system accessclaudeConfigurable read/write allowlists; a write through a symlink is judged by where it lands, not by its in-tree path (v2.1.280); permissions.blockWritesOutsideWorkingDirectories makes Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode (v2.1.314), and Write asks to read a very large CLAUDE.md, rules or @-included file in full before overwriting it (v2.1.312); since v2.1.321 deny rules and protected-file prompts also apply to the file a cp or mv into a directory writes, and cp and mv spelled by a path such as /bin/cp get the same checks.claude · sandboxed · updated 2026-11-10Configurable read/write allowlists; a write through a symlink is judged by where it lands, not by its in-tree path (v2.1.280); permissions.blockWritesOutsideWorkingDirectories makes Write, Edit and NotebookEdit refuse paths outside the working directories in every permission mode (v2.1.314), and Write asks to read a very large CLAUDE.md, rules or @-included file in full before overwriting it (v2.1.312); since v2.1.321 deny rules and protected-file prompts also apply to the file a cp or mv into a directory writes, and cp and mv spelled by a path such as /bin/cp get the same checks.codexPolicy-dependent per session; beta named permission profiles can include managed deny-read rules, and untrusted projects do not load project instructions.codex · policy-dep · updated 2026-11-10Policy-dependent per session; beta named permission profiles can include managed deny-read rules, and untrusted projects do not load project instructions.zcodeRead/Write/Edit tools and Bash run behind a user-selected permission mode.zcode · gatedRead/Write/Edit tools and Bash run behind a user-selected permission mode.
Multi-folder projectsclaude--add-dir/additionalDirectories extend the working set; no primary-folder model.claude · manual--add-dir/additionalDirectories extend the working set; no primary-folder model.codexIn a trusted project, the primary folder controls new chats, Git, and automatic instruction/skill/config discovery; secondary folders provide file access.codex · yesIn a trusted project, the primary folder controls new chats, Git, and automatic instruction/skill/config discovery; secondary folders provide file access.zcodeManual workspace composition (single primary working directory).zcode · manualManual workspace composition (single primary working directory).
Git operationsclaudeVia Bash (may need sandbox configuration).claude · yesVia Bash (may need sandbox configuration).codexNative Git and managed-worktree creation/listing; primary-folder ownership applies. Session archive/delete does not by itself establish checkout removal; verify Git registration and directory cleanup separately.codex · yes · updated 2026-11-10Native Git and managed-worktree creation/listing; primary-folder ownership applies. Session archive/delete does not by itself establish checkout removal; verify Git registration and directory cleanup separately.zcodeVia Bash.zcode · yesVia Bash.
GitHub CLI (gh)claudeVia Bash (may need sandbox configuration).claude · yesVia Bash (may need sandbox configuration).codexVia shell; credentials and repository authorization are configuration-dependent.codex · yes · updated 2026-11-10Via shell; credentials and repository authorization are configuration-dependent.zcodeVia Bash.zcode · yesVia Bash.
Sessions
Session memoryclaudeAuto-loaded MEMORY.md + optional MCP memory.claude · strongAuto-loaded MEMORY.md + optional MCP memory.codexGenerated local memories, with memory v2 the implementation default for fresh profiles; enablement and imports are separate controls. Generated recall and experimental task notes/history search do not replace OACP durable memory.codex · partial · updated 2026-11-10Generated local memories, with memory v2 the implementation default for fresh profiles; enablement and imports are separate controls. Generated recall and experimental task notes/history search do not replace OACP durable memory.zcodeNo auto-loaded MEMORY.md; prior-session context via explicit session handoff (ReadSessionContext).zcode · partialNo auto-loaded MEMORY.md; prior-session context via explicit session handoff (ReadSessionContext).
Interactive modeclaudeCLI chat with permission modes (including classifier-driven auto mode, the default when no permission mode is configured since v2.1.284; since v2.1.281 an unattended dangerous rm prompt is denied after two minutes; since v2.1.284 a read outside the working directories can be allowed once without a standing rule; since v2.1.299 an MCP allow rule reaches only the server it names, written mcp__<server>__*), 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; /auto-mode-setup reads the project and recent sessions to teach auto mode about the environment (v2.1.304), a conversation too long for the server-side safety check is compacted instead of every checked call being denied (v2.1.302), CLAUDE_CODE_AUTO_MODE_MODEL picks the client-side classifier’s model (v2.1.302), and a blocked call’s message names the command and points to /permissions (v2.1.314); permissions.denyInsteadOfPrompting denies a call that would wait on a permission prompt and lets the turn continue, in terminal sessions, subagents and teammates (v2.1.319), and a shell command that holds the account’s email address and names a User-Agent is refused (v2.1.317, narrowed in v2.1.321).claude · yes · updated 2026-11-10CLI chat with permission modes (including classifier-driven auto mode, the default when no permission mode is configured since v2.1.284; since v2.1.281 an unattended dangerous rm prompt is denied after two minutes; since v2.1.284 a read outside the working directories can be allowed once without a standing rule; since v2.1.299 an MCP allow rule reaches only the server it names, written mcp__<server>__*), 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; /auto-mode-setup reads the project and recent sessions to teach auto mode about the environment (v2.1.304), a conversation too long for the server-side safety check is compacted instead of every checked call being denied (v2.1.302), CLAUDE_CODE_AUTO_MODE_MODEL picks the client-side classifier’s model (v2.1.302), and a blocked call’s message names the command and points to /permissions (v2.1.314); permissions.denyInsteadOfPrompting denies a call that would wait on a permission prompt and lets the turn continue, in terminal sessions, subagents and teammates (v2.1.319), and a shell command that holds the account’s email address and names a User-Agent is refused (v2.1.317, narrowed in v2.1.321).codexDesktop and CLI/TUI, Plan/Goal modes, task organization, asynchronous text questions when exposed, immediate steering and nested-tool interruption; optional desktop composer predictions produce drafts for user submission.codex · yes · updated 2026-11-10Desktop and CLI/TUI, Plan/Goal modes, task organization, asynchronous text questions when exposed, immediate steering and nested-tool interruption; optional desktop composer predictions produce drafts for user submission.zcodeDesktop-app chat with permission modes, structured plan mode (explore → plan → approve), and Office/Coding interface-mode switching (v3.14.0).zcode · yesDesktop-app chat with permission modes, structured plan mode (explore → plan → approve), and Office/Coding interface-mode switching (v3.14.0).
Plan modeclaudeStructured explore → plan → approve → implement (EnterPlanMode/ExitPlanMode); read-only browser calls run without prompts while planning.claude · yesStructured explore → plan → approve → implement (EnterPlanMode/ExitPlanMode); read-only browser calls run without prompts while planning.codexApp/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).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).zcodeStructured plan mode (explore → plan → approve).zcode · yesStructured plan mode (explore → plan → approve).
Limits & cost
Context windowclaude~1M across the current lineup (Fable 5.2, Opus 5.5, Sonnet 5.5, Haiku 5.5); auto-compaction extends indefinitely — since v2.1.260 Opus and Fable 1M sessions compact shortly before the limit rather than overrunning it, and since v2.1.273 the context meter no longer double-counts advisor-tool turns, which had triggered compaction at about half the real window; since v2.1.299 a session past 200K tokens that sits idle about 54 minutes is compacted before its one-hour prompt cache expires (idleCompaction: false turns this off; CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS moves the floor; an Idle compaction row in /config turns it off since v2.1.302, and it also runs in VS Code and the desktop app since v2.1.314); since v2.1.304 compaction re-sends the skill list afterwards, since v2.1.311 MEMORY.md and CLAUDE.md edited earlier in the session are no longer seen stale right after compaction, and a standard-context session whose request passes 200K tokens compacts and continues instead of stopping (v2.1.311); since v2.1.317 reading an unchanged file again returns its content instead of a stub, and since v2.1.319 /context gives Claude only its table, each list capped at its 10 largest rows, instead of re-sending its visual grid on every later turn.claude · ~1M · updated 2026-11-10~1M across the current lineup (Fable 5.2, Opus 5.5, Sonnet 5.5, Haiku 5.5); auto-compaction extends indefinitely — since v2.1.260 Opus and Fable 1M sessions compact shortly before the limit rather than overrunning it, and since v2.1.273 the context meter no longer double-counts advisor-tool turns, which had triggered compaction at about half the real window; since v2.1.299 a session past 200K tokens that sits idle about 54 minutes is compacted before its one-hour prompt cache expires (idleCompaction: false turns this off; CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS moves the floor; an Idle compaction row in /config turns it off since v2.1.302, and it also runs in VS Code and the desktop app since v2.1.314); since v2.1.304 compaction re-sends the skill list afterwards, since v2.1.311 MEMORY.md and CLAUDE.md edited earlier in the session are no longer seen stale right after compaction, and a standard-context session whose request passes 200K tokens compacts and continues instead of stopping (v2.1.311); since v2.1.317 reading an unchanged file again returns its content instead of a stub, and since v2.1.319 /context gives Claude only its table, each list capped at its 10 largest rows, instead of re-sending its visual grid on every later turn.codexAstra, GPT-6.1 Sol/Terra and GPT-6 Sol/Luna list 1.05M API context / 128K maximum output. Codex docs give Sol a 500K default; the October 29 catalog declares Sol/Terra 500K and Astra/previous Sol/Luna 272K, each 95% usable. These are declarations, not maximum-context tests.codex · 272K–500K catalog · updated 2026-11-10Astra, GPT-6.1 Sol/Terra and GPT-6 Sol/Luna list 1.05M API context / 128K maximum output. Codex docs give Sol a 500K default; the October 29 catalog declares Sol/Terra 500K and Astra/previous Sol/Luna 272K, each 95% usable. These are declarations, not maximum-context tests.zcodeGLM-5.3 and GLM-5.3-Flash each declare 1M context / 128K output in the local provider config (coding-plan surface; Flash adds image/video input); automatic context summarization carries long sessions forward.zcode · 1M declaredGLM-5.3 and GLM-5.3-Flash each declare 1M context / 128K output in the local provider config (coding-plan surface; Flash adds image/video input); automatic context summarization carries long sessions forward.
Cost modelclaudeToken-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, including thinking-mode changes since v2.1.280); Fable 5.2 API rate is $8/$40 per MTok with $0.20/MTok cache reads (2× Opus 5.5’s $4/$20, whose cache reads are also $0.20/MTok; Fable 5.1 was $10/$50 with $0.25/MTok cache reads; Sonnet 5.5 is $2/$10 with $0.10/MTok cache reads, 5% of base input, which Claude Code’s /cost, status line and --max-budget-usd price from v2.1.296 (they used $0.20 before); Haiku 5.5 is $0.10/$0.50 with $0.01/MTok cache reads for prompts up to 100K tokens and $0.50/$2.50 above); on Pro and Max plans resuming an inactive conversation warns when it would use a noticeable share of the 5-hour usage limit (v2.1.304; the window is named the "5-hour limit" since v2.1.312), ultrathink runs its turn at xhigh effort on the current lineup (v2.1.311; CLAUDE_CODE_DISABLE_ULTRATHINK turns the keyword off, v2.1.316), and fast mode on Opus 4.8 is deprecated as of 2026-10-30 and removed 2026-11-30 (v2.1.316).claude · token-based · updated 2026-11-10Token-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, including thinking-mode changes since v2.1.280); Fable 5.2 API rate is $8/$40 per MTok with $0.20/MTok cache reads (2× Opus 5.5’s $4/$20, whose cache reads are also $0.20/MTok; Fable 5.1 was $10/$50 with $0.25/MTok cache reads; Sonnet 5.5 is $2/$10 with $0.10/MTok cache reads, 5% of base input, which Claude Code’s /cost, status line and --max-budget-usd price from v2.1.296 (they used $0.20 before); Haiku 5.5 is $0.10/$0.50 with $0.01/MTok cache reads for prompts up to 100K tokens and $0.50/$2.50 above); on Pro and Max plans resuming an inactive conversation warns when it would use a noticeable share of the 5-hour usage limit (v2.1.304; the window is named the "5-hour limit" since v2.1.312), ultrathink runs its turn at xhigh effort on the current lineup (v2.1.311; CLAUDE_CODE_DISABLE_ULTRATHINK turns the keyword off, v2.1.316), and fast mode on Opus 4.8 is deprecated as of 2026-10-30 and removed 2026-11-30 (v2.1.316).codexChatGPT usage/credits and API billing are separate. Standard API input / cached input / output per MTok, up to 272K input: Astra $10/$1/$50; GPT-6.1 Sol $2/$0.10/$10; Terra $1/$0.05/$5; previous Sol $2/$0.20/$10; Luna $0.10/$0.01/$0.50. Cache retention, long input and speed tiers change API rates.codex · partial · updated 2026-11-10ChatGPT usage/credits and API billing are separate. Standard API input / cached input / output per MTok, up to 272K input: Astra $10/$1/$50; GPT-6.1 Sol $2/$0.10/$10; Terra $1/$0.05/$5; previous Sol $2/$0.20/$10; Luna $0.10/$0.01/$0.50. Cache retention, long input and speed tiers change API rates.zcodeToken-based; per-session cost not surfaced in-session.zcode · token-basedToken-based; per-session cost not surfaced in-session.
Sandbox restrictionsclaudeConfigurable 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; in auto mode a sandboxed command can name the network hosts it needs (allowed_domains), which are reviewed with the command (v2.1.271); sandbox.excludedCommands exempts a compound command only when every part matches (v2.1.277), and an output redirect on an otherwise-exempt command runs it sandboxed (observed on v2.1.283 and v2.1.293); a deny rule is enforced at a path’s real location when the denied path passes through a symlink, and a sandboxed command can no longer write into a --plugin-dir folder (v2.1.299); project settings can no longer widen or turn off an admin-required sandbox (v2.1.285); note that commands typed at the ! bash-mode prompt run outside the sandbox even when sandbox.allowUnsandboxedCommands: false (v2.1.260); since v2.1.309 the shell’s startup files run inside the sandbox too and macOS denyWrite globs apply at a path’s real location when the pattern’s folder is reached through a symlink; sandbox.allowNestedUserNamespaces lets sandboxed commands on Linux create user namespaces, which also lets them around the file protections (v2.1.305); v2.1.319 closed a sandbox escape when creating a worktree (a plain git worktree add still runs sandboxed, observed on v2.1.322), and v2.1.321 closed a case where a read-only Bash command ran outside the sandbox without a permission prompt.claude · yes · updated 2026-11-10Configurable 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; in auto mode a sandboxed command can name the network hosts it needs (allowed_domains), which are reviewed with the command (v2.1.271); sandbox.excludedCommands exempts a compound command only when every part matches (v2.1.277), and an output redirect on an otherwise-exempt command runs it sandboxed (observed on v2.1.283 and v2.1.293); a deny rule is enforced at a path’s real location when the denied path passes through a symlink, and a sandboxed command can no longer write into a --plugin-dir folder (v2.1.299); project settings can no longer widen or turn off an admin-required sandbox (v2.1.285); note that commands typed at the ! bash-mode prompt run outside the sandbox even when sandbox.allowUnsandboxedCommands: false (v2.1.260); since v2.1.309 the shell’s startup files run inside the sandbox too and macOS denyWrite globs apply at a path’s real location when the pattern’s folder is reached through a symlink; sandbox.allowNestedUserNamespaces lets sandboxed commands on Linux create user namespaces, which also lets them around the file protections (v2.1.305); v2.1.319 closed a sandbox escape when creating a worktree (a plain git worktree add still runs sandboxed, observed on v2.1.322), and v2.1.321 closed a case where a read-only Bash command ran outside the sandbox without a permission prompt.codexBeta permission profiles, managed deny-read rules, trust-gated instructions and isolated execution. Resume restores thread permissions subject to explicit overrides and managed policy; supported credential masking is configuration-dependent. Runtime approval does not grant OACP authority.codex · session-dep · updated 2026-11-10Beta permission profiles, managed deny-read rules, trust-gated instructions and isolated execution. Resume restores thread permissions subject to explicit overrides and managed policy; supported credential masking is configuration-dependent. Runtime approval does not grant OACP authority.zcodeUser-selected permission mode gates tool calls.zcode · yesUser-selected permission mode gates tool calls.
No cell has changed since 2026-10-14 in the runtimes shown.
Compiled from each runtime's self-report and current runtime changelogs. Claude checked against Claude Code v2.1.322 with claude-opus-5-5 (2026-11-10); Codex against stable CLI 0.165.0, GPT-6 Astra, GPT-6.1 Sol, GPT-6.1 Terra, GPT-6 Sol, and GPT-6 Luna (2026-10-29); ZCode 3.14.5 as a live in-session self-report (2026-10-09, re-verified same day).
02Head to head03 pairs · computed from the matrix
Two at a time, where they differ.
Each pair's differing rows, read straight off the matrix above — when a column updates, these update with it.
zcode vs codex11 of 17 the same
What is the difference between ZCode and Codex?
ZCode and Codex report the same status on 11 of the 17 capabilities compared. They differ on 6:
Capabilities where ZCode and Codex differ
capability
ZCode
Codex
Browser interaction
yes
config-dep
File system access
gated
policy-dep
Multi-folder projects
manual
yes
Context window
1M declared
272K–500K catalog
Cost model
token-based
partial
Sandbox restrictions
yes
session-dep
zcode vs claude code13 of 17 the same
What is the difference between ZCode and Claude Code?
ZCode and Claude Code report the same status on 13 of the 17 capabilities compared. They differ on 4:
Capabilities where ZCode and Claude Code differ
capability
ZCode
Claude Code
Parallel agent teams
partial
yes
File system access
gated
sandboxed
Session memory
partial
strong
Context window
1M declared
~1M
claude code vs codex09 of 17 the same
What is the difference between Claude Code and Codex?
Claude Code and Codex report the same status on 9 of the 17 capabilities compared. They differ on 8:
Capabilities where Claude Code and Codex differ
capability
Claude Code
Codex
Parallel agent teams
yes
partial
Browser interaction
yes
config-dep
File system access
sandboxed
policy-dep
Multi-folder projects
manual
yes
Session memory
strong
partial
Context window
~1M
272K–500K catalog
Cost model
token-based
partial
Sandbox restrictions
yes
session-dep
03Strengths03 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, changed since 2026-10-14
Flexible (Haiku 5.5 subagents at $0.10/$0.50 per MTok for cheap tasks, Sonnet 5.5 at half Opus 5.5’s API rate for routine review and research subagents, opus for complex, Fable 5.2 at 2× Opus 5.5 API rates for the hardest work).
codexdesktop app
best at, changed since 2026-10-14
Terminal execution and patching, Astra for demanding workflows, GPT-6.1 Sol for complex repeated work, Terra for writing/visual/app tasks, Luna for focused high-volume work; native delegation, browser verification and artifact review.
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, changed since 2026-10-14
Astra targets the hardest work; GPT-6.1 Sol balances capability and cost; Terra and Luna target efficient bounded work. Included subscription usage, purchased credits and API rates are different measures; compare actual tasks before changing defaults.
zcodedesktop app
best at
Agentic coding with GLM-5.3, script-orchestrated multi-agent workflows, plugin-driven browser and desktop automation, office document production, scheduled and idle-time automations.
Token-based; details not surfaced in-session (unverified).
04Parity 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 *; since v2.1.277 a compound command is exempt only when every part matches, so run git/gh as single commands) 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.
05The 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.