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
--ossruns 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, whichcodex features listreports 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 carrymatchandnot_matchexample 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 Code | Codex | |
|---|---|---|
| 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
- They default differently on safety. Both have an OS sandbox, an automatic approver and rules. Codex starts inside the sandbox and asks only to leave it. Claude Code starts with prompts, or a classifier in auto mode, and the sandbox is optional.
- Claude Code does more to coordinate agents. Workflows, teams, channels, cross-session messages and an advisor model have no Codex equivalent. Codex's subagents are closer to Claude Code's basic ones.
- Codex is more open. You can run it on local models, build your own front end on the app server, and read the source. That's also how its code mode was found: from logs, not from docs.
- They now share instruction files. Both read AGENTS.md, so one set of project instructions can serve both.