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.

LayerWhat goes in itChanges when
Shared baselineContext, skills, agent roles, workflows, memory, and the MCP servers you useYour work changes
Claude wrapperCLAUDE.md, hooks, .claude/ settings, skill links, agent files, .mcp.jsonClaude Code changes
Codex wrapperAGENTS.md, config.toml, skill links, agent files, hooks.jsonCodex 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:

PROMPT / COPY-PASTE
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.md works 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

PieceClaude Code wrapperCodex wrapper
InstructionsCLAUDE.md with @ai/CONTEXT.mdAGENTS.md pointing to ai/CONTEXT.md
SkillsLink 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:

PROMPT / COPY-PASTE
@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:

PROMPT / COPY-PASTE
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:

PROMPT / COPY-PASTE
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:

PROMPT / COPY-PASTE
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:

PROMPT / COPY-PASTE
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