Harness

Claude Code vs Codex

What each harness has that the other doesn't, and what they both have but do differently.

Checked against both sets of docs on 2026-09-23, with Claude Code 2.1.281 and Codex CLI 0.155.1.

Each item links to the documentation it's based on. An item counts as "only in" one harness only after I searched the other harness's full documentation for an equivalent, and each one lists the terms I searched for. This covers the command-line harnesses. Codex's docs increasingly describe the ChatGPT desktop app, so where a Codex feature exists only there, the item says so. For how each one works from inside, see Claude Code, taken apart and Codex, taken apart.

Only in Claude Code

Checkpointing
Saves the state of files before each prompt, so you can rewind Claude's edits. It doesn't track changes made by shell commands. Searched Codex docs for: checkpoint, rewind, undo.
Dynamic workflows and agent teams
A workflow is a JavaScript script that coordinates many subagents at once. Agent teams, which are experimental, run several full sessions as a team. Codex has subagents, but nothing at this scale. Searched for: workflow, team, orchestrat.
Advisor tool
Lets the working model consult a second, usually stronger model at key points in a task. Experimental. Searched for: advisor, consult, second model.
Channels and cross-session messaging
Push outside events, such as a CI failure, into a running session, and let sessions message each other. The closest thing in Codex is codex queue, which adds a message to a session. Searched for: channel, cross-session, push.
Tool search
Documented as on by default: MCP tool definitions are held back until needed, and the model sees only their names at first. Codex's docs mention tool search only in passing, in a memories setting. Searched for: tool search, tool_search, deferred.
Code intelligence and notebook tools
An LSP tool, from plugins, for language-server lookups, and a tool for editing Jupyter notebooks. Searched for: LSP, language server, notebook.
More hook events
About 30 hook events, including instructions loading, config changes, file changes, worktree creation and model switches. Codex has 12. The two sets overlap on the core ones: session start and end, before and after each tool call, prompt submit, compaction, subagents, stop.

Only in Codex

Local and open models
--oss runs Codex on a local model through LM Studio or Ollama. Claude Code runs only Claude models. Its gateway docs say routing to non-Claude models isn't supported. Searched Claude Code docs for: ollama, LM Studio, non-Claude.
Image generation
A built-in tool for generating and editing images. Searched for: image generation, generate images.
App server
An open-source protocol that other programs use to build their own front ends for Codex, including OpenAI's own VS Code extension. It covers authentication, history, approvals and streamed events. The nearest things in Claude Code are the Agent SDK and streamed JSON from -p.
Code mode
The model writes JavaScript that calls the other tools as functions. The config reference lists it only as a key described as "under development and off by default". Even so, my session logs show it in use on every turn through a related feature, code_mode_host, which codex features list reports as stable and on. The docs don't describe it. Searched Claude Code docs for: code mode.
Command rules with built-in tests
Rules about which commands may run outside the sandbox are written in a small language (prefix_rule). Each rule can carry match and not_match example commands that act as tests. The model can also propose a new rule when it asks for approval. Claude Code has permission rules, but they're JSON patterns with no tests, and the model doesn't propose them.
Pets
Animated companions that show what's happening. Desktop app only, and included here to be complete.

Both, done differently

Claude CodeCodex
Instruction files CLAUDE.md, plus AGENTS.md since v2.1.277 when no CLAUDE.md is present; delivered as a user message after the system prompt AGENTS.md from global scope down to the current directory, with AGENTS.override.md taking precedence; 32 KiB cap
Memory Auto memory, on by default; the model writes Markdown files itself Memories, off by default; generated in the background from chats once they've gone idle, with secrets redacted
Sandbox OS sandbox for shell commands, opt-in with /sandbox OS sandbox on by default: workspace writes only, no network
Automatic approval Auto mode: a classifier reviews every tool call Auto-review: a reviewer agent sees only requests to leave the sandbox
Permission config Six modes and allow / ask / deny rules per tool Sandbox mode plus approval policy, or the newer permission profiles (beta); the untrusted policy has been retired
Many tools Many separate tools; MCP definitions loaded on demand One exec tool running code that calls the others (observed; not documented)
File edits Edit: exact string replacement apply_patch: diffs
Compaction Documented item by item: what's re-read from disk and what's dropped Adjustable threshold, and a replaceable compaction prompt (compact_prompt)
Subagents Markdown files in .claude/agents/ TOML files in .codex/agents/; built-in default, worker, explorer
Style Output styles: role, tone and format, can be written by you Personality: a preset tone
Working until done /goal: a small model checks after each turn whether the goal is met Goals: an outcome and a definition of done
Scheduling Scheduled tasks in a session; routines in the cloud Automations, mainly from the app
Scripted runs -p, --json-schema, --max-budget-usd codex exec, --output-schema; requires a git repo unless skipped
Browser and screen control Chrome extension and computer use, both usable from the CLI Browser and computer use in the desktop app only, not the CLI

What the diff says