Code review without the noise: one inline thread per remark, zero walls of text
Most teams that try a PR-review bot mute it by sprint two. The reason is almost always the same: the bot drops a top-level essay on every PR, posts the same nit on every diff, and leaves dead "resolved" threads behind. Here's the design choices that make a code-review bot survive the third week.
The reason teams mute review bots
The first week is fine. The bot is new, the team is curious, and most of the comments land. Then the same nit shows up on the same line of three PRs in a row — the team agrees once, twice, three times that "no, this is fine in app/Http/Middleware". The fourth time, somebody mutes the channel.
The pattern is not a bug. It's the inevitable outcome of a tool that has no memory, no per-repo opinion, and a default behaviour of "speak on every PR even if there's nothing material to say". Once the team has muted the channel, the actually-useful remarks die in there with the noise.
The design choices that fix it
Code review on CodeGuards is built around four hard constraints. None of them is a feature ticked on a comparison page; they are deliberate refusals to do the noisy thing.
- One inline thread per remark, anchored to the line. No top-level summary essay. If the bot has nothing to say on a given PR, the verdict is
cleanand no comments are posted at all. The discussion tab does not grow by accident. - Suppress chip on every thread. One click with a one-line reason. The remark is dismissed, the GitLab thread is auto-resolved via the API, and the same fingerprint stops surfacing on this repo for both exact matches and category-path neighbours — so a rephrased Claude output still hits the same rule, and you don't suppress the same nit a dozen times.
- Per-repo, not global. A pattern accepted on the docs repo doesn't lower the bar on the payments service. The same engineering team can hold two different stances on the same rule, in two different repos, without writing a YAML file to express it — the suppression is the policy.
- Re-runs update threads in place. A new push doesn't fan out into a new comment block — the existing threads are updated. The MR's discussion tab stays exactly as long as the number of unresolved remarks, regardless of how many times you push.
Verdicts that mean something
The Code review pipeline emits one of two verdicts per run: clean or remarks. There is no pass-with-warnings, no info-level-only, no fourteen-state colour wheel. The verdict is binary because the action that follows it is binary: either a human can merge without further thought, or there's at least one thread to read.
This sounds like a small thing. It's not. A bot with five severity levels invariably ships with two of them muted by default and the other three ignored by the team within a week. A verdict that's either "go" or "go look" stays meaningful.
The thread that closes itself
On GitLab, when you (or the bot, after you click Suppress) agree a remark is fine, the discussion is auto-resolved through the GitLab API. The MR's "unresolved threads" count drops. The merge button stops being grey. The bot's contribution to the merge gate is symmetric to a human reviewer's — it can flag something, and it can take the flag back.
GitHub's REST API doesn't expose a thread-resolution endpoint, so on GitHub the same flow posts a closing reply but cannot collapse the thread. We say so on the product page rather than pretend otherwise; the suppression itself still takes effect and the same fingerprint stops surfacing.
What this looks like after two weeks
For a team shipping 20–50 MRs a week, the curve is consistent: a noticeable cluster of inline remarks in the first three days, a sharp drop in the repeat-remark rate by day eight as the per-repo memory compounds, and by week two the bot is mostly silent on day-to-day style nits and loud on the things that actually matter — architecture-boundary bypasses, missing tests on a new public service, swallowed exceptions on a payment path.
That's the version of "code review on every PR" we wanted to ship. Not a bot you tolerate; a bot that stops being noticed when it's right and stops being there when it has nothing to say.
Pair it with the other half of the review
Code review answers "will this change drift the codebase?". The other product on the same workspace — Security scans — answers "will this change ship a vulnerability?". Same diff, same MR, two pipelines, one audit trail. See the Code review product page for the full surface, or the pricing page for what taking both as a bundle costs.