Matched signals
- || true
- set +e
- failed but continuing
- ignoring error
Command failure suppressed with exit-code override
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.
Symptoms
Faultline looks for one or more of these log fragments:
|| 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.
Try it locally
Run the failing command without || true to reproduce the actual exit code
grep -rn '|| true\|set +e' .github/workflows/ scripts/
How Faultline detects it
Use faultline explain ignored-exit-code to see the full playbook.
faultline analyze build.log
faultline explain ignored-exit-code
Generated from playbooks/bundled/log/silent/ignored-exit-code.yaml. Do not edit directly.