Pređi na glavni sadržaj

4 Code Review Agents on a Vibecoded Codebase: What the Data Shows

02. mart 2026.RHRahmo Huseinagić10 min čitanja
Engineering2026AI Reviews
4 Code Review Agents on a Vibecoded Codebase: What the Data Shows

Analysis based on 3,310 review comments from 4 bots across a SaaS platform frontend and backend. November 2025 to March 2026. AI tools move fast. This is a snapshot, not a permanent truth.


This is a write-up from four months of internal R&D. We vibecoded a SaaS platform with five AI models: the OpenAI Codex family, Claude Sonnet and Opus, Gemini, and Cursor's native Composer. Development was fast and the focus was on functionality. Code quality enforcement came from four AI code review bots acting as a second layer, an AI committee making sure AI-written code doesn't quietly break what's already working.

Tech stack context: Spring Boot on the backend and Angular on the frontend.

We pulled every comment out of GitHub, counted them, and analyzed them across 107 PRs over four months.


The dataset

One caveat before the numbers: the bots did not run concurrently for the entire 4-month span, so the totals should not be compared directly. CodeRabbit and Codex ran through most of the testing window, Cursor was active from December to January, and PantoAI only during a short trial.

Bot Active period Review comments Frontend Backend
CodeRabbit Dec 2025 to Mar 2026 2,477 ~1,450 ~1,027
Cursor BugBot Dec 2025 to Jan 2026 328 ~160 ~168
PantoAI Dec 2025 to Jan 2026 (trial only) 273 ~120 ~153
ChatGPT Codex Nov 2025 to Mar 2026 232 ~88 ~144

(Inline review comments only; PR summaries and status messages were excluded.)

107 PRs had at least 2 bots active. 17 PRs had all 4. Those 17 are the only ones where any comparison is fair.


Bot by bot

codex-emoji ChatGPT Codex, the business logic reviewer

Codex was the only bot that regularly went into business and domain logic rather than syntax or style.

It mostly operates on a P1/P2 severity scale and shows little interest in formatting. Out of 232 comments, 116 were P1 critical and 67 were P2 major. When it flags something, it's usually serious.

What it caught that others missed:

  • Cross-tenant bypass: a slug-based endpoint had no permission check, unlike the identical ID-based one. Any authenticated user could read another tenant's data.

  • Admin creating cross-tenant resources: tenant validation returned immediately for admin roles without validating anything. This is the kind of hole that passes human review too, because the code looks like it is doing the check.

    Codex finding: admin can create cross-tenant service links

  • CSV export leaking data to restricted roles: every other listing endpoint in the same controller masked sensitive columns for restricted roles. The CSV export did not. Codex found it by comparing endpoints inside the same file, so it was reading the pattern across the whole controller rather than one method in isolation.

On the frontend, Codex flagged framework-specific problems: undeclared animation triggers, SCSS syntax errors in inline styles, and incorrect signal dependencies in Angular.

After we gave it an instruction file describing the project's architectural patterns, Codex started catching PRs that drifted from the established structure. On a couple of occasions it flagged deviations before they got merged, which would have been much harder to untangle or detect afterwards.

On Codex Plus the limit is roughly 10 review runs per week, and each run consumes quota. The 135 comments Codex produced in November 2025 hint at what it could do without that ceiling. It is not an expensive tool, but the limit is noticeable when you submit PRs at a high frequency.

Most useful for systems with layered permissions and multi-tenant logic, where business rule violations are the hardest thing to catch in review.


bugbot-emoji Cursor BugBot, the regression catcher

Good at catching regressions, especially when new features touch parts of the application that were previously working.

Of 328 comments, 171 were High or Medium severity bugs and 157 were low severity notes. Nitpick culture doesn't exist here. 68 findings were directly regression-related, and the bot was only active from December to January.

What it caught:

  • AI-generated MULTIPLE_CHOICE can fail validation: defaults are added for SINGLE_CHOICE, while MULTIPLE_CHOICE still requires explicit options. The generated question can pass generation and then fail on validation.

    Cursor finding: AI-generated MULTIPLE_CHOICE may fail validation

  • Validation blocking all uploads: new key validation rejected keys containing /. The system generates keys as tenantId/resourceId/filename, so every single upload would have failed, and failed silently.

  • Pagination count: the method used the current page size as the total result count, which showed users a false total and broke navigation.

On the frontend side: a valueChanges subscription clearing the form state in edit mode, and a computed() signal reading a plain property instead of a signal, so it never refreshed.

All bots take 7 to 15 minutes per PR depending on size. Run several and the waits stack up. Push, wait, fix, push, wait again, and a PR that should take an hour stretches into a full day. More bots means more coverage, but it also means more iteration cycles. Worth it, though you feel it.

Of everything we tested, this bot found the most silent issues that would have broken in production.


panto-emoji PantoAI, high volume with occasional brilliance

A lot of its comments contain "verify", "ensure", or "check". That pattern suggests it comments on what it sees in the changed files without much awareness of the broader codebase, which is where Codex and Cursor are stronger.

"Verify that the service handles null values correctly before processing." "Ensure error handling is implemented for edge cases." "Check that the configuration doesn't expose sensitive endpoints."

