GitHub Actions concurrency cancel-in-progress without a group
cancel-in-progress only cancels runs that share the same concurrency group. Without a group key, there is nothing to scope cancellation to, so superseded runs are not cancelled as intended.
What this error means
Old runs keep finishing instead of being cancelled by newer pushes, even though cancel-in-progress: true is set - because no group key was provided.
github-actions
concurrency:
cancel-in-progress: true # no group -> nothing is grouped to cancelCommon causes
Missing concurrency group key
cancel-in-progress was set but no group: was defined, so runs are not grouped and cannot supersede each other.
Group too broad or too narrow
A group that does not include the branch/ref groups unrelated runs or none at all.
How to fix it
Define a meaningful concurrency group
- Add a group: keyed on workflow and ref.
- Keep cancel-in-progress: true to supersede in-flight runs.
- Scope the group so only related runs cancel each other.
.github/workflows/ci.yml
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueHow to prevent it
- Always pair cancel-in-progress with a group key.
- Scope groups by workflow + ref for branch-level superseding.
- Review concurrency keys when expected cancellation does not happen.
Related guides
GitHub Actions "Canceling since a higher priority waiting request exists"Understand GitHub Actions jobs canceled by concurrency with cancel-in-progress - a newer run superseded the o…
GitHub Actions concurrency group expression errorFix the GitHub Actions concurrency group expression error caused by an invalid or unevaluatable expression in…
GitHub Actions Concurrency Deadlock - Job Waits on Its Own GroupFix GitHub Actions jobs stuck "pending" forever in a concurrency group - a job that needs another job sharing…