Supply Chain Assurance — Multiple Check IDs on the Same File with Different Severities
Overview
Supply Chain Security scans can report multiple Aqua Check IDs for the same source file and line, each with a different severity (for example, one High and one Critical finding on the same secret pattern). Image and repository Assurance Policies evaluate each finding independently against all applicable policies.
This article explains how overlapping severities affect Fail PR and Fail Build outcomes when multiple policies target different severity thresholds.
How Assurance Policies Evaluate Findings
Independent finding evaluation
- Each Check ID / finding is evaluated on its own merits.
- Two different Check IDs on the same file and line are two separate findings, not a single merged result.
Cumulative severity controls
Severity selectors in assurance policies are cumulative:
| Policy control | Evaluates |
|---|---|
| High and above | High and Critical findings |
| Critical and above | Critical findings only (subset of "high and above" for critical-only policies) |
A High-threshold policy still matches Critical findings because Critical is above High.
Example Configuration
| Policy | Severity | Fail PRs | Fail Builds |
|---|---|---|---|
| Policy A | Critical and above | Enabled | Enabled |
| Policy B | High and above | Enabled | Disabled |
Scan contains on one file
- Check ID
passwords-in-plain-text— High - Check ID
stripe-secret-token— Critical
Build scan result
- Policy A matches the Critical finding → build fails (exit code 13 when enforcement applies).
- Policy B matches both High and Critical findings, but Fail Builds is disabled → warning only for build failure purposes.
Outcome: the build fails because of Policy A and the Critical finding, even though Policy B does not fail builds.
The High-severity policy does not override or downgrade enforcement from the Critical policy.
PR scan result
Both policies have Fail PRs enabled. A matching violation fails the Aqua PR scan. To block merges in Azure DevOps (or similar), configure the Aqua pipeline as a required build validation on the target branch.
Best Practices
- Align severity policies with intent — Use Critical-only build blocking when only critical secrets should stop releases; use High for PR gates with softer build rules.
- Avoid duplicate Check ID overlap — Custom rules may increase overlapping detections; tune rules if noise is high.
- Test in lab — Run a repository scan with known multi-severity fixtures before changing production policies.
- Review exit codes — Build scanners return non-zero exit codes when any enforced policy fails; document expected codes in CI templates.
Verification
- Run a build scan on a test repository containing High + Critical findings on the same line.
- Confirm Policy A fails the build and scanner exit code reflects enforcement.
- Confirm Policy B logs warnings without failing the build (when configured).
- Run PR scan and confirm both policies can fail PR status when violations match.
Platform Coverage
| Component | Platform |
|---|---|
| Supply Chain Security scans | SaaS |
| Assurance Policies | Repository / build / PR pipelines |
Related Resources
Did you find it helpful? Yes No
Send feedback