Since GPT-5.5 and the Codex features that followed, I'm seeing more people run Codex side by side with Claude. I'm one of them. Codex is now good enough for real knowledge work, and Claude is still strong enough that I don't want to leave it.
So the question isn't which tool to commit to. It's how to build a system both can run. Your system is the context, skills, agents, workflows, memory and tools. Claude Code and Codex are execution environments.
Why one tool isn't enough
I don't think the goal is to find one tool and stay loyal forever. The goal is work that doesn't collapse when a tool hits a limit, changes its pricing, moves a button, or gets worse at the moment you need it.
That happens on a normal schedule:
- Models retire. GPT-5.5 leaves ChatGPT, ChatGPT Work and Codex on October 14, 2026.
- Plans change. In July 2026, Claude's Fable 5 moved out of Pro plan limits and onto usage credits.
- Limits hit mid-task. Both tools cap usage over a few hours and over a week.
If your setup lives inside one tool, each change stops your work. If it lives in your project, you open the other tool and keep going.
One baseline, thin wrappers
Shared pieces merge into one baseline. Only tool-specific wrappers stay separate.
| Layer | What goes in it | Changes when |
|---|---|---|
| Shared baseline | Context, skills, agent roles, workflows, memory, and the MCP servers you use | Your work changes |
| Claude wrapper | CLAUDE.md, hooks, .claude/ settings, skill links, agent files, .mcp.json | Claude Code changes |
| Codex wrapper | AGENTS.md, config.toml, skill links, agent files, hooks.json | Codex changes |
A new tool doesn't mean rebuilding. It gets another thin wrapper over the same baseline.
Build the shared baseline
Keep the baseline in one folder, written in plain Markdown and scripts that any tool can read:
my-project/
├── ai/ shared baseline
│ ├── CONTEXT.md who, what, rules, conventions
│ ├── skills/
│ │ └── weekly-report/SKILL.md
│ ├── agents/
│ │ └── reviewer.md each role written once
│ ├── workflows/ scripts and step-by-step playbooks
│ └── memory/
│ ├── decisions.md
│ └── handoff.md
├── CLAUDE.md Claude wrapper
├── .claude/ Claude wrapper
├── AGENTS.md Codex wrapper
└── .codex/ Codex wrapper
- Context: your standing instructions, written without tool-specific commands.
- Skills: both tools use the open Agent Skills format, so one
SKILL.mdworks in each. - Agents: describe each role in Markdown. Each tool gets a short wrapper that points to it.
- Workflows: scripts run the same from either tool.
- Memory: Claude Code and Codex keep separate built-in memories that neither can read. OpenAI's docs recommend keeping required guidance in checked-in files and treating memory as a recall layer, so record decisions and progress here.
- MCP: use the same servers in both. Only the config line differs.
Add the tool wrappers
| Piece | Claude Code wrapper | Codex wrapper |
|---|---|---|
| Instructions | CLAUDE.md with @ai/CONTEXT.md | AGENTS.md pointing to ai/CONTEXT.md |
| Skills | Link in .claude/skills/ | Link in .agents/skills/ |
| Agents | .claude/agents/reviewer.md | .codex/agents/reviewer.toml |
| Hooks | .claude/settings.json | .codex/hooks.json |
| MCP servers | .mcp.json | .codex/config.toml |
Instructions. Claude Code imports files, so CLAUDE.md loads the baseline automatically:
@ai/CONTEXT.md
## Claude Code only
- [notes that apply only here]
Codex reads AGENTS.md but doesn't import other files, so its wrapper tells Codex where the baseline lives:
Before any task, read ai/CONTEXT.md. It is the source of truth for this project.
## Codex only
- [notes that apply only here]
If you'd rather have both tools load the rules with no extra step, put the baseline instructions directly in AGENTS.md and have CLAUDE.md import it. Anthropic's docs recommend exactly that pattern.
Skills. Both tools follow symlinked skill folders, so link each skill instead of copying it:
mkdir -p .claude/skills .agents/skills
ln -s ../../ai/skills/weekly-report .claude/skills/weekly-report
ln -s ../../ai/skills/weekly-report .agents/skills/weekly-report
Test on a fresh clone, since some sync tools and Windows setups handle symlinks differently.
Switch tools mid-task
Before you stop in one tool:
Before you stop, update ai/memory/handoff.md with what you finished, what's still in progress, the decisions you made and why, open questions, and the exact next step. Write it so another agent can continue without this conversation.
Then in the other tool:
Read the project instructions and ai/memory/handoff.md. Confirm the next step, then continue from there.
Keep it from drifting
- Change the baseline, not the wrappers. If a rule applies to both tools, it belongs in
ai/. - Keep wrappers thin. Tool-only settings like permission modes, model choice and approval rules belong in the wrapper. Everything else points back to the baseline.
- Treat imports as a starting point. Both tools can import setup from the other, but that creates a second copy. Import once, move what's shared into the baseline, then replace the copies with links.
- Test in both after a change. Run the same small task in Claude Code and Codex and check that each follows the new rule.
More on regular upkeep in How I Keep My Claude Code Setup From Drifting.
Go deeper: Claude Code vs Codex · 5 Codex Features That Put It Back in My AI Stack · MCP vs CLI