GitHub Actions Self-Hosted Runner Offline - Jobs Never Picked Up
Your self-hosted runner appears Offline in settings, so it cannot claim jobs. The runner agent crashed, lost connectivity to GitHub, or its registration was invalidated.
What this error means
Jobs targeting the runner stay queued while the runner shows a red Offline status in repo or org settings. Restarting the runner service brings it back online.
# in Settings > Actions > Runners
my-runner-01 Offline self-hosted, linux, x64Common causes
Runner service stopped or crashed
The self-hosted runner runs as a service or process. If it exits (OOM, host reboot, crash) without auto-restart, it disconnects and goes offline.
Lost network or expired registration
A firewall change, lost outbound HTTPS, or an expired/revoked registration token prevents the runner from maintaining its long-poll connection to GitHub.
How to fix it
Restart the runner service
# from the runner install directory
sudo ./svc.sh status
sudo ./svc.sh start
# or reconfigure with a fresh registration token
./config.sh remove --token <OLD>
./config.sh --url https://github.com/org/repo --token <NEW>Restore connectivity and auto-recovery
- Confirm the host can reach github.com and *.actions.githubusercontent.com over HTTPS.
- Install the runner as a service so it restarts after a reboot or crash.
- Use ephemeral runners or an autoscaler for fleets that recycle frequently.
How to prevent it
- Run self-hosted runners as a managed service with auto-restart.
- Monitor runner online status and alert when one drops.
- Use ephemeral/autoscaled runners to avoid stale long-lived agents.