Safeguard
Security Guides•

How do you move SCA from advisory to blocking across hundreds of teams?

A phased plan for turning SCA from report only into blocking gates across many teams without freezing delivery: baseline, warn, block new, then tighten.

Safeguard Security Team
4 min read

Move in four phases: scan in report mode, baseline what already exists, block only new high risk findings, then tighten by team as backlog shrinks. Never switch on blocking for existing debt on day one. That punishes teams for history and trains them to bypass the gate.

Phase 1: observe

Turn scanning on everywhere in report mode. No gates, no tickets yet. The goal is coverage and a first honest inventory. Track how many repositories have a scan result and how many manifests were parsed. If a tool cannot tell you what it failed to scan, fix that before moving on.

Send a short note to engineering leads explaining what is coming and when. Surprise enforcement is the fastest way to lose goodwill.

Phase 2: baseline

Record the findings that exist today as the baseline for each repository. From here on, "new" means introduced after the baseline date. This lets you say two honest things: legacy findings go to a scheduled backlog, and anything introduced now is the team's to fix now.

Ask your tool whether baselines are per repo, can be re-cut, and whether you can report new and inherited findings separately.

Phase 3: warn on new

Add pull request checks that comment on new high severity findings but do not block. Run this for two to four weeks. Watch two numbers:

  • How often a comment would have blocked.
  • How often developers disagree, and why.

False positives and unclear fixes get fixed here, while the cost is low. A reachability signal helps: findings in code paths your application never calls can be deprioritized so the first blocked builds are the ones that matter.

Phase 4: block new, then tighten

Turn on blocking for new findings at the highest severity, scoped to teams that finished phase 3 cleanly. Roll it out in waves, not all at once.

WaveWhoGate
1Volunteer and platform teamsBlock new critical
2Customer facing servicesBlock new critical and high
3Everyone elseSame as wave 2
LaterTeams with small backlogAdd age limits on old findings

Exceptions and the escape hatch

Every gate needs a documented way through: a time boxed exception with a named approver and an expiry. Without one, an urgent hotfix gets someone to disable the check entirely, which is worse. See what happens when a vulnerability exception expires.

Metrics for the program

  • Share of repos scanned.
  • Share of repos in each phase.
  • Median time to fix a new high finding.
  • Count of active exceptions and how many are near expiry.
  • Builds blocked per week and bypass count.

Questions to ask a vendor

Can I run a gate in evaluate mode per repo? Can I scope enforcement by team group? Can the same policy be promoted from warn to block with one change that is visible in an audit log?

Safeguard supports policies, gates and guardrails for this kind of staged rollout, along with reachability analysis to cut noise; autonomous remediation fix PRs are off by default with every category on Manual.

Try it yourself

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

Notice how many findings drop out once unreachable code is set aside. That is the list you want blocking builds.

Quick check

How long should the warn phase last?

Two to four weeks per wave is typical, long enough to see real pull requests and tune noise.

Do we have to fix old findings before blocking?

No. Baseline them, schedule them separately, and block only what is introduced after the baseline.

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.