Skip to main content
OpenAI Codex

I Ran Codex Inside Claude Code — The Results Split

Install OpenAI's Codex plugin in Claude Code and run /codex:adversarial-review. Real setup, the review-only design, and a triage method that works.

8 min
Read time
1,481
Words
Published
Last revised
Engr Mejba Ahmed

Written by

Engr Mejba Ahmed

Share Article

I Ran Codex Inside Claude Code — The Results Split

The most useful thing a second AI reviewer gives you is not more findings. It is different findings, and the difference is systematic. Since April I have had OpenAI's official Codex plugin installed inside Claude Code on my machine, and the pattern that emerged from running both reviewers over the same diffs on my own Laravel codebase is the one this post is really about: two models from different lineages barely overlap in what they flag, which means a single-model review is quietly leaving a whole category of problems on the table.

OpenAI shipping a first-party plugin into a competitor's CLI was a strange enough event that most coverage stopped at the news. The durable part is the workflow it enables. Adversarial review — a reviewer instructed to assume your approach is wrong and argue against it — works dramatically better when the reviewer is not the model that wrote the code.

I Ran Codex Inside Claude Code — The Results Split - overview of what the plugin actually is, installation, including the step guides skip

What the Plugin Actually Is

codex-plugin-cc is OpenAI's official bridge that runs your locally installed Codex CLI from inside a Claude Code session, surfaced as /codex: slash commands. The ones that matter:

  • /codex:review — a standard read-only review of your working tree or a branch diff (--base <ref>).
  • /codex:adversarial-review — the interesting one. Same targeting flags, plus free-form focus text, but a different charter: challenge the chosen implementation, the design tradeoffs, and the assumptions, not just hunt for defects.
  • /codex:rescue — delegate a stuck task to Codex, with --model and --effort overrides.
  • /codex:status, /codex:result, /codex:cancel — job management, because reviews can run in the background while you keep working.

The plugin delegates to your existing Codex CLI installation and respects your ~/.codex/config.toml. That detail sounds boring and is not, as we will get to.

Installation, Including the Step Guides Skip

Prerequisites: Node.js 18.18+, the Codex CLI installed globally (npm install -g @openai/codex), and either a ChatGPT account (the free tier is accepted) or an OpenAI API key. Then, inside Claude Code:

/plugin marketplace add openai/codex-plugin-cc
/plugin install codex@openai-codex
/reload-plugins
/codex:setup

The /reload-plugins step is in the official README and missing from most walkthroughs; without it the /codex: commands may not appear until you restart the session. /codex:setup verifies the CLI is reachable and authenticated, and if you are not logged in, codex login handles both ChatGPT and API-key sign-in.

On my machine the plugin has been installed since April 11, 2026 (v1.0.3), running against codex-cli 0.144.6. One config note from living with it: the plugin inherits whatever is in your Codex config. Mine sets model_reasoning_effort = "xhigh", which I chose for hard delegated tasks — and it silently applies to reviews too. If your adversarial reviews feel slow, check that line before blaming the plugin. Deep effort is usually what you want for a challenge review anyway, but it should be a choice, not an accident.

Two Design Decisions Worth Understanding

I read the plugin's command definitions on disk (they are plain markdown in the marketplace checkout), and two decisions stood out because they encode real review discipline.

First, adversarial review is review-only by construction. The command's core constraint says it plainly: do not fix issues, do not apply patches, return the reviewer's output verbatim. Your adversarial reviewer cannot "helpfully" start editing your tree. That separation — implementer writes, challenger only talks — is exactly how I would staff a human review, and it prevents the failure mode where a second agent with write access turns a review into a tug-of-war over your working tree.

Second, the command sizes your diff before deciding how to run. Before asking whether you want to wait or background the job, it inspects git diff --shortstat (staged, unstaged, and untracked) and only recommends waiting for changes of roughly one or two files; anything larger gets a background recommendation. Small touch, but it means the tool has an opinion about your time, and it also tells you the intended unit of review: a scoped diff, not "the whole repo, vibes included."

That second point matters practically. The adversarial mode does not calibrate its expectations to project scale — point it at a tiny cron script and it will still interrogate resilience and observability like the script were a payment service. Scope the diff, add focus text ("challenge the caching strategy in this middleware"), and the signal-to-noise improves enormously.

Where the Results Split on My Own Repo

My testbed is not a demo project. It is mejba.me, the Laravel monolith this blog runs on — Filament admin, six locales, queues, a content API. My standing workflow, which I described in my Claude Code and Codex same-repo setup, is to write most code with Claude Code and have Codex review the diff before merge.

The split I keep seeing: the two reviewers converge on very little, and what each finds has a recognizable shape. The cross-lineage reviewer is at its best challenging the approach — "why is this validation only in the Filament form when the API route reuses the request class," "this cache key ignores locale" — the kind of finding that questions a decision rather than a line. The model that wrote the code, reviewing itself, tends to re-litigate details inside the approach it already chose. That is not a Codex-versus-Claude verdict; run it the other way (Codex writes, Claude reviews) and the asymmetry flips. The reviewer that did not write the code is the one that questions whether the code should exist in that shape at all.

Review passes over this repo have paid concrete rent. During the pre-merge review rounds on my services pages overhaul, review caught that my controller was serving a hardcoded SEO title ("WordPress Expert") for every service instead of reading the per-service seo_title column, and that a Blade view was leaking an internal $service->cost field into public HTML. Both had survived my own reading of the diff. Neither is the kind of exotic bug that justifies AI hype; they are exactly the mundane, embarrassing, production-visible mistakes a second set of eyes exists to catch — and a second model is the cheapest second set of eyes I have ever hired.

The Triage Discipline That Makes Two Reviewers Workable

Doubling reviewers doubles findings, and most findings from an adversarial pass are arguable by design. Without a triage rule you drown. Mine is simple and borrowed from how I already run multi-agent review workflows:

  1. Both reviewers flag it: fix it now. Two models from different training lineages independently agreeing is the strongest automated signal you can get short of a failing test. In my experience the overlap list is short, which is what makes it precious.
  2. One reviewer flags it: verify before believing. I ask for the concrete failure scenario — inputs, state, wrong output. A finding that cannot be stated as a failure scenario is an opinion, and opinions go in a notes file, not the sprint.
  3. Approach-level challenges get ten minutes of human judgment, not a rewrite. The adversarial charter means the reviewer will always question your design. Sometimes it is right. The discipline is deciding consciously, once, rather than being dragged into re-architecture by every review.

There is also a budget angle that makes this workflow nearly free to adopt: the plugin runs on your ChatGPT subscription or OpenAI key, a separate usage pool from your Anthropic plan. A pre-merge adversarial pass costs you no Claude capacity at all. For a solo developer or a small team, a second-opinion pipeline that used to require hiring now costs one slash command — which is why I fold it into the same pre-merge routine as my security scanner agent pass on anything touching auth, payments, or user data.

Honest Limits

Three things temper my enthusiasm. The plugin is young; treat job management (/codex:status) as something you check rather than trust, and rerun a review that goes quiet. The adversarial mode over-flags on small or low-stakes code, so scope and focus text are not optional extras — they are the difference between a review and a lecture. And none of this replaces tests: a reviewer, human or model, comments on the code you show it, while a test suite confronts the code with reality. I compared the two ecosystems as primary daily drivers in my Codex vs Claude Code write-up, and my conclusion there still holds here — they fail differently, and the failure-mode diversity is precisely the asset.

After 8+ years of shipping client work, the reviews I trust least are the ones that come back clean. One model telling you the code is fine is a clean review. Two models disagreeing about what is wrong with it is information.

The teams that get value from this decide their triage rules before the first adversarial run — which findings block a merge, which become tickets, which a human argues down. I set those rules with teams and wire the gate into their merge flow: describe your pipeline as it stands today.

Coffee cup

Enjoyed this article?

Your support helps me create more in-depth technical content, open-source tools, and free resources for the developer community.

Related Topics

Engr Mejba Ahmed

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 8+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Related Articles

Browse All

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

AI assistant · trained on my work

👋

Hey there!

Quick Actions

WhatsApp Direct line to me

Chat on WhatsApp

+880 1723 741224 · Replies within the hour on working days

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

mejba.13@gmail.com

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support