Policy Gates

Policy gates are automated checks that evaluate release candidates against configurable security criteria. Each gate produces a pass/fail result with detailed reasoning for policy decisions.

CVE-Aware Gates

GateIDDescription
EPSS Thresholdepss-thresholdBlocks CVEs above EPSS probability threshold
KEV Blockerkev-blockerBlocks CVEs in CISA Known Exploited Vulnerabilities catalog
Reachable CVEreachable-cveBlocks only CVEs with reachable code paths
CVE Deltacve-deltaBlocks releases introducing new high-severity CVEs vs baseline
Release Aggregate CVErelease-aggregate-cveEnforces aggregate CVE count limits per release

Gate Configuration

Gates are configured via appsettings.json under the Policy:Gates section:

{
  "Policy": {
    "Gates": {
      "EpssThreshold": {
        "Enabled": true,
        "Threshold": 0.6
      },
      "KevBlocker": {
        "Enabled": true,
        "AllowGracePeriod": true,
        "GracePeriodDays": 14
      },
      "ReachableCve": {
        "Enabled": true,
        "SeverityThreshold": 7.0
      },
      "CveDelta": {
        "Enabled": true,
        "NewCveSeverityThreshold": 7.0,
        "OnlyBlockReachable": false
      },
      "ReleaseAggregateCve": {
        "Enabled": true,
        "MaxCritical": 0,
        "MaxHigh": 3,
        "MaxMedium": 20
      }
    }
  }
}

Environment Overrides

Each gate supports per-environment configuration overrides:

{
  "Policy": {
    "Gates": {
      "CveDelta": {
        "Enabled": true,
        "NewCveSeverityThreshold": 7.0,
        "Environments": {
          "development": {
            "Enabled": false
          },
          "staging": {
            "NewCveSeverityThreshold": 9.0
          },
          "production": {
            "NewCveSeverityThreshold": 7.0,
            "OnlyBlockReachable": true
          }
        }
      }
    }
  }
}

DI Registration

Register all CVE gates:

services.AddCvePolicyGates(configuration);

Or register individual gates:

services.AddEpssThresholdGate(configuration);
services.AddKevBlockerGate(configuration);
services.AddReachableCveGate(configuration);
services.AddCveDeltaGate(configuration);
services.AddReleaseAggregateCveGate(configuration);

Gate Results

All gates return a GateResult containing:


Last updated: 2026-01-19.