Safeguard
Developer Tools•

How do you roll out a scanner upgrade without a finding flood?

A scanner upgrade can add hundreds of findings overnight. Run shadow scans, diff results, canary a few teams, and keep new detections apart from new code.

Safeguard Security Team
4 min read

Roll out a scanner upgrade in stages: run the new version in shadow mode beside the old one, diff the findings, canary a few repositories, then widen. Label new findings caused by the upgrade separately from findings caused by new code, so teams do not get blamed for the scanner changing.

Why upgrades cause floods

A newer scanner often detects more. It may support a new ecosystem, parse a format it skipped before, or ship updated rules. All of that is good, but if the upgrade ships to every pipeline at once, every team sees a spike in findings and a failing gate on code they did not touch. Trust in the tool drops, and exceptions get filed in bulk.

There are three sources of change after an upgrade: new detections, changed severity or rule logic, and removed detections. The third is easy to forget. A fix to a noisy rule can make findings disappear, and you want to know that was intended.

A staged rollout

  1. Read the release notes and note changes to analysers, rules and the database schema.
  2. Run the new version in shadow mode on a sample of repositories, in parallel with the current version, without gating or notifying anyone.
  3. Diff the output. Group differences into added, removed and changed.
  4. Review a sample of added findings for accuracy. If a rule produces obvious false positives, hold the upgrade or disable that rule with a documented reason.
  5. Canary: switch a handful of willing teams, with gates in report-only mode.
  6. Widen in rings, for example internal platform repositories, then one business unit, then everyone.
  7. Turn gates back to blocking per ring once the findings have been triaged.
RingModeExit condition
ShadowParallel, invisibleDiff reviewed, no accuracy surprises
CanaryReport onlyOwners confirm findings are real
EarlyGate on new code onlyNo unexpected blocking
GeneralNormal policyBaseline accepted

Baselining

For the general ring, snapshot the findings that appear because of the upgrade and mark them as baseline. Gate only on findings that are new relative to that baseline, then burn the baseline down on a schedule. This keeps the pipeline moving while still giving the debt a visible owner and a date.

Keep the version of the scanner and the database in every result, so you can tell later whether a finding appeared because of code or because of the tool.

Rollback

Make the scanner version a configuration value, not something baked into hundreds of pipeline files. If an upgrade misbehaves, you should be able to revert it in one change. Rolling back also means having kept the previous version's cache and database available.

Try it yourself

Click through it at your own pace, or open it full screen. Look at how findings are grouped and prioritised, which helps when a batch of new ones arrives at once.

Safeguard's policies, gates and guardrails let you choose when a finding blocks a change, which supports a report-only phase first. You can try the free scan at https://gold.safeguard.sh/scan.

Quick check

Should I wait a few weeks before adopting a new scanner version?

A short delay is reasonable for a major version. Use that time for the shadow run rather than waiting passively.

How do I explain a spike to teams?

Tag findings with the scanner version that first reported them, and tell teams that baseline findings are a tool change, not a regression.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.