Safeguard
Security Guides•

How do you stop nightly vulnerability scans repeating the same alerts?

Alert on what changed, not on what exists. Give findings a stable fingerprint, track state, and notify only on new, reopened or worsened items.

Safeguard Security Team
3 min read

Make every finding carry a stable fingerprint, store its state, and notify only when a finding is new, reopened or changed in severity. A nightly scan that re-sends the full list teaches people to mute the channel, and then a real alert is missed.

Why repeats happen

A scan is stateless by default. Every night it reports everything it sees. If 80 known findings are open, you get 80 lines each morning. After two weeks, nobody reads them.

The fix is to separate two jobs: detecting findings and deciding whom to tell.

The fingerprint

A fingerprint must stay the same across runs for the same issue. A common recipe:

PartWhy
Advisory or rule IDWhich issue
Project or repositoryWhere
Package name and version, or file and ruleWhat exactly

Hash those together. When a package is upgraded, the version changes and the fingerprint changes, so the old finding closes and any new one opens.

State model

StateMeaningNotify?
NewFirst seen tonightYes
OpenSeen before, unchangedNo, except in a digest
WorsenedSeverity or exploit evidence increasedYes
FixedNo longer presentClose quietly
ReopenedFixed, then seen againYes
AcceptedSuppressed with a reason and an expiry dateNo, until expiry

GitHub's own alert event model follows a similar idea. Its dependabot_alert webhook has actions such as created, fixed, reintroduced, dismissed, reopened and auto dismissed (webhook events reference).

Steps

  1. Compute fingerprints in the scan job.
  2. Compare tonight's set to yesterday's stored set.
  3. Send immediate notices only for new, worsened and reopened.
  4. Send a weekly digest of everything still open, grouped by owner.
  5. Give accepted findings an expiry date so they come back for review.

A caution on baselines

When you first turn on a scanner, the whole backlog looks new. Mark the initial set as the baseline and alert on change from there, then work the backlog on a planned schedule. See baseline a new scanner without a finding flood.

Try it yourself

In the demo, look at how findings are listed with status and priority. Notice what you would want to be told about versus what can wait.

Click through it at your own pace, or open it full screen.

Where Safeguard fits

Safeguard offers SBOM and dependency scanning with reachability analysis, which helps rank what deserves an alert. A free scan is at gold.safeguard.sh/scan.

Quick check

Should I hide open findings completely?

No. Keep them in a digest and a dashboard so they are not forgotten. Just stop pushing them daily.

What if the fingerprint changes every night?

Then it includes something unstable, like a timestamp or line number. Remove it.

Sources

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.