Multi-model code review experiment

Four AI models reviewed the same application.

Claude Opus 5, Claude Opus 4.8, OpenAI Codex 5.6 Sol, and Grok 4.5 independently reviewed a FastAPI, SQLite, and React image gallery. They agreed on the biggest risks—but each model also found important defects the others missed.

Both Claude reviews ran inside isolated cloud containers; Grok reviewed a static clone; Codex also inspected the running production installation.
Original prompt used for all four reviews

“I want you to do a full code review of the davisclaw gallery app. Can you find it in the workspace?”

At a glance

The models were complementary rather than interchangeable.

Broadest review

Claude Opus 5

Isolated cloud container

Best at tracing interactions across backend, frontend, database, scripts, deployment, accessibility, and performance.

High-impact fundamentals

Claude Opus 4.8

Isolated cloud container

Prioritized concrete runtime-breaking bugs, security exposure, data integrity, frontend state, type drift, and maintainability.

Strongest verification

Codex 5.6 Sol

Production runtime + source

Found fewer issues, but validated them with tests, builds, browser checks, service inspection, and temporary database reproductions.

Most focused

Grok 4.5

Static clone

Produced the shortest blocker-focused review and contributed several useful write-path edge cases.

36Numbered findings in Claude’s report
18Numbered and minor findings in Opus 4.8’s report
7Actionable findings in Codex’s report
12Severity-counted findings in Grok’s report
4/4Found the central network/file-exposure risk
Bottom line: Opus 5 supplied the broad master list, Opus 4.8 added a compact set of high-impact fundamentals and distinct frontend defects, Codex supplied the strongest runtime evidence, and Grok added several distinct edge cases. The combined review was materially better than any single report.

What the reports emphasized

These charts use the reports’ stated finding totals and the consolidated matrix below.

Reported findings

Raw counts are not perfectly equivalent: Opus 5 split more issues into separate findings, Opus 4.8 included six minor findings after its numbered list, and Codex applied a higher verification threshold.

Clear matrix coverage

Number of consolidated bug manifestations each model clearly reported.

Consolidated bug matrix

Search, filter, or select a category. “Partial” means the report found the underlying architecture or a closely related manifestation.

FindingCategoryOpus 5Opus 4.8CodexGrok

Why the models differed

Different access

Both Claude reviews ran inside isolated cloud containers. Grok reviewed a static clone. Codex could inspect the running service, browser behavior, launchd state, and surrounding workspace instructions, enabling findings such as the heartbeat/launchd conflict and a measured mobile-layout failure.

Different stopping rules

Opus 5 continued deeply into architecture, concurrency, accessibility, performance, and maintainability. Opus 4.8 emphasized the highest-impact concrete defects. Codex appeared to report only issues it could strongly verify. Grok concentrated on security and write-path integrity.

Different review styles

Opus 5 followed cross-component data flows. Opus 4.8 delivered a pragmatic severity-ranked review. Codex tested selected paths deeply. Grok delivered a compact release-blocker scan. Each approach surfaced a different defect profile.

Important risks found by all four
  • Unauthenticated network exposure combined with arbitrary local-file registration.
Notable Opus 4.8 findings

Refresh requests silently fail after more than 200 images are loaded; delete cleanup is inconsistent; empty-trash lacks a shared-file reference check; frontend types drift from backend responses; detail navigation dead-ends at the loaded boundary; and the documented schema and sort behavior are stale or misleading.

Notable Opus 5-only findings

Misleading empty-trash scope, tombstone over-blocking, JPEG recompression, full-resolution images used as thumbnails, SQLite concurrency deficiencies, pagination races, frontend stale-state races, accessibility gaps, and numerous test and deployment issues.

Notable Codex-only findings

The heartbeat instructions could conflict with launchd; the mobile layout was measured as unusable; and tag deletion was specifically reproduced as surviving and then returning after restart.

Notable Grok-only findings

A loose-file import path could continue after receiving None and store a bogus path, while malformed batch actions could return HTTP 200 instead of a client error.

The practical takeaway

Best overall coverageClaude Opus 5
Best compact fundamentals reviewClaude Opus 4.8
Best runtime verificationCodex 5.6 Sol
Best concise blocker scanGrok 4.5

Running multiple coding agents was not redundant. Agreement raised confidence in the highest-risk defects; disagreement exposed blind spots and identified where human follow-up was most valuable.