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.
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 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
- Pass
GITHUB_TOKENto the action and reduce calls - Add sleeps and retries (
Retry-Afterheader) - Use a GitHub App or PAT for high-volume jobs
Detailed fix by platform
GitHub Actions
- Check remaining quota:
run: gh api rate_limitwithenv: GH_TOKEN: ${{ github.token }} - Batch writes with the GraphQL API
Code examples
Authenticated gh with a quota check
- name: Rate limit
env:
GH_TOKEN: ${{ github.token }}
run: gh api rate_limit --jq '.resources.core'How to diagnose
- Quota — What does rate_limit show?
- Auth — Token passed to the call?
- 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:
Similar errors
- 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
- Cannot find orb CircleCI: Cannot find orb 'circleci/node@9.9.9'. Check the namespace and version exist
- Cannot perform an interactive login from a non TTY device GitHub Actions: Error: Cannot perform an interactive login from a non TTY device
Most viewed in CI/CD
- The process '/usr/bin/git' failed with exit code 128 GitHub Actions: Error: The process '/usr/bin/git' failed with exit code 128
- This job is stuck because you don't have any active runners GitLab CI: This job is stuck because you don't have any active runners online or available with any of these tags assigned to them
- ComparisonError: manifest generation failed Argo CD: ComparisonError: rpc error: code = Unknown desc = Manifest generation error (cached): kustomize build failed
Other ways to find it
Where this error sits
Origin: Build & delivery. Errors that are often confused with or caused by this one (click to open):
🧠 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.
Report a correction or suggest an improvement
Last updated 25 Oct 2026