GitHub Actions Self-Hosted Runner "version is too old" / Update Loop
A self-hosted runner refuses jobs or restarts repeatedly because its agent version is below the minimum GitHub accepts. Normally it auto-updates, but a pinned, offline, or containerized runner can get stuck.
What this error means
The runner logs that it must be updated, or cycles trying to auto-update and failing, so jobs never start on it.
Runner version v2.300.0 is deprecated and cannot receive jobs.
Please update to the latest version.Common causes
Agent below the minimum version
GitHub requires runners within a recent version window. An old pinned binary is rejected until updated.
Auto-update blocked
A baked container image, a runner with --disableupdate, or one without write access to its own install directory cannot self-update and gets stuck.
How to fix it
Update the runner binary
Download and install the latest actions/runner release on the host, or rebuild the runner image on a current version.
# fetch latest, then reconfigure
./config.sh remove --token <TOKEN>
curl -O -L https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url <URL> --token <FRESH_TOKEN>Allow updates or rebuild images
- Remove --disableupdate unless you have a pipeline that bumps the version yourself.
- For containerized runners, rebuild the image on the latest runner release regularly.
- Ensure the runner can write to its install directory to self-update.
How to prevent it
- Keep self-hosted runner images on a current actions/runner release.
- Allow auto-update, or automate version bumps for pinned runners.
- Give the runner write access to its own install directory.