To stop required checks from going missing, diagnose two separate mechanisms: job dependencies can skip downstream jobs, while concurrency rules can cancel an entire older workflow run. Workflow filters and commit-message skip instructions can also leave checks pending without starting a run. Check which case applies before changing your YAML.
First, identify what happened to the check
In the pull request’s checks and the Actions run list, locate the expected workflow and job for the relevant commit. A check can be canceled, skipped, pending, or absent because its workflow never started. GitHub uses check suites and check runs to report workflow and job results; their status helps distinguish these cases. GitHub’s check suites documentation describes check suites and runs.
As an Amazon Associate I earn from qualifying purchases.
- Canceled: A run started and was canceled, possibly by a concurrency rule or a user.
- Skipped: A job was not run, often because a prerequisite failed or was skipped.
- Pending or absent: The workflow may not have triggered because of a branch or path filter, or a supported commit-message skip instruction.
These outcomes need different fixes. Do not treat every missing required check as a cancellation problem.
Trace the job’s dependencies before changing its condition
Read the required job’s needs list and follow each prerequisite upstream. By default, if a job fails or is skipped, jobs that need it are skipped too; that can propagate further down the dependency chain. GitHub’s jobs documentation explains this behavior.
#1 Best Overall
Decide what the required job is meant to do: run only after successful prerequisites, run after a failure, or report a result even if a prerequisite was skipped. Then set its condition to that policy. GitHub’s documented example uses always() when a dependent job must run regardless of prerequisite success, but that function also evaluates true during cancellation. It can keep work running when a run is being canceled.
Choose a condition for the job’s actual policy
- Success-only work: Leave the job subject to the normal success requirement unless you have a reason to override it.
- Reporting or cleanup after a failure or skip: Use a condition that permits the intended upstream outcomes, and confirm how it interacts with cancellation.
- Work that should stop when cancellation begins: Avoid assuming
always()will stop it. GitHub’s troubleshooting guidance identifies!cancelled()as an alternative in relevant cases.
There is no single replacement expression that is right for every workflow. A condition that allows a job past one skipped prerequisite may also alter behavior after failures or cancellation. Check the runtime evaluation rather than relying on how the YAML looks at a glance. GitHub’s workflow troubleshooting guide discusses cancellation and status functions.
Check concurrency rules for canceled runs
Concurrency controls are separate from needs. At the workflow or job level, a concurrency group limits matching work to one running run or job at a time. By default, a newer pending run replaces the existing pending run. If cancel-in-progress: true is enabled, a new run can also cancel an in-progress run in the same group. GitHub’s workflow syntax reference documents these settings.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches- Find every workflow- and job-level
concurrencydeclaration. - Compare the group names for workflows that run on the same repository. Matching group names can make different workflows compete, so include workflow identity when only runs of one workflow should compete.
- Decide whether new commits should abandon older running work or wait for it. Keep
cancel-in-progress: trueonly when canceling older work is intentional and the commit GitHub is evaluating will still receive the required check.
If every run should wait rather than replace pending work, the syntax reference documents queue: max, which permits up to 100 pending runs. That is a documented product limit, not a guarantee that a particular workflow will finish in a particular time. queue: max cannot be combined with cancel-in-progress: true. Choose the queue behavior to match your project’s policy.
Check whether the workflow was filtered out
A required check can remain pending even when no job was canceled. Branch filters, path filters, or a supported commit-message skip instruction can prevent a push or pull_request workflow from running. GitHub warns that skipped workflows can leave their associated checks pending, which may block a pull request that requires those checks. GitHub’s skipping workflow runs documentation lists the applicable filters and skip instructions.
- Check whether the workflow’s branch and path filters match the pull request’s changes.
- Review the commit message for a supported skip instruction.
- If the required check must report for every relevant pull request, make sure its workflow is not filtered out for those changes, or use an appropriate check-producing workflow.
When a skip instruction caused the pending check, GitHub documents pushing a new commit without that instruction to trigger the workflow again. Verify that the check reports its intended result before considering the issue resolved.
Rank #4
Use condition logs to explain surprising job decisions
For a job that unexpectedly ran or skipped, open its system.txt log and compare the Evaluating, Expanded, and Result lines. They show the condition GitHub evaluated, its expanded values, and the resulting decision. This is more reliable than inferring runtime behavior from the expression alone. GitHub’s log troubleshooting guidance explains how to use these logs.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Quick Recap
Best Value
Practical diagnosis checklist
- Is there an Actions run for the relevant commit, and is it canceled, skipped, pending, or absent?
- Does the required job depend on a failed or skipped job?
- Does its condition use
always(),cancelled(), or!cancelled()? - Does a workflow- or job-level concurrency group match another run, and is
cancel-in-progressenabled? - Did a branch filter, path filter, or commit-message skip instruction prevent the workflow from starting?
- What do the
Evaluating,Expanded, andResultlines insystem.txtshow?
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




