Skip to content
Latchkey

GitHub Actions Required Check Stuck "Expected - Waiting"

A branch protection rule requires a status check that never runs - because a path filter skipped the workflow or the job was conditionally skipped - so the PR sits forever "Expected - Waiting for status".

What this error means

A pull request shows a required check stuck in a pending "Expected" state and merge is blocked, even though no job is actually running or failing.

PR merge box
Required statuses must pass before merging
  Expected - Waiting for status to be reported
  build (required)

Common causes

Path/branch filter skipped the workflow

When on.paths excludes the changed files, the workflow does not run at all, so a required check from it never reports and stays pending.

A conditionally skipped required job

A job gated by an if condition that evaluates false is skipped. A skipped job does not satisfy a required status check by default.

How to fix it

Add a passthrough job for skipped paths

Provide a lightweight workflow that always reports the same check name as success when the real one is skipped, so the required check is satisfied.

.github/workflows/ci-skip.yml
# .github/workflows/ci-skip.yml
on:
  pull_request:
    paths-ignore: ['src/**']
jobs:
  build:               # same name as the required check
    runs-on: ubuntu-latest
    steps: [{ run: 'echo "No source changes; passing"' }]

Reconsider what is marked required

  1. Only mark checks required if they run on every PR that must merge.
  2. Avoid path filters on workflows whose checks are required, or pair them with a skip job.
  3. Use job-level if results that report neutral/success rather than skipping required jobs.

How to prevent it

  • Pair every path-filtered required check with a passthrough job of the same name.
  • Audit branch protection so required checks always report on every PR.
  • Avoid conditionally skipping jobs that are wired up as required.

Frequently asked questions

What causes "Required check stuck"?
When on.paths excludes the changed files, the workflow does not run at all, so a required check from it never reports and stays pending.
How do I fix Required check stuck?
Provide a lightweight workflow that always reports the same check name as success when the real one is skipped, so the required check is satisfied.

Related guides

References

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