Skip to content
← All notes

Claude vs Codex: run the evaluation yourself, because the benchmarks will not help

Published coding benchmarks measure self-contained problems with machine-checkable answers, which is not what your codebase is. Here is a method that survives the next release.

Tools8 min read

Full disclosure before anything else: this post was drafted with Claude, which makes it a poor place to look for a verdict on Claude. So it does not give one.

What follows is a method for running the comparison inside your own team. That is more useful than a ranking anyway, because the numbers in any head-to-head have a shelf life of weeks and the questions below have outlasted several generations of both tools.

Why coding benchmarks do not predict performance on your codebase

Published coding benchmarks measure a specific and quite narrow thing: can the model produce a passing solution to a self-contained, well-specified problem that has a machine-checkable answer.

Almost nothing about that describes real engineering work. Your codebase is not self-contained. Your tickets are not well specified. The difficult part of most changes is working out what else the change touches, and the tests that would catch a mistake frequently do not exist yet.

So a tool can lead a leaderboard and still be the wrong choice for your repository, and the reverse happens too. In practice both major options are capable enough that raw capability is rarely what decides it. Fit and workflow decide it, and no benchmark measures either.

A benchmark measuring self-contained, well-specified problems with machine-checkable answers, next to the real work: a large existing codebase where the hard part is knowing what else a change touches.
A leaderboard position says very little about your repository.

The six questions that actually decide which coding agent to use

Take a genuine ticket from your backlog, one with real ambiguity in it rather than a toy problem, and run it through each tool. Score these:

  • What does it do when the request is under-specified? The valuable behaviour is asking a question or stating an assumption out loud. The expensive behaviour is confidently choosing one interpretation and not mentioning that it chose.
  • Does it read before it writes? Watch whether it explores related files or pattern-matches straight from the prompt. On a mature codebase this single behaviour predicts most of the quality difference.
  • Can it follow your conventions? Point it at a part of the repository with strong house style and see whether the output looks like your code or like generic code that happens to pass.
  • How does it fail? Everything fails sometimes. What matters is whether failure is loud and diagnosable or quiet and plausible. Quiet plausible failure is far more expensive, because it reaches review looking finished.
  • What is the review burden? An agent whose output takes forty minutes to verify has not saved you the thirty minutes of typing it replaced.
  • Does it fit your controls? Where code goes, what is retained, and whether the people who sign off on that are satisfied. This kills more rollouts than capability ever does.

How to run the evaluation without fooling yourself

Two mistakes make most internal comparisons worthless.

The first is evaluating on tasks where you already know the answer. That measures whether the output matches the solution you had in mind, which is not the same as whether it is good, and it systematically favours whichever tool writes in a style closer to yours.

The second is letting the person who championed the tool run the evaluation. This is not about integrity. It is that they will unconsciously prompt one tool better than the other, because they have more practice with it.

A better setup: three real tickets, two engineers with no stake in the result, identical context and time budget for each tool, and the reviewer blind to which output came from where wherever that is practical. It is more work than reading a comparison article, and it is the only version that tells you anything about your team.

An evaluation designed not to fool you: real tickets with genuine ambiguity, identical context and time for each tool, and reviewers with no stake in the outcome working blind to which tool produced which output.
The comparison is not something you read. It is something you run.

The variable that matters more than the tool

The largest factor in whether these tools help is not which one you choose. It is whether the people using them can tell when the output is wrong.

A strong engineer with a mediocre agent produces good work slowly. A weaker engineer with an excellent agent produces plausible work quickly, and the failure stays invisible until it reaches production, because the output has none of the surface tells that used to give inexperience away. It compiles. It reads well. It is confidently structured and consistently named.

Every signal a reviewer used to rely on for a quick judgement about care and competence is now produced by default.

So the interesting question for most teams is not which agent to buy. It is whether they know who on their team can evaluate generated code, and how they would know that other than by asking people to self-report. In our experience that is the harder half of the problem and it gets almost none of the attention the tooling decision gets.

A note on when this was written

This was published in August 2026 and deliberately contains no version numbers and no benchmark scores, because both would be wrong by the time most people read it.

If you are reading this some months later, treat the method as current and the market as not. The comparison is not something you read. It is something you run.

Common questions

Which is better for coding, Claude or Codex?
For most teams the capability difference is smaller than the fit difference, and any specific answer goes stale within weeks. Run three real tickets through both, score how each handles ambiguity, whether it reads the codebase before writing, how loudly it fails, and what the review burden is. That result is about your codebase, which is the only one that matters.
Why do coding benchmarks not reflect real-world performance?
They measure self-contained, well-specified problems with machine-checkable answers. Real changes are none of those things. The hard part is usually working out what else a change affects, and the tests that would catch a mistake often do not exist yet, so a benchmark score says little about behaviour in a large existing repository.
How should we evaluate an AI coding agent for our team?
Use real tickets with genuine ambiguity, give each tool identical context and time, have engineers with no stake in the outcome do the review, and keep them blind to which tool produced which output where practical. Score behaviour under ambiguity and review burden, not just whether the code works.
What is the biggest risk when adopting AI coding tools?
Quiet plausible failure reaching production, because generated code no longer carries the surface signals of inexperience that reviewers used to rely on. The mitigation is knowing which of your engineers can reliably evaluate generated code, which is a question most teams have no way to answer.

PDP Quest exists because of the problem underneath all of these: when output stops indicating capability, you need another way to know who can actually do the work.

Keep reading

Three more notes on the same argument.