Why your AI's self-check misses its own mistakes, and the subagent recipe that catches them
A same-thread "double-check this" rarely surfaces the error, because the model reviewing it shares the blind spot with the model that produced it. The fix is a fresh, independent subagent whose only job is to try to disprove the output, and the Claude Code file that builds one.
Most people who bolt a verification step onto an AI workflow do it the same way: the model finishes, and they ask it, in the same conversation, "are you sure about that?" or "double-check this before I use it." It feels like a safeguard. It rarely catches anything, and there is now a specific, measured reason why.
The blind spot has a name and a number
A July 2026 paper, Self-Correction Bench, ran a controlled test across 14 open-weight, non-reasoning models — Llama-3.3-70B, Qwen2.5-72B, Mistral-Small-24B, and eleven others. The researchers injected an identical error two ways: once appended to the model's own prior output, once planted in the user's message instead. Same error, same wording, different origin. Every model was dramatically better at catching the error when it showed up in someone else's text than when it showed up in its own. Averaged across the 14 models, the "self-correction blind spot" rate was 64.5 percent — meaning the models caught the identical mistake in the user's text roughly two-thirds more often than in their own.
The researchers' explanation is about training, not intelligence. Human-written training demonstrations are overwhelmingly examples of getting it right the first time; there are very few examples of a model catching and reversing its own error mid-answer, because people do not write "here is my mistake, let me fix it" into instruction data on purpose. Models trained purely on that kind of supervised data inherit the gap. Reasoning models trained with outcome-based reinforcement learning are the exception: DeepSeek-R1 and the Qwen3 reasoning variants showed a small or even negative blind spot in the same test, because they learned to catch errors from being rewarded for the final answer, not for looking confident along the way.
Worth being precise about what this does and does not tell you. The paper also found that appending the single word "Wait" after a model's flawed reasoning step reactivates self-correction, cutting the blind spot by 89.3 percent on average — but that was tested as a mid-generation continuation trick on non-reasoning open-weight models, not as something to paste into a finished Claude or GPT prompt asking it to review a completed answer. Do not take that as a Claude tip. Take the underlying finding as the useful part: a model reviewing its own prior output is working with the same blind spot that produced the output, and asking nicely does not route around that.
Why re-asking in the same thread does not fix it
Repeating "are you sure?" in the same conversation stacks two problems on top of the blind spot itself. First, the review still runs in the same context that generated the error, so anything that made the model confident the first time is sitting right there making it confident the second time. Second, models are tuned to be agreeable in-thread — you already got an answer, so the natural continuation is to defend it, not tear it apart. You are asking the one participant least likely to find the mistake.
The fix: a fresh, adversarial, independent check
Three changes turn a weak self-review into an actual check:
- Fresh context. The verifier should not inherit the conversation that produced the claim. It should see only the claim itself, stripped of the reasoning that led to it, so it has nothing to defend.
- Refutation framing. Do not ask "does this look right?" Ask "try to prove this wrong." A model told to confirm will confirm. A model told to find the flaw looks for one.
- More than one, in parallel, majority vote. A single independent verifier still has its own blind spots. Running two or three in parallel and requiring agreement filters out the cases where one verifier's miss would have shipped unnoticed.
This maps directly onto a feature Claude Code already has: subagents. Every subagent spawn starts with a fresh, isolated context — it does not see your conversation history, your reasoning, or the model's confidence going in. That is exactly the isolation the self-correction research says you need, and you do not have to build it from scratch.
The recipe
Save this as a project subagent, .claude/agents/skeptic.md:
---
name: skeptic
description: Independently checks one specific claim or output. Use before a
factual claim, number, or generated conclusion ships anywhere a mistake
would cost someone time or trust.
tools: WebSearch, WebFetch, Read, Grep
model: sonnet
---
You are given exactly one claim and no other context — not who wrote it,
not why, not what it is for. Your only job is to try to disprove it.
If the claim references a fact, a number, or a source, find the primary
source and check it directly; do not rely on a summary of the summary.
If it is a code claim, read the actual code path it describes.
Respond with CONFIRMED only if you found direct, primary evidence the
claim holds. Respond with REFUTED and say exactly what contradicts it if
you did not. A false CONFIRMED is worse than an over-cautious REFUTED —
when unsure, say REFUTED and explain the gap.
Then, instead of asking the model that wrote something to check its own work, ask Claude Code directly:
Spawn three independent instances of the skeptic subagent against this
claim: "<the exact claim, with no surrounding context>". Run them in
parallel. Only treat the claim as safe to ship if at least two of the
three respond CONFIRMED.
Because each instance is a fresh subagent call, none of the three sees the others' answers or the original reasoning that produced the claim — which is the entire point. If two agree and one does not, read the dissent before you ship; it is often the one that is right.
Where this earns its cost
Running three parallel subagent checks costs real time and tokens, so it is not for every sentence an AI produces. Save it for the output that acts on your behalf without a human reading it first: a number that goes into a report someone else will forward, a claim in a scheduled digest, a fact a customer-facing draft depends on, a conclusion a downstream automation will act on directly. For a Slack draft you are about to read yourself before sending, your own eyes are the cheaper and perfectly adequate verifier. The pre-ship eval set pattern batch-tests a feature before release; this pattern checks one specific output at the moment it is about to leave your hands unread. They solve different problems and are worth running together on anything that ships unsupervised.
The habit worth building is narrow: stop typing "double-check this" into the same window. Spin up something with no stake in the answer already being right.
Get the next post when it ships
One email on Sunday with the new post and a short list of what shipped that week — new guides, tool updates, and a couple of links worth reading.