Skip to content
Latchkey

GitHub Actions concurrency limit reached for repository

Each plan caps how many GitHub-hosted jobs can run at once. Beyond the cap, additional jobs queue until a slot frees, even if minutes remain. This is a parallelism cap, not a billing block.

What this error means

Many jobs sit queued while a few run; the limit is the plan concurrency cap, not minutes.

github-actions
The job is queued because the concurrency limit for this account has been reached.
Waiting for a concurrent job slot to free up.

Common causes

Plan concurrent-jobs cap hit

Total simultaneous GitHub-hosted jobs across the account reached the plan ceiling.

Large matrix fan-out

A big matrix requests more parallel jobs than the cap allows.

How to fix it

Reduce parallel demand or raise the plan

  1. Cap matrix parallelism with strategy.max-parallel.
  2. Upgrade the plan for a higher concurrency ceiling.

Use managed runners for elastic parallelism

  1. Latchkey managed runners scale from warm pools without the GitHub-hosted shared concurrency cap, so burst jobs do not starve.
  2. Target the Latchkey label for high-parallelism workloads.
.github/workflows/ci.yml
jobs:
  test:
    runs-on: latchkey-small
    strategy:
      matrix:
        shard: [1,2,3,4,5,6,7,8]

How to prevent it

  • Right-size matrix fan-out to the available concurrency.
  • Use managed runners when parallelism needs exceed the hosted cap.

Frequently asked questions

What causes ""concurrency limit reached""?
Total simultaneous GitHub-hosted jobs across the account reached the plan ceiling.
How do I fix "concurrency limit reached"?
Reduce parallel demand or raise the plan

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card