policy
billing
ai_generated
true
GitHub Actions free minutes exhausted much faster than expected on private repositories
ID: policy/github-actions-minutes-private-repo
88%Fix Rate
90%Confidence
3Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| any | active | — | — | — |
Root Cause
GitHub Actions minutes have a multiplier for private repos: Linux=1x, macOS=10x, Windows=2x. A 10-minute macOS job costs 100 minutes from your 2000 free minutes. This multiplier is buried in the billing docs, not in the Actions documentation.
genericWorkarounds
-
92% success Use Linux runners for everything except platform-specific tests
Run linting, unit tests, build on Linux. Only use macOS for iOS-specific integration tests.
-
90% success Set a spending limit of $0 to prevent unexpected charges
GitHub Settings -> Billing -> Actions -> Spending limit: $0.00 # hard stop when free minutes exhausted
-
85% success Use self-hosted runners for macOS/Windows heavy workloads
Self-hosted runners have no minute limits. Use them for expensive platform-specific CI.
Dead Ends
Common approaches that don't work:
-
Assume 2000 free minutes means 2000 minutes of any runner
92% fail
macOS runners cost 10x. 2000 free minutes = only 200 minutes of macOS CI. A single 10-min macOS build = 100 minutes billed.
-
Switch from Linux to macOS runners for iOS builds without checking billing impact
88% fail
macOS runners cost 10x Linux. A pipeline running 20 min/day on macOS exhausts free tier in ~10 days.