Critical CI step skipped due to condition

A CI step was skipped because its `if:` condition evaluated to false.

skipped-critical-step high confidence silent_failure

Matched signals

  • Skipping step due to condition
  • Condition evaluated to false
  • step was skipped
  • ##[warning]step skipped

Critical CI step skipped due to condition

What this failure means

A CI step was skipped because its if: condition evaluated to false. The context suggests the skipped step may have been a critical one (build, test, deploy, security scan, coverage report, or publication), so the overall success status may not reflect a complete pipeline run.

Symptoms

Faultline looks for one or more of these log fragments:

Skipping step due to condition
Condition evaluated to false
step was skipped
##[warning]step skipped

Diagnosis

CI platforms evaluate if: (GitHub Actions), when: (GitLab CI), and similar conditional expressions before each step. When the condition is false, the step is skipped and the job continues. This is intentional for steps that are only needed in certain contexts (e.g., deploy only on main).

However, when a critical step is unexpectedly skipped, the pipeline appears to succeed while the associated work was never performed. Common causes:

  • A branch filter, environment variable check, or event filter in the if: expression is misconfigured.
  • A dependent job that sets an output variable failed or was skipped, causing downstream conditions to evaluate unexpectedly.
  • A PR from a fork does not have access to required secrets, causing secret-presence guards to fail and skip protected steps.
  • A refactoring changed the step name or ID referenced by a dependent needs expression.

Fix steps

  1. Identify the skipped step in the CI log.
  2. Review its condition expression and evaluate it manually against the current branch, event, and environment:
    if: github.ref == 'refs/heads/main' && secrets.DEPLOY_TOKEN != ''
    
  3. Check whether any upstream step that produces a required output or sets a required environment variable was itself skipped or failed.
  4. For fork PRs: consider whether the step should be conditioned on github.event_name != 'pull_request' or use environment protection rules.
  5. Add an explicit assertion or notification when a critical step is skipped in an unexpected context.

Validation

Re-run the pipeline in the expected context (correct branch, event, or environment) and confirm the previously skipped step now executes.

Try it locally

Review the if: expression on the skipped step and evaluate it against the current context
grep -n 'if:' .github/workflows/*.yml

How Faultline detects it

Use faultline explain skipped-critical-step to see the full playbook.

faultline analyze build.log
faultline explain skipped-critical-step

Generated from playbooks/bundled/log/silent/skipped-critical-step.yaml. Do not edit directly.

Try it on your own failed log

$ faultline analyze failed.log
Want this across every CI run? Faultline Teams tracks recurring failures across all your repos and surfaces patterns in a shared dashboard.