Skip to content
Latchkey

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 cancel

Common 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

  1. Add a group: keyed on workflow and ref.
  2. Keep cancel-in-progress: true to supersede in-flight runs.
  3. Scope the group so only related runs cancel each other.
.github/workflows/ci.yml
concurrency:
  group: ci-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

How 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

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →