{
  "id": "cicd/github-actions-self-hosted-runner-token-expired",
  "signature": "Error: The runner registration token has expired. Please generate a new token and re-register the runner.",
  "signature_zh": "错误：运行器注册令牌已过期。请生成新令牌并重新注册运行器。",
  "regex": "runner registration token has expired",
  "domain": "cicd",
  "category": "auth_error",
  "subcategory": null,
  "root_cause": "GitHub Actions self-hosted runner registration token expires after 1 hour, and the runner cannot authenticate with GitHub if the token is not refreshed.",
  "root_cause_type": "generic",
  "root_cause_zh": "GitHub Actions 自托管运行器注册令牌在1小时后过期，如果令牌未刷新，运行器无法与GitHub进行身份验证。",
  "versions": [
    {
      "version": "GitHub Actions runner v2.311.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Ubuntu 22.04 runner image",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "Restart the runner service without re-registering",
      "why_fails": "Restarting does not refresh the expired token; authentication still fails",
      "fail_rate": 0.95,
      "condition": "",
      "sources": []
    },
    {
      "action": "Delete and recreate the runner in GitHub UI without generating a new token",
      "why_fails": "The same expired token is reused; the runner still cannot connect",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    },
    {
      "action": "Update the runner version only",
      "why_fails": "The token is independent of runner version; updating version does not fix token expiry",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Generate a new registration token from GitHub Settings > Actions > Runners > Remove runner > Add runner, then re-run the configure script with the new token:\n./config.sh --url https://github.com/your-org/your-repo --token NEW_TOKEN\n./run.sh",
      "success_rate": 0.9,
      "how": "Generate a new registration token from GitHub Settings > Actions > Runners > Remove runner > Add runner, then re-run the configure script with the new token:\n./config.sh --url https://github.com/your-org/your-repo --token NEW_TOKEN\n./run.sh",
      "condition": "",
      "sources": []
    },
    {
      "action": "Automate token refresh using a cron job or GitHub Actions workflow that calls the API to get a new token and updates the runner configuration daily",
      "success_rate": 0.85,
      "how": "Automate token refresh using a cron job or GitHub Actions workflow that calls the API to get a new token and updates the runner configuration daily",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Generate a new registration token from GitHub Settings > Actions > Runners > Remove runner > Add runner, then re-run the configure script with the new token:\n./config.sh --url https://github.com/your-org/your-repo --token NEW_TOKEN\n./run.sh",
    "Automate token refresh using a cron job or GitHub Actions workflow that calls the API to get a new token and updates the runner configuration daily"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners",
  "official_doc_section": null,
  "error_code": "RUNNER_TOKEN_EXPIRED",
  "verification_tier": "ai_generated",
  "confidence": 0.88,
  "fix_success_rate": 0.85,
  "resolvable": "true",
  "first_seen": "2023-08-15",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}