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.
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.
| Capability | Claude CodeAnthropic | CodexOpenAI | OpenCodeMIT, community |
|---|---|---|---|
| Who makes it, and the licence | Anthropic; proprietary | OpenAI; Apache-2.0 | Community; MIT |
| Breadth of model choice | Anthropic Claude models | A ChatGPT plan, an API key, custom providers or local models | Dozens of providers, anything OpenAI-compatible, and local runtimes |
| Where you drive it from | A terminal, or an IDE integration | A terminal, extensions for VS Code, Cursor and Windsurf, and a cloud version | A TUI first, with the desktop app newer |
| Picking up where it left off (measured) | A native resume operation | A native resume operation | A native resume operation |
| Carrying a standing instruction (measured) | A native instruction field, but scoped to one invocation — the host re-sends it every run | A native developer-instruction field that lives in the session | No native field — the instruction arrives as the first user message, and lives in the session |
| Binding to a project directory (measured) | Yes | Yes | Yes |
| Reaching the host's own tools (measured) | Yes — a per-run bridge can be attached | Yes — a per-run bridge can be attached | Yes — a per-run bridge can be attached |
| Reading and updating durable agent memory (measured) | Yes | Yes | No — the bridge is attached, but memory is not part of it |
| Taking a new message mid-run (measured) | Yes — over its streaming JSON transport | Yes — over its app-server transport | No — the turn finishes first |
| Permission modes a host can apply (measured) | Inherit its own default, ask every time, or full access | Inherit its own default, ask every time, or full access | Automatic 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.
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.
The inventory is a single declaration in the Orkas source, and a backend cannot be dispatched until its conversation semantics are declared there.
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.
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.
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.
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.
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.
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.
Orkas is free and MIT licensed. It drives Claude Code, Codex, OpenCode, OpenClaw and Hermes as local CLI sessions on your own machine.