GitHub Actions concurrency: pending job canceled
A concurrency group allows one running and one pending run per group. A newer run can cancel the pending (or in-progress, with cancel-in-progress) run, which can surprise deploys that must not be canceled.
What this error means
A queued or running job is canceled when another run enters the same concurrency group, sometimes aborting a deployment mid-flight.
github-actions
Canceling since a higher priority waiting request for 'deploy-main' exists.Common causes
cancel-in-progress cancels active runs
Setting cancel-in-progress: true cancels a running job when a new one joins the group.
Pending run superseded
A newer queued run replaces the prior pending run in the same group.
How to fix it
Scope the group and choose cancellation carefully
- Include a per-ref key in the group so unrelated runs do not collide.
- For deploys, set cancel-in-progress: false so they are not aborted.
- For PR CI, cancel-in-progress: true to save minutes is usually fine.
.github/workflows/deploy.yml
concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: false # do not cancel an in-flight deployHow to prevent it
- Pick concurrency group keys that isolate independent runs.
- Disable cancel-in-progress for jobs that must finish (deploys, releases).
Related guides
GitHub Actions if: always() still skipped when dependency is canceledFix a GitHub Actions step using if: always() that still skips - a canceled workflow short-circuits most steps…
GitHub Actions runner connection lost mid-stepFix a GitHub Actions job that fails when the runner loses its connection to the service partway through a ste…
GitHub Actions "Job X has been skipped" (needs result)Fix a GitHub Actions job that is skipped because a job in its needs was skipped or failed - downstream jobs s…