Skip to content
Latchkey

GitHub Actions conditional job skipped but required check stays pending in branch protection

A required status check must report success to merge. A job skipped by an if-condition does not report success - it reports skipped - so branch protection treats the required check as not satisfied and the PR is blocked.

What this error means

A PR is blocked from merging because a required check never reports success; the job was skipped by an if-condition.

github-actions
Required check "build" is expected but the job was skipped.
Merging is blocked: required status check has not reported a successful conclusion.

Common causes

Skipped does not equal success

Branch protection requires a successful conclusion; skipped does not count.

Required check applied to a sometimes-skipped job

Marking a path-filtered job as required blocks PRs that legitimately skip it.

How to fix it

Add a status-reporting fallback job

  1. Create a small always-run job that depends on the conditional one and reports success when it is skipped.
  2. Make that fallback job the required check instead.
.github/workflows/ci.yml
gate:
  needs: build
  if: ${{ always() }}
  runs-on: latchkey-small
  steps:
    - run: |
        if [ "${{ needs.build.result }}" = "failure" ]; then exit 1; fi

Avoid skipping required jobs

  1. Move the conditional logic inside the job so it always runs and exits 0 when there is nothing to do.
  2. Keep the required check able to report success.

How to prevent it

  • Do not mark sometimes-skipped jobs as required directly.
  • Use an always() gate job to translate skipped into success.

Frequently asked questions

What causes "skipped job blocks merge"?
Branch protection requires a successful conclusion; skipped does not count.
How do I fix skipped job blocks merge?
Add a status-reporting fallback job

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card