Orkas Orkas
Home Compare Claude Code vs Codex vs OpenCode
Honest comparison

Claude Code vs Codex vs OpenCode:
what each one lets a host ask of it

All three are terminal coding agents, all three bind to a project directory, and all three resume a conversation natively. The differences that matter show up only once something else is driving them: how a standing instruction survives, whether the agent can read its own durable memory, whether you can interrupt a run, and which permission modes are actually reachable. Those rows are measured here, not quoted.

At a glance

Claude Code, Codex and OpenCode, capability by capability

The rows marked “measured” come from the capability inventory Orkas keeps for driving each one as a local CLI backend. They describe the host contract each agent exposes — not how good its code is.

CapabilityClaude CodeAnthropicCodexOpenAIOpenCodeMIT, community
Who makes it, and the licenceAnthropic; proprietaryOpenAI; Apache-2.0Community; MIT
Breadth of model choiceAnthropic Claude modelsA ChatGPT plan, an API key, custom providers or local modelsDozens of providers, anything OpenAI-compatible, and local runtimes
Where you drive it fromA terminal, or an IDE integrationA terminal, extensions for VS Code, Cursor and Windsurf, and a cloud versionA TUI first, with the desktop app newer
Picking up where it left off (measured)A native resume operationA native resume operationA native resume operation
Carrying a standing instruction (measured)A native instruction field, but scoped to one invocation — the host re-sends it every runA native developer-instruction field that lives in the sessionNo native field — the instruction arrives as the first user message, and lives in the session
Binding to a project directory (measured)YesYesYes
Reaching the host's own tools (measured)Yes — a per-run bridge can be attachedYes — a per-run bridge can be attachedYes — a per-run bridge can be attached
Reading and updating durable agent memory (measured)YesYesNo — the bridge is attached, but memory is not part of it
Taking a new message mid-run (measured)Yes — over its streaming JSON transportYes — over its app-server transportNo — the turn finishes first
Permission modes a host can apply (measured)Inherit its own default, ask every time, or full accessInherit its own default, ask every time, or full accessAutomatic mode only — its one-shot run transport has no approval return channel

Two of these rows are the ones that change a decision. OpenCode is the only one of the three with no approval return channel, so a host cannot offer you an “ask me every time” mode for it and must run it in its supported automatic mode — pick it for work where that is acceptable. And Claude Code's instruction field is invocation-scoped rather than session-scoped, which is invisible when you type in a terminal yourself and matters a great deal when something else re-launches the process for you.

This comparison was last updated on September 11, 2026; check each vendor's site for current terms.

When to choose which

Pick by the constraint you cannot move

Pick Claude Code if…

  • Claude models are what you want, from the vendor that makes them
  • You work in a terminal or an IDE integration and nothing else drives it
  • You want a host to be able to pause and ask you before an action

Pick Codex if…

  • You already hold a ChatGPT plan, or want a cloud run that is not on your machine
  • You want a standing instruction to survive inside the session, not be re-sent
  • Your editor is VS Code, Cursor or Windsurf

Pick OpenCode if…

  • The licence has to be MIT and the provider list has to be long
  • You want the model to be able to run on your own hardware
  • Automatic execution is acceptable for the work you give it
Where this came from

Where the measured rows come from

Orkas runs all three as local CLI sessions, so the host contract each one exposes is something this project has to know exactly rather than approximately.

1

The inventory is a single declaration in the Orkas source, and a backend cannot be dispatched until its conversation semantics are declared there.

2

It covers five backends in total — Claude Code, Codex, OpenCode, OpenClaw and Hermes. The three on this page are the ones that bind to a project directory.

3

Nothing on this page is a quality judgement about the code any of them writes. A missing host capability is usually a design choice, not a defect.

Evidence

How to check this page yourself

The seven rows marked “measured” were re-derived from the Orkas source on 11 September 2026, three times, and all seven matched. Claude Code and Codex were then checked a second way, from outside that source: --resume, --permission-mode, --append-system-prompt and stream-json are all present in claude --help, and resume, --sandbox, app-server and exec are all present in codex --help. Versions at the time of checking: Claude Code 2.1.267, Codex CLI 0.153.4, on macOS 15.6.

One gap, left open rather than papered over: OpenCode was not installed on the machine that did the checking, so its column rests on the Orkas source alone with no second source behind it. Fixing that means installing it before the next review, not rewording the row. And none of these rows say anything about the quality of the code any of the three writes — a missing host capability is usually a design choice.

Download the raw evidence file (JSON) →

FAQ

Questions people actually ask

Can one desktop app drive all three at once?

Yes. Orkas runs Claude Code, Codex and OpenCode as local CLI backends in the same window, alongside OpenClaw and Hermes. Those five are the complete supported set — there is no Cline backend and no Gemini CLI backend.

Why can I not get an approval prompt from OpenCode?

Because its one-shot run transport has no channel to send an approval question back to the host and wait for the answer. Offering an “ask me every time” selector for it would suggest a pause that cannot happen, so it runs in its supported automatic mode instead.

Which of the three keeps a system prompt between runs?

Codex and OpenCode both keep it in the session. Claude Code's instruction field is scoped to a single invocation, so a host that relaunches the process has to re-send the instruction every run for it to still apply.

More comparisons

Keep reading

One window for all three

Orkas is free and MIT licensed. It drives Claude Code, Codex, OpenCode, OpenClaw and Hermes as local CLI sessions on your own machine.