Safeguard
Developer Tools•

Does a skipped required status check block a GitHub merge?

GitHub accepts successful, skipped and neutral required checks. A check that never reports stays pending and can block. How to find and fix the stuck ones.

Safeguard Security Team
3 min read

A required check that reports success, skipped or neutral satisfies GitHub's merge rule. A check that never reports is different: pending is not an accepted state, so the pull request waits. Path filters and duplicate job names are the usual causes. Test on a throwaway pull request before you rely on the rule.

What GitHub accepts

GitHub's protected branch documentation says required status checks must report a successful, skipped or neutral status before changes can merge. Pending is not on that list. That is the whole puzzle in one sentence.

A workflow that is skipped by a path filter may never create the check at all, and then the required name sits at expected or pending. A job skipped inside a workflow that did start, by contrast, reports as skipped and passes.

Common causes of a stuck pull request

  • A workflow filtered by paths, so a docs-only change never starts it, while the rule requires its job.
  • Two workflows with the same job name. GitHub warns that duplicate job names across workflows can give ambiguous results and block merges.
  • A renamed job, where the rule still lists the old name.
  • A check that comes from an app you uninstalled.

None of these are security failures. They are the kind of friction that pushes teams to turn the rule off, which is the real risk.

How to debug it in ten minutes

  1. Open the blocked pull request and read the list of required checks, noting any that show as expected.
  2. Compare each required name with the job names in your workflow files.
  3. Search for duplicate job names across workflows.
  4. For path filtered workflows, either move the filter into a job level condition so the job reports skipped, or add a lightweight always running job that the rule requires.
  5. Open a throwaway pull request that touches only a doc file and confirm it can merge.

Step 5 matters because the documentation does not walk through path filters. Treat behavior on your repository as the source of truth and write down what you observe.

Keep the rule strict

Resist the urge to drop the required check. A stuck pull request is annoying for an hour. A missing gate can stay unnoticed for a year. Fix the check so it always reports, and keep the list of required checks short and named after what they prove, such as unit tests, dependency scan and secret scan.

Where Safeguard fits

Safeguard scans dependencies and builds an SBOM, and its policies and gates can block a pull request that adds a known-vulnerable package. You can try a free scan at gold.safeguard.sh/scan.

Try it yourself

Step through the gate and note how a check result decides whether the merge button unlocks.

Click through it at your own pace, or open it full screen.

Quick check

Is skipped the same as passed?

For the merge rule, GitHub lists skipped as an accepted state alongside success and neutral. It does not mean the code was checked.

Where do I see why a check is missing?

On the pull request, look for checks marked expected, then compare names with your workflow job names.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.