Matched signals
- All runners that can run this job are busy
- Waiting for a runner to pick up this job
- No runner matching the labels
- runner was lost
- The runner has received a shutdown signal
- runner.*disconnected
- Job was canceled because no runners matched
- No available runner
GitHub Actions runner capacity or queue timeout
What this failure means
The GitHub Actions job waited too long to be picked up by a runner, or the runner became unresponsive mid-job. The workflow was canceled due to the capacity or timeout condition.
Symptoms
Faultline looks for one or more of these log fragments:
All runners that can run this job are busy
Waiting for a runner to pick up this job
No runner matching the labels
runner was lost
The runner has received a shutdown signal
runner.*disconnected
Job was canceled because no runners matched
No available runner
Diagnosis
The GitHub Actions job waited too long to be picked up by a runner, or the runner became unresponsive mid-job. The workflow was canceled due to the capacity or timeout condition.
Fix steps
- Re-run the failed jobs: transient capacity issues resolve as runners free up.
- For self-hosted runners: verify the runner is registered and healthy in Settings → Actions → Runners.
- If jobs regularly queue: increase the runner count by adding more self-hosted runners or upgrading the GitHub plan for additional hosted runner seats.
- If the workflow timeout was reached: increase
timeout-minutesat the job or step level, or split long jobs into shorter parallel steps. - Check runner labels: ensure
runs-onlabels match a valid registered runner label exactly.
Validation
- Re-run the local reproduction command after the fix.
- Check GitHub Settings → Actions → Runners for registered runner health
Why it matters
GitHub-hosted runners have a finite pool per organization. During peak workload or following a large merge event, jobs queue and may exceed the workflow or job timeout before a runner becomes available. For self-hosted runners, the runner process or the host can be lost (preempted, OOM-killed, or the runner agent unregistered). Jobs requiring specific runner labels with no registered runners immediately cancel.
Prevention
- Set explicit
timeout-minuteson every job and step to fail fast rather than hanging indefinitely. - Use autoscaling for self-hosted runners (e.g.,
actions-runner-controlleron Kubernetes or ephemeral EC2 runners). - Monitor the runner queue depth and alert when jobs wait longer than a threshold.
Try it locally
Check GitHub Settings → Actions → Runners for registered runner health
How Faultline detects it
Use faultline explain github-actions-runner-capacity to see the full playbook.
faultline analyze build.log
faultline explain github-actions-runner-capacity
Generated from playbooks/bundled/log/ci/github-actions-runner-capacity.yaml. Do not edit directly.