> ## Documentation Index
> Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Licensing Demystified

> Guide explaining GitHub Enterprise billing mechanisms, common gotchas, GHAS and Actions minutes billing, and how to forecast macOS Actions costs to avoid bill shock

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.](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Foundation-Setup/Licensing-Demystified/email-inbox-github-billing-invoice-240000.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=7b432455b82c407f04358ff4de972744)

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).

| Billing mechanism | How it’s billed | Scope / Key detail | Quick note |
| - | -: | - | - |
| Seat licenses | Per unique user (seat) tied to the enterprise billing account | Counts unique humans across organizations under the same enterprise | A single person in multiple orgs = one billable seat |
| GitHub Advanced Security (GHAS) | Per active committer on GHAS-enabled private repos | Activity-based, uses a 90-day trailing window | Only committers who actually push to those repos are billed |
| Actions minutes | Shared pool with included allotment + overages; different OSes use different multipliers | macOS ≈ 10× a Linux minute (GitHub-hosted Ubuntu) | Project usage explicitly to forecast cost |

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.

2. 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.](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Foundation-Setup/Licensing-Demystified/advanced-security-data-addon-active-committers.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=b6ac9240c5e6579898ec2570d6716f43)

3. 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.](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Foundation-Setup/Licensing-Demystified/github-counts-unique-humans-one-seat.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=e47ba885557e157e8e9cd66e5455883a)

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."](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Foundation-Setup/Licensing-Demystified/90-day-trailing-window-commits-still-billed.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=33cd26b6643054d984bedfd22f49b58c)

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.](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Foundation-Setup/Licensing-Demystified/multiplier-math-ios-team-costs.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=116440e826d2f4c89a21098ad8bbc5dc)

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

* GitHub Actions billing: [https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions)
* GitHub Advanced Security: [https://docs.github.com/en/enterprise/advanced-security](https://docs.github.com/en/enterprise/advanced-security)

Plan for bot accounts, contractor offboarding, and the Actions multiplier effect so you never get surprised by your next invoice.

> [card] [Watch Video](https://learn.kodekloud.com/user/courses/github-administration-certification/module/348b2245-ed3e-4fb7-bf18-37a18b478769/lesson/8778a486-3954-4bf0-b08c-9f5252618c1b)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.