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.
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.
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.