API rate limit exceeded CI/CD Origin: Build & delivery Last updated 25 Oct 2026

GitHub Actions: HttpError: API rate limit exceeded for installation ID 123456 / secondary rate limit

Your workflow (or an action it uses) made too many GitHub API calls and was throttled with 403/429.

Exact message you may see API rate limit exceeded for installationHttpError: API rate limit exceededYou have exceeded a secondary rate limitAPI rate limit exceeded for user ID403 rate limit exceeded GitHub Actions
Seen on: GitHub Actions

Meaning

GITHUB_TOKEN has a per-repository hourly limit (1,000 requests) and all runs share it; unauthenticated calls from the runner IP hit tight limits. Cache results, reduce calls, add retries with back-off, and use a PAT or GitHub App token with a higher limit for heavy automation.

Common causes

  • Many API calls per run (looping over issues, releases or files)
  • Many parallel runs sharing the same token budget
  • Unauthenticated requests (no token passed)
  • Secondary rate limit from rapid-fire writes (comments, labels)
  • Third-party action polling the API

⚡ Quick fix

  1. Pass GITHUB_TOKEN to the action and reduce calls
  2. Add sleeps and retries (Retry-After header)
  3. Use a GitHub App or PAT for high-volume jobs

Detailed fix by platform

GitHub Actions

  1. Check remaining quota: run: gh api rate_limit with env: GH_TOKEN: ${{ github.token }}
  2. Batch writes with the GraphQL API

Code examples

Authenticated gh with a quota check

yaml
- name: Rate limit
  env:
    GH_TOKEN: ${{ github.token }}
  run: gh api rate_limit --jq '.resources.core'

How to diagnose

  1. Quota — What does rate_limit show?
  2. Auth — Token passed to the call?
  3. Concurrency — Many runs at once?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Build & delivery. Errors that are often confused with or caused by this one (click to open):

Cache not found / Unable to reserve cache — GitHub Actions: Cache not found for input keys: npm-Linux-abc123 / Failed to save: Unable to reserve cache with key, another job may be creating this cache (CI/CD)Cache not found / Una…Cannot find orb — CircleCI: Cannot find orb 'circleci/node@9.9.9'. Check the namespace and version exist (CI/CD)Cannot find orbCannot perform an interactive login from a non TTY device — GitHub Actions: Error: Cannot perform an interactive login from a non TTY device (CI/CD)Cannot perform an int…concurrent_requests_limit — API Error: Too many concurrent requests (concurrency limit reached) (API)concurrent_requests_l…Context access might be invalid — GitHub Actions: Context access might be invalid: AWS_ACCESS_KEY_ID (editor warning for secrets/vars) (CI/CD)Context access might …couldn't find remote ref (checkout) — GitHub Actions: fatal: couldn't find remote ref refs/heads/feature — The process '/usr/bin/git' failed with exit code 1 (actions/checkout) (CI/CD)couldn't find remote …Credentials could not be loaded — GitHub Actions: Error: Credentials could not be loaded, please check your action inputs: Could not load credentials from any providers (CI/CD)Credentials could not…deprecated version of actions/upload-artifact — GitHub Actions: Error: This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3` (CI/CD)deprecated version of…API rate …

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.