Baselines & incremental adoption
Onboard a legacy repo sanely.
Turning a scanner on against a large existing repo produces hundreds of findings at once — and a wall of red that developers will route around or ignore. Baselines solve the adoption problem: you generate a baseline of the current findings, and Checkov then only fails on new issues introduced after that point, while the pre-existing ones are tracked for gradual remediation. This lets you gate immediately without blocking work on day one.
$ checkov -d . --create-baseline # writes .checkov.baseline of current findings$ git add .checkov.baseline# from now on, fail only on NEW findings:$ checkov -d . --baseline .checkov.baseline
Ratchet down over time
A baseline is a starting point, not a permanent excuse. The healthy pattern is to gate new code strictly (no new findings) while burning down the baseline deliberately — fix a batch, regenerate the baseline smaller, repeat — so the accepted debt shrinks. Track the baseline count as a metric. Combined with severity gating (block criticals even if baselined, or exclude them from the baseline), this is how you adopt scanning on legacy infrastructure without a revolt.