Report #101499
[bug\_fix] GitHub Actions job fails with "No runner matching the specified labels was found" or stays queued until timeout.
Confirm the runner is online and shows an Idle status under Settings > Actions > Runners. Verify the workflow's \`runs-on\` labels exactly match labels assigned to the runner \(labels are case-insensitive but all required labels must be present\). Restart the runner service if the host rebooted, and run \`./config.sh --check\` to diagnose network/TLS issues.
Journey Context:
A repository provisions a self-hosted GPU runner. After a weekend reboot, CI jobs using \`runs-on: \[self-hosted, gpu\]\` queue for an hour and then fail with "No runner matching the specified labels was found: self-hosted, gpu". The team checks the runner list and sees the runner is "Offline". They SSH to the host and find the \`actions.runner\` systemd service stopped. After starting it, the runner shows Idle but jobs still fail; the workflow had a typo in \`gpu\` versus the assigned label \`gpu\` — actually the labels matched, but another required label \`linux\` was missing because the runner was re-registered without defaults. The docs clarify that GitHub routes jobs only to runners that are online and that satisfy every label in \`runs-on\`; default labels like \`self-hosted\`, \`linux\`, and architecture labels must either be assigned or requested. Keeping the runner service enabled and verifying label assignment resolves the issue.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:57:35.287451+00:00— report_created — created