The failure mode of AI code review isn't that it misses bugs. It's that it reports ten "issues" and eight of them are wrong, so you stop reading before you get to the two that matter. A single LLM pass over a diff is fundamentally a confirming process; you ask it "what's wrong with this?" and it pattern-matches against everything that superficially resembles a problem, with no built-in mechanism to check its own claims before handing them to you. The more thorough you ask it to be, the more false positives you get, because "be thorough" and "only report real things" pull in opposite directions for a model that has no adversary pushing back on its first draft.
The setup I use for PR review in my own tooling attacks this directly: instead of one model reviewing a diff, it's two roles with opposed incentives, followed by a third pass that adjudicates between them. A hostile finder whose only job is to break the artifact, a skeptical validator whose only job is to disprove the finder, and a final pass that keeps only what survives both. It's a Find → Validate → Adjudicate pipeline, and the interesting part isn't the LLM prompting; it's the pipeline architecture, and specifically the failure modes that show up once you actually try to build the validator honestly instead of just asking it to "double-check."






