GitLab "No active runners online" After Registration
By Daniel Zoghalchali·Latchkey
A runner shows in the project but never turns green. It registered, yet the gitlab-runner process is not polling GitLab - usually a stopped service, a bad config, or a connectivity problem.
What this error means
The Runners page lists the runner but marks it inactive/offline, and jobs queue without being picked up. Unlike a tag mismatch, the runner itself is simply not contacting GitLab.
gitlab-ci
Runners page:"No active runners online"gitlab-runner:ERROR: Checking for jobs... failed runner=AbC123 status=couldn't execute POST against https://gitlab.com/api/v4/jobs/request: dial tcp: i/o timeout
Common causes
Runner service not running
The gitlab-runner daemon is stopped or crashed, so it never long-polls for jobs and stays offline.
Cannot reach the GitLab URL
A firewall, proxy, or wrong url/CA in config.toml blocks the runner from reaching GitLab's API, so registration succeeded but polling fails.
How to fix it
Verify and restart the runner
Runner host
sudo gitlab-runner status
gitlab-runner verify --delete # prune dead registrations
sudo systemctl restart gitlab-runner
sudo gitlab-runner run --debug # watch it poll
Confirm connectivity and config
Check config.toml has the correct url and token.
From the host, curl -I https://gitlab.example.com to prove network/TLS reachability.
If behind a proxy, set the proxy env vars for the runner service.
How to prevent it
Run the runner under systemd so it restarts on crash.
Monitor the runner's last-contact time and alert on staleness.
Keep the runner's CA bundle and proxy config current.
Frequently asked questions
What causes ""No active runners online""?
The gitlab-runner daemon is stopped or crashed, so it never long-polls for jobs and stays offline.
How do I fix "No active runners online"?
Verify and restart the runner
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.