Skip to content
MULTI-AGENT CODE REVIEW

A code review platform that has to prove its own findings

Most review tools produce more to read than to fix. We built one where several analysis agents work the same change in parallel, a second pass argues against everything they found, and what survives arrives with replacement code and the evidence behind it. One engine sits behind the terminal, the editor, the API and an unattended service, so a review means the same thing wherever it starts.

  • IndustryDeveloper tooling
  • EngagementIn-house product build
  • StatusIn active use, still being extended
  • Multi-agent systems
  • Code review
  • Static analysis
  • Developer tooling

One engine behind every way of asking for a review

The platform reads a proposed change, works out what it touches, and puts it in front of several analysis agents at once. Their findings are merged, deduplicated, ranked by severity and capped, so what comes back is a queue to work down from the top. It is not a linter, and it is not one model's opinion written up as a verdict.

The same engine runs whether the request comes from a terminal command, from an editor, from the API, or from a background service watching a repository on its own schedule. They share one history, so a review started at the keyboard is the review the dashboard shows later, and a pull request keeps a single comment that gets updated in place.

A wargame console: red, blue and green team panels attack, patch and validate a code change side by side, above a pipeline running from recon to ship
The adversarial mode in progress: one wave looking for a way in, one writing the patch, one checking whether the patch actually closes what was found.
THE CHALLENGE

Why another review tool

Automated review had a credibility problem before it had a coverage problem. These are the three failures we designed against.

Noise costs more than it catches

A tool that flags formatting churn, reordered imports and confident guesses teaches a team to skim. Once review output is skimmed, the one finding that mattered gets skimmed with it.

A finding without a fix is another ticket

Review comments that describe a problem and then stop hand the work back to someone who was already busy. The reader still has to work out what the corrected code looks like, and often decides it can wait.

Every surface behaved differently

Review in the terminal, review in the editor, review on a pull request and review on a schedule were separate tools with separate behaviour and separate history. The same change could pass one and fail another.

THE SOLUTION

What we built

One pipeline, four ways to reach it, and several layers of doubt between a model's guess and something a person is asked to read.

One review engine behind every surface

A single pipeline parses the change, filters it, enriches it, dispatches it to agents and merges the result. Formatting and storage belong to whoever called it, which is why the surfaces can differ without the review differing.

  • A terminal command, an editor integration, an API with live updates and a background service all run the same review
  • One shared history, so a review started at the keyboard is the review the dashboard shows later
  • Model providers sit behind a single interface, so adding or swapping one is a configuration change

Findings that arrive with the fix attached

Five severity levels collapse to three actions, fix now, fix soon and review later, so a report can be worked from the top. Each finding is enriched from a map of the code, so it points at a real path in the repository.

  • Every finding carries replacement code, and the schema rejects one that does not
  • Reviews are enriched from a symbol index: which functions changed, who calls them, which tests cover them, and what imports what
  • Findings carry an identity derived from their content, so reformatting a file does not resurrect an issue already handled

Five layers between a guess and a report

Each layer is cheaper than the one after it, so most of what would have been noise is gone before anything expensive happens. The last layer is the strict one: the platform tries to prove the finding against the source.

  • Whitespace, comment and import-only changes are dropped before a single model is contacted, and a static pattern pass marks the risky code first
  • Low-confidence findings are removed straight after review, then a second pass argues against every survivor and keeps only what it cannot talk down
  • Where it can, the platform writes a small program that checks the claim against the real source inside an isolated sandbox, and a check that cannot be run leaves the finding in place

An adversarial mode that proposes and never applies

A three-wave exercise against a codebase: one set of agents hunts for something exploitable, a second writes the patch, and a third checks the patch against the hole it claims to close. It reports back verified, partly fixed, still open, or a false alarm.

  • Attackers work under distinct briefs, a business-logic auditor, a hostile customer, a chaos engineer, an observability specialist and a compliance reviewer, so one sweep covers five different instincts
  • Patches are produced as diffs and validated, never written to the repository, so a person decides what lands
  • The agents work inside a command allowlist with destructive operations blocked, and their output is screened for injected instructions
THE IMPACT

What changed in practice

We describe what the platform does. No accuracy figure appears here, because any such claim would need a measurement we have not published.

One queue

What a review produces

Findings merged across agents, deduplicated, ranked by severity and capped. What arrives is one ordered list, worked from the top.

Checked, not guessed

What reaches a person

Trivial changes never reach a model, weak findings are dropped, survivors are argued against, and where it can the platform proves the finding against the source first.

A person decides

How changes land

Fixes and patches arrive as proposals, with a preview and a backup of the original file. Nothing is written to a repository without someone accepting it.

Last reviewed:

Does your review process produce more reading than fixing?

Tell us how code gets reviewed at your company today and where it stalls. We will tell you what is worth automating and what is not.

Discuss your project