Command failure suppressed with exit-code override
April 30, 2026 ยท View on GitHub
Playbook ID: ignored-exit-code
Category: silent_failure
Severity: high
Tags: silent-failure, exit-code, set+e, bash, shell, ci
What this failure means
A failing command's exit code was deliberately suppressed using || true,
set +e, or similar shell constructs. CI continued without surfacing the
error, so the overall job status appears green even though a step failed.
Common log signals
|| true
set +e
failed but continuing
ignoring error
Diagnosis
Shell scripts that use || true or set +e allow subsequent commands to
run even after a previous command exits non-zero. This pattern is sometimes
intentional (for optional steps) but is frequently used to silence unexpected
failures that should be investigated.
Common causes:
- A developer added
|| trueto unblock a pipeline without investigating the root cause. set +ewas used at the top of a shared script and was never reverted.- A CI step uses
exit 0to force success after logging an error.
The result is a misleading "green" CI status that hides real failures from reviewers and downstream automation.
Fix steps
- Locate the suppressed command and understand why it is failing:
grep -n "|| true\|set +e\|exit 0" <script> - Remove the suppression and let the failure surface naturally.
- If the failure is expected and intentional, document it explicitly and
consider an
if/elseguard instead of a blanket exit-code override. - Add
set -e(orset -euo pipefail) at the top of CI scripts to fail fast on unexpected errors.
Validation
Re-run the CI job without the exit-code suppression and confirm the job fails cleanly on the unexpected error rather than continuing silently.
Likely files to inspect
.github/workflows/*.ymlMakefilescripts/*.sh
Run Faultline
faultline analyze build.log
faultline explain ignored-exit-code
faultline workflow build.log --json --mode agent
Search phrases this page answers
- Command failure suppressed with exit-code override
- Silent Failure: command failure suppressed with exit-code override
- failed but continuing
- GitHub Actions command failure suppressed with exit-code override
- faultline explain ignored-exit-code
Generated from playbooks/bundled/log/silent/ignored-exit-code.yaml. Do not edit directly โ run make docs-generate.