I asked two models to check a decision I had already made. Both said I was wrong. Both also rejected the fix my own agent had proposed. The agent knew far more about the problem than either of them, and that is exactly why it could not have told me any of this.
The decision we had already made
I run a project-manager agent that owns my task board. It knows the repos, the label vocabulary, which boards map to which projects. We spent a session working out a rule: when a reviewer agent blocks work that the worker agent believes is correct, who ends the argument?
My answer was the worker. It wrote the code. It ran the tests. It can see things the reviewer, working from a summary, cannot.
The agent agreed with me. Then it went further and proposed its own refinement: send anything still unresolved up to the director agent that coordinates the run.
So we were finished. Two of us, agreed, with a rule ready to write into the harness.
Then I told it to run /brainstorm, which puts the same question to OpenAI’s Codex CLI and to Anthropic’s Fable 5 separately, neither seeing the other’s answer.
Both of them said no, and not just to me
Codex went at my answer first. A worker allowed to close its own dispute can “redefine acceptance, dismiss objections, or produce persuasive but selective evidence.”
Fable landed on the same place from a different direction. Most context is not most reliable. The worker’s context includes its own mistakes, and its rebuttal is exactly as unverified as the report it is defending.
Then they both turned on my agent’s fix. Codex: routing the dispute to a director that never held the details “merely moves the gavel to someone less qualified.” Fable got there in fewer words. The hardest disputes generate the biggest context, so handing the decision to the one participant who cannot hold it is not an escalation at all. The coin-flip-with-extra-steps line is mine, not theirs.
Two models, no contact with each other, both rejecting both positions in the room. That is not something I can get by asking again, more carefully.
Why my own agent was never going to catch this
What my agent had
My framing, my constraints, every wrong turn we took getting there, and the assumptions I never said out loud. It could not doubt them. It helped build them.
What Codex had
None of the four. It got a one-page brief and no history, which is precisely why it could reject the answer.
The agent was not worse than Codex. It was closer, and closeness is what costs it independence.
This is the part I had backwards for months. I assumed the best reviewer was the one who knew the most about the problem, so I kept asking the agent that had been with me all session.
Here is a real one, the kind neither of us said out loud. We both assumed the block had to be resolved inside the run. Waiting until morning and letting me read it was never on the table, because neither of us put it there. Fable’s answer was to wait until morning and let me read it. My agent could not have proposed that. It was working inside a boundary we had built together and never named.
An agent in your conversation tends to agree with you the way a colleague who sat through the whole meeting does. Not because either of you is right, but because you built the frame together and neither of you can still see its edges.
That colleague can also be the best reviewer in the building. Informed and independent are two separate axes, and the mistake I kept making was reading a high score on the first as though it were a score on the second. Closeness does not disqualify a reviewer. It costs them independence, and you have to buy that back somewhere else.
What feels like a check: asking again, asking the agent that knows the codebase best, asking anything that sat through the session with you.
What is actually a check: a reviewer that never watched you decide, working from a written brief. A different lab on top of that removes one more thing you share, though never all of it. They still read your brief.
I wrote the opposite of this in June. A post here called Fable as the driver argued that a second AI checking the first is fake independence, because both were trained on the same material. That paragraph is now corrected on the page, with the old claim quoted so you can see what changed. The trap it named is real. I drew the boundary in the wrong place. The axis is not how many models you ask. It is what they share with you.
The line worth stealing
Fable’s most useful contribution was not its verdict. It was a rule about how a reviewer is allowed to back down.
The withdrawal rule
Do
- A reviewer withdraws a finding only on recomputed evidence, never on argument
- A rebuttal must be a command the reviewer reruns, not prose it finds persuasive
- Prose rebuttal, however good, means the finding stands
- It governs findings you can recompute. A taste call has no command to rerun
The reasoning is uncomfortable and correct. A worker’s rebuttal will always read better than its original report, because the rebuttal is written to persuade a reader while the report was written to describe a result. If you let a reviewer withdraw because it found the argument convincing, you have built a system that rewards writing quality and calls it verification. This generalises well past reviewer agents. It is the same instinct as the Ground Truth Rule: go and get the value, do not accept the account of it.
The moment it disclosed its own interest
Fable was being asked how much authority a Fable reviewer should hold. It recommended the strongest version available, where the block stands until the reviewer itself withdraws. Then it said, unprompted, that it has an interest in that answer, and that Codex’s agreement should count for more than its own, because Fable shares a training lineage with the model that was orchestrating the whole run.
That disclosure is to its credit and it does not neutralise anything. I weighted it down anyway. But it is worth noticing that the model volunteered the one fact most damaging to the weight of its own endorsement, which is more than most consultants manage.
What this cost, and what I still cannot tell you
The cost is real but small. I measured Fable consults properly back in June: around 23k tokens and past five minutes for a real review, and $0.43 in setup tokens for a throwaway ping. That is rounding error against shipping a rule that turns out to be wrong and then unpicking it from a harness three weeks later.
Here is the part I am not happy about. I cannot tell you how often this works. /brainstorm writes no record, so there is no count of how many times I have run it and no count of how many times it changed the plan. This post is one case, described honestly, and one case is not a rate. Every run I did before noticing that is a data point I cannot get back. If you build something like this, log the outcome from the first run, not the fiftieth.
One more thing, because it happened while I was writing this. I put the post through the same loop. Fable reviewed it, blocked it, and listed seven things to fix. Then it told me to get a Codex pass as well, because it shares a training lineage with the models this post is about and had an incentive to like it. Codex found something Fable had not: I had written that closeness disqualifies a reviewer, which proves too much, and a colleague who sat through your meeting is the obvious counterexample. Informed and independent are two axes and I had collapsed them into one. That correction is two sections up. I did not get it from the reviewer that had been with me longest.
Related:
- Fable 5 as the Driver: When to Let One AI Instruct Another: the post this one corrects, on when an AI instructor is worth its cost
- AI Trusts Your Docs. That’s the Problem.: the Ground Truth Rule, which the withdrawal rule is a special case of
- Don’t Assume AI Fixes Things Properly: what happens when nobody independent checks the work