A team uses Claude Code to generate a Python script for processing customer data. After it's generated, they ask the same Claude session: "Now review this script for issues." Claude reports the script looks good. They later open a fresh Claude Code session, share only the script (without the generation history), and ask the same question. The fresh session catches three real bugs the original missed.
Why does the fresh session do better?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
Self-review is structurally limited because the model retains the reasoning context from generation. It tends to validate rather than question its prior decisions — the same chain of thought that produced "this is the right approach" is still loaded. An independent review instance reads only the artifact, with no prior commitment to the design choices, and can therefore catch issues the original instance won't. For serious review, use a separate session.
Both sessions use the same model with the same training. The difference is context, not capability.
The question stipulates the script is the same. Reaching for "maybe it changed" when the structural explanation is right in front of you is a common debugging failure.
This is the most genuinely tempting wrong answer, because intuitively more information should help. But generation context isn't review-relevant context — it's commitment-relevant context. The original session knows why it made each choice, which makes it more likely to defend each choice. The fresh session reads the artifact without prior commitment and judges it on what it is, not what was intended. "The fresh session must have flagged tradeoffs" assumes the original session was right about those tradeoffs — which is exactly what self-review can't reliably check.