These comments are usually correct in the abstract, but the developer still has to work out whether they apply to this particular PR. Each one takes effort to read, and a tired developer will just skim past them.

It did have good moments. The best was catching that a new method, setPasswordIfPresent(), on the create user path could create accounts without a password hash, leaving the new user with no usable account and a possible security gap. None of the other bots found it. PantoAI also offered two fixes: check for a password hash and reject requests without one, or generate a temporary password, set activated to false, and send an invitation. That single comment carried more actionable information than many of CodeRabbit's "Critical" findings.

It was also strong on nits like unused imports and TypeScript type safety, where it gave more detail than CodeRabbit.

We used PantoAI only during the trial and did not subscribe. 273 comments in a month was enough to draw conclusions.

The signal-to-noise ratio is low, but the few good finds tend to be very good.


cb-emoji CodeRabbit, the consistency and style enforcer

CodeRabbit was the loudest bot in this dataset: 2,477 comments, about 70% of the total. We deliberately configured it to be aggressive.

Signal vs noise: 56% nitpick or trivial, 23% potential real bugs.

What CodeRabbit does well:

  • Consistency and consolidation: found repeated defaults, magic numbers, and duplicated patterns across files.

  • Accessibility: the only bot that consistently flagged ARIA issues (aria-label, role="alert", and screen-reader metadata). 207 comments were in this category.

  • UI quality: caught flickering and loading-state issues, such as clearing state before API responses were applied.

  • Outdated dependencies: the only bot that actively searches the web and flags outdated packages with known CVEs.

    CodeRabbit finding: outdated AWS SDK dependency

Where it falls short is regression detection. It does catch regressions, but not the way Cursor and Codex do.

CodeRabbit is useful for consistency and code smell detection, but only with strict configuration. I wouldn't use it as the primary regression bot.


When all four look at the same code

On a PR tightening authentication, all four bots commented on the same service file. Each saw something completely different:

Bot What it said
Cursor Login uniqueness bypass: input normalized in validation but not in setters, so two users can have the "same" login with different whitespace
PantoAI Mapper overwrites activated to false when the flag isn't in the payload, so every partial update silently deactivates the user
Codex DTO ID copied directly into the entity on update, opening up ID hijacking
CodeRabbit isBlank() vs isEmpty() inconsistency, missing @Mapping(target = "id", ignore = true)

Same tools, different focus

As mentioned above, the backend was where Codex and Cursor had their most successful runs. The recurring themes there were tenant isolation, role checks, and auth flows. CodeRabbit was mainly useful for null-safety and service layer consistency and rarely surfaced a security issue.

The frontend was CodeRabbit's domain:

  • CodeRabbit: produced 1,524 comments on the Angular project, mostly about component consistency and style rules.
  • Cursor: found framework-specific bugs, mostly around signal reactivity and form state.
  • Codex: caught small but build-breaking mistakes, such as wrong SCSS syntax in inline styles and undefined animation triggers.

Summary

No bot replaces human review, but each one replaces a specific type of human reviewer.

Role Bot Note
Security & business logic Codex The only one that understands what the code should do
Regression detection Cursor Fastest for "what does this break"
Consistency & style CodeRabbit With configuration; without it, just noise
Coverage & Security PantoAI High noise, but occasionally catches what others miss

What no bot provided was architectural feedback. None flagged that a service was doing too much or that a component was getting bloated. CodeRabbit is the only one that encourages writing tests, which is valuable, but without context on why this specific code is risky it's incomplete guidance.


False positives

Two types came up again and again. Cursor flagged SCALE as a regression risk when it was removed from an enum. It was right about the mechanism, since removing a string-stored enum value does break existing database records on load, but it had no way to know that SCALE was a hallucination from an earlier AI session and had never been a required attribute.

Codex, meanwhile, kept warning us about edits to existing Liquibase changesets. In production that warning is correct, because editing applied changesets breaks checksum validation. We were not deployed yet, so restructuring our migrations was fine. Codex had no way to know that either.

There were other false positives, but they were minor and not worth listing.

A bot doesn't know where you are in your project lifecycle. It flags what looks like a problem, and the developer supplies the context.


What actually gets used

Bots are worth using, especially on a vibecoded codebase where code quality enforcement is not the top priority. Every bot has configuration: CodeRabbit through a dashboard, Cursor through BUGBOT.md, Codex through its own instruction file. A well-configured bot catches the predictable issues automatically, which leaves developers to spend their time on the things that need judgment.

Running all four on larger PRs can mean 30+ comments in a single pass. That volume leads to notification fatigue and missed findings. One or two well-configured bots is more practical than four noisy ones.

Our day-to-day setup is Codex and Cursor: Codex for business logic and security, Cursor for regressions. CodeRabbit is worth the $15/month for consistency enforcement and code smell detection, particularly with the agent prompt feature for agentic workflows. PantoAI is worth a trial, not a subscription. The Codex limits are the main friction, at roughly 10 PR reviews per week on the Plus plan, which you notice on an active project.


Based on 3,310 review comments (3,785 total from GitHub; the remainder are PR summaries and status messages). November 2025 to March 2026.

Sažetak

Analysis of 3,310 AI review comments across Codex, Cursor, CodeRabbit, and PantoAI on a Spring Boot and Angular codebase.