Skip to main content
The concept of licensing feels boring — until a surprise invoice arrives. This guide walks through the three independent GitHub Enterprise billing mechanisms, the gotchas (bots, contractors, macOS builds), and a simple way to project Actions costs so you can avoid bill shock.
A clean mockup of an email inbox titled "When Licensing Stops Being Boring" showing a highlighted "GitHub Billing" message about an actions usage invoice. To the right a large orange "$240,000" is displayed.
Overview — three independent billing mechanisms GitHub Enterprise billing isn’t a single line item. Think of it like a family phone plan: you pay for lines (seats), you can add a premium data add-on (Advanced Security), and there’s a shared data pool with overages (Actions minutes).
  1. Seat licenses — unique humans, not org memberships Seat licenses are tied to people under the same enterprise/billing account, not to each organization. If Jane belongs to three organizations that report to the same enterprise billing account, she counts as one billable seat.
A common oversight: bot accounts. If a CI bot account commits to repositories, that bot is treated like a human user for seat counting and will consume a paid seat.
  1. GitHub Advanced Security (GHAS) — the data add-on GHAS billing is activity-based: it charges per active committer on private repositories that have GHAS enabled. Only developers (or bots) that actually commit to those GHAS-enabled private repos consume a GHAS committer license.
A slide titled "Advanced Security – The Data Add-On" showing a row of user icons where two are highlighted in blue and the rest are greyed out with "no commits" labels, and a callout that Advanced Security is billed per active committer.
  1. Actions minutes — the shared pool (and the macOS multiplier) Actions minutes operate as a shared pool for your account: you get an included allotment and pay for overages. Different GitHub-hosted runner OSes consume minutes at different effective rates — macOS runners are expensive: they count as roughly 10× a Linux/GitHub-hosted Ubuntu minute. That multiplier is the single biggest driver of unexpected Actions cost.
Seat-counting example — GitHub counts unique humans If you have 2,000 engineers spread across 10 organizations under the same enterprise billing account, GitHub counts unique humans. A developer who is a member of all 10 organizations still counts as a single seat — you would be billed for 2,000 seats (not 20,000).
A slide titled "GitHub Counts Unique Humans" showing 2,000 engineers spread across 10 organizations equals 2,000 billed seats (not 20,000). It notes one developer in multiple organizations still counts as a single seat.
Bots and contractors — the two common gotchas
  • Bots: A dedicated CI/bot account that commits to repos will consume a paid seat and, if it commits to GHAS-enabled private repos, a GHAS committer license. Treat bot accounts as billable identities.
  • Contractors: GHAS billing uses a 90-day trailing window. If a contractor commits during month 1 and leaves month 2, they remain billable for GHAS through month 4 (90 days). Offboarding processes should explicitly remove commit privileges to control billing.
A slide titled "The 90-Day Trailing Window" showing four month tiles (Jan, Feb, Mar, Apr) with Jan marked "commits" and Feb showing a crossed-out "leaves" icon. A purple pill below reads "Still billed."
Example: projecting Actions costs (iOS/macOS-heavy team) Use explicit math when forecasting Actions minutes. macOS minutes explode cost because of the multiplier. Scenario:
  • Team size: 15 developers
  • Pushes per developer per day: 6
  • macOS build duration per push: 25 minutes
  • macOS multiplier: 10× (compared to Linux)
Calculation: 15 developers × 6 pushes × 25 minutes × 10 = 22,500 effective Linux-equivalent minutes per day If you estimate roughly $0.008 per Linux-equivalent minute (check current pricing for your account at the link below), that’s:
  • Per day: 22,500 × $0.008 ≈ $180
  • Per month (30 days): ≈ $5,400 for one team
An infographic titled "The Multiplier Math and What It Costs" showing a calculation for "One iOS Team, One Day" (15 developers × 6 pushes × 25 minutes × 10 macOS multiplier = 22,500 effective minutes/day). It also notes a cost of $0.08 per Linux-equivalent minute.
Plan proactively
  • Audit runner usage: identify macOS-heavy workflows and consider caching, incremental builds, or self-hosted macOS runners if that reduces cost.
  • Manage identities: treat bots as billable, and include license cleanup in contractor offboarding.
  • Forecast explicitly: multiply pushes × duration × team size × OS multiplier to estimate effective minutes and cost.
  • macOS runners use a ~10× multiplier compared to GitHub-hosted Ubuntu (Linux) runners.
  • GHAS is billed per active committer on private repositories with GHAS enabled (90-day trailing window).
  • GitHub counts unique humans across the same enterprise billing account — one person in multiple orgs = one seat.
Watch out for bot accounts and contractor workflows: bots that commit consume seats and GHAS licenses, and GHAS uses a 90-day trailing billing window that can prolong costs after an engineer leaves.
References and next steps Plan for bot accounts, contractor offboarding, and the Actions multiplier effect so you never get surprised by your next invoice.

Watch Video