You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Checkov's SoftFail not documented, working, and ignored by MSDO #169
Hi ncook-hxgn, thanks for the detailed writeup — the command output and logs made it easy to see exactly what's happening.
The short version is that SoftFail and the build break are two separate mechanisms, and SoftFail only affects the first one:
SoftFail: true in your .gdnconfig controls Checkov's own exit code. As you saw, MSDO passes --soft-fail through and Checkov exits 0. That part is working as intended.
Whether the pipeline fails is decided separately by MSDO, not by the individual tool's exit code. MSDO evaluates the SARIF results against its policy and raises BreakException (exit 8) when it finds breaking results. --soft-fail changes Checkov's exit code but doesn't remove the findings from the SARIF, so MSDO still sees them and breaks. That's why it looks like your exit code is being ignored — MSDO is intentionally not relying on it.
The knob you actually want is the break input on the task, not the tool config. Setting it to false lets the scan run and publish findings without failing the step:
break defaults to false, so if your build is failing on exit 8 you most likely have it set to true somewhere — happy to take a look if you can share the task block.
On your first point, you're right that this interaction isn't documented, and that's a fair gap — the relationship between a tool's SoftFail and the task's break behavior should be spelled out. I've tagged this as a docs item so we track it.
Let me know if switching break to false gets you what you're after.
Activity
DimaBir commentedon Jun 1, 2026
Hi ncook-hxgn, thanks for the detailed writeup — the command output and logs made it easy to see exactly what's happening.
The short version is that
SoftFailand the build break are two separate mechanisms, andSoftFailonly affects the first one:SoftFail: truein your.gdnconfigcontrols Checkov's own exit code. As you saw, MSDO passes--soft-failthrough and Checkov exits 0. That part is working as intended.BreakException(exit 8) when it finds breaking results.--soft-failchanges Checkov's exit code but doesn't remove the findings from the SARIF, so MSDO still sees them and breaks. That's why it looks like your exit code is being ignored — MSDO is intentionally not relying on it.The knob you actually want is the
breakinput on the task, not the tool config. Setting it tofalselets the scan run and publish findings without failing the step:breakdefaults tofalse, so if your build is failing on exit 8 you most likely have it set totruesomewhere — happy to take a look if you can share the task block.On your first point, you're right that this interaction isn't documented, and that's a fair gap — the relationship between a tool's
SoftFailand the task'sbreakbehavior should be spelled out. I've tagged this as a docs item so we track it.Let me know if switching
breaktofalsegets you what you're after.