Introducing Tenki's code reviewer: deep, context-aware reviews that actually find bugs.Try it for Free
Code Review
Apr 2026

AI Reviewing AI: Shared Blind Spots in AI-on-AI Code Review

Hayssem Vazquez-Elsayed
Hayssem Vazquez-Elsayedproduct

Share Article:

Your AI coding agent writes a pull request. Your AI code reviewer approves it. Everybody's happy, the pipeline is green, and the code ships to production. Three weeks later, a senior engineer notices a race condition that both the generator and the reviewer missed, because they share the same fundamental understanding of how concurrent code should work.

This isn't a hypothetical. As AI coding agents produce thousands of PRs per week at companies like Stripe and Shopify, and AI review tools rubber-stamp them with increasing confidence, a new class of failure is emerging: shared blind spots between the generator and the reviewer. When both sides of your quality gate learned from the same training data and share the same reasoning patterns, certain categories of bugs become structurally invisible to the entire pipeline.

The Homogeneity Problem

Traditional code review works because humans bring different mental models to the table. One engineer spots the concurrency issue. Another catches the missing input validation. A third questions the architectural decision. The diversity of perspectives is the quality mechanism.

AI-on-AI pipelines collapse that diversity. If you generate code with Claude and review it with Claude (or even with a different model from the same family), you're essentially asking one perspective to check itself. The models share training corpora, optimization objectives, and the same statistical patterns for what "good code" looks like. They tend to produce similar code structures and, critically, they tend to overlook the same categories of problems.

A CodeRabbit analysis of over 1,000 repositories found that AI-written code produces 1.7x more issues per line compared to human-written code. But the more revealing finding is what those issues are: not syntax errors or style violations (the stuff AI review catches easily), but logic errors, missing edge cases, and architectural mismatches that require understanding the broader system context.

The failure pattern is consistent: AI models optimize for local correctness. They write code that looks right within the function or file they're working on. But they lack the broader context of how that code interacts with the rest of the system, what invariants matter to the business, and where the real concurrency or security risks live.

What Slips Through: Real Failure Modes

After reviewing incident reports and research on AI-generated code failures, a few categories stand out as consistently invisible to homogeneous AI review.

Race conditions and concurrency bugs. LLMs generate code that's syntactically thread-safe (they'll add a mutex if you mention threads) but structurally racy. The lock ordering is wrong, the critical section is too narrow, or the shared state is accessed through a path the model didn't consider. An AI reviewer trained on the same patterns will see the mutex and move on. It passed the pattern-matching test.

Security anti-patterns that look like security. AI-generated code frequently includes sanitization, validation, and authentication checks. But the implementation often has gaps: the check runs after the data is already used, the validation doesn't cover all input vectors, or the authentication is bypassed on a specific code path. AI reviewers see the security patterns and approve them without verifying completeness. An arXiv survey of bugs in AI-generated code identified security-related defects as one of the most persistent categories, precisely because the code superficially addresses the concern.

Business logic drift. An AI agent generates a pricing calculation that handles the common case correctly but misses a discount rule that only applies to enterprise customers. The AI reviewer doesn't flag it because the code is logically consistent within itself. Neither system has access to the business context that says "enterprise customers get net-30 terms, not net-15." This is the most dangerous failure mode because it produces code that works in testing and only fails with specific production data.

Subtle API misuse. Models trained on pre-2024 data confidently use deprecated APIs, outdated library conventions, or parameters that changed between versions. The reviewer, trained on similar data, doesn't flag the outdated usage because it matches the same statistical model of "correct" code.

Heterogeneous Review Chains

The most practical mitigation is to introduce diversity into the review pipeline. If your coding agent uses Claude, run your review with GPT-4 or Gemini (or vice versa). Different model families have different training distributions, different reasoning tendencies, and different blind spots. What one misses, the other is more likely to flag.

This isn't just theoretical. Research on LLM evaluation bias shows that models from the same family tend to rate each other's output higher and miss similar categories of errors. A 2025 MDPI study on bias in LLM evaluation found significant positional bias and instability when the evaluating model shares architectural lineage with the model being evaluated. Cross-family review reduces this correlation.

A heterogeneous review chain looks something like this:

  1. AI Agent A generates the PR (e.g., Claude, Copilot)
  2. AI Reviewer B from a different model family reviews it (e.g., GPT-4, Gemini)
  3. Static analysis and security scanning tools (SAST, dependency audits) run as a third check
  4. Human reviewer handles the dimensions that AI consistently gets wrong (more on this below)

The key insight is that diversity in the review pipeline matters more than review depth from a single perspective. Three passes from the same model family won't catch what one pass from a different family will.

The Prompt Injection Angle

There's a more adversarial version of this problem. If an attacker understands that your pipeline uses similar model families for generation and review, they can craft prompt injections that exploit shared instruction-following patterns. A carefully constructed comment or string literal in a dependency could influence both the generator (to introduce a vulnerability) and the reviewer (to overlook it).

This isn't a widespread attack vector yet, but it's a realistic one. Models that share similar instruction-following architectures tend to be susceptible to similar injection techniques. If one model treats a specially formatted comment as an instruction, another model in the same family likely does too. Heterogeneous chains add resilience here as well: different model architectures parse and prioritize instructions differently, making a single injection less likely to fool the entire pipeline.

Where Humans Still Win

Not every review dimension needs a human. The goal is to focus human attention where it creates the most value, and let AI handle the rest. Here's how the split tends to work in practice:

AI handles reliably:

  • Style consistency and formatting
  • Known bug patterns (null checks, off-by-one, resource leaks)
  • Test coverage gaps (detecting untested branches)
  • Documentation and naming convention enforcement
  • Dependency vulnerability scanning

Humans need to own:

  • Architectural fit (does this change belong in this service?)
  • Business logic correctness (does the code match what the business actually needs?)
  • Cross-service integration (how does this change affect upstream and downstream consumers?)
  • Security review for novel attack surfaces
  • Performance implications under realistic load (not just "is this O(n) or O(n²)?" but "will this query hammer the database during peak hours?")

The pattern here is clear: AI excels at checking code against known rules and patterns. Humans are needed when the review requires understanding things outside the code itself.

Context-Aware Review Reduces Shared Blind Spots

One reason the generator and reviewer share blind spots is that they often work with the same context window. The coding agent sees the file it's editing and maybe a few related files. The reviewer gets the diff. Neither has the full picture of how the codebase actually works.

Review tools that index the full repository and bring repo-specific context to the review step can partially bridge this gap. When a reviewer knows how a function is called across the codebase (not just what the diff shows), it can catch integration issues that a diff-only reviewer would miss. The review context becomes fundamentally different from the generation context, which breaks the shared-blind-spot pattern even if both use models from the same family.

This is where the architecture of your review tooling matters. A reviewer that only sees the PR diff is working with the same limited context as the generator. A reviewer that can query the full repo graph, understand call chains, and check how changed interfaces are consumed elsewhere brings genuinely new information to the review.

Building a Practical Review Pipeline

If you're running AI coding agents at any meaningful scale, here's a framework for structuring your review pipeline to minimize shared blind spots:

Use different model families for generation and review. This is the single highest-leverage change. If you generate with Anthropic models, review with OpenAI or Google models. The cross-family disagreement signal is extremely valuable; when two different model families flag the same issue, it's very likely real. When one flags something the other didn't, that's where the interesting bugs live.

Layer static analysis on top of AI review. SAST tools, type checkers, and linters use completely different analysis approaches. They don't have the same blind spots as LLMs because they don't use statistical pattern matching at all. They catch a different class of bugs and serve as an orthogonal check.

Route high-risk changes to human reviewers. Define what "high-risk" means for your team: changes to authentication, payment processing, data access control, infrastructure configuration, or anything touching customer data. These categories have the highest cost of failure and the lowest tolerance for the kind of subtle bugs AI-on-AI review misses.

Track your escape rate. Measure how many bugs make it past your review pipeline and into production. Categorize them. If you're seeing a pattern (e.g., "we keep shipping concurrency bugs that passed AI review"), that tells you exactly where your shared blind spots are and where to add a human checkpoint or a different analysis tool.

Give your review tools full repo context. A diff-only review is better than nothing, but it inherits most of the generator's context blindness. Review tools that index your repository and understand the broader codebase can flag issues like "this function is called in a hot loop that runs every 50ms" or "this interface change will break three downstream consumers." That context asymmetry between generation and review is what breaks the shared-blind-spot cycle.

The Uncomfortable Truth

AI-on-AI code review pipelines feel efficient. They're fast, they're cheap, and they produce a reassuring volume of review comments. But efficiency and thoroughness aren't the same thing. A review pipeline that catches 95% of style issues and 30% of logic bugs looks productive in the dashboard while quietly accumulating technical debt and security risk.

The teams that will ship the most reliable code with AI aren't the ones that fully automate their review pipeline. They're the ones that understand where the automation's blind spots are and put the right checks in the right places. That means heterogeneous model chains, layered static analysis, full-repo context for reviewers, and human oversight where it counts.

The goal isn't to distrust AI review. It's to recognize that any single perspective, human or AI, has limits. The best review pipelines have always been the ones with the most diverse set of perspectives. That principle hasn't changed just because the perspectives are now generated by language models.

Tags

#code-review#ai-code-generation#ai-blind-spots

Recommended for you

What's next in your stack.

GET TENKI

Smarter reviews. Faster builds. Start for Free in less than 2 min.