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

# Evaluating Adoption License and Cost

> Guide to auditing GitHub billing and reducing costs by identifying expensive SKUs and applying six levers like removing dormant seats, limiting macOS runners, reclaiming licenses, and caching.

Uncontrolled GitHub Actions usage can create unexpectedly large invoices. For example, a mobile team running unoptimized macOS builds on every commit can generate a monthly bill of tens of thousands of dollars. An administrator who can audit billing data and act on cost drivers can save the company hundreds of thousands per year.

Start by exporting your billing usage CSV and focus on the most useful columns: `organization`, `repository_slug`, `date`, `product`, `sku`, `quantity`, and `price_per_unit`. The `sku` column is the single most important diagnostic field because it identifies the resource consuming budget (for example: Actions Linux, Actions Windows, Actions macOS, Packages Storage, or Codespaces Linux). The `quantity` shows minutes or storage used; `price_per_unit` shows whether you’ve exceeded free tiers and are paying overage rates.

Example billing export (sample rows):

| organization | repository\_slug | date | product | sku | quantity | price\_per\_unit |
| - | - | - | - | - | - | - |
| acme-eng | ios-app | 2026-03-14 | Actions | Actions Linux | 12,480 | \$0.008 |
| acme-eng | ios-app | 2026-03-14 | Actions | Actions Windows | 3,210 | \$0.016 |
| acme-eng | ios-app | 2026-03-14 | Actions | Actions macOS | 8,940 | \$0.080 |
| acme-eng | web | 2026-03-14 | Packages | Packages Storage | 42 GB | \$0.008 |
| acme-eng | web | 2026-03-14 | Codespaces | Codespaces Linux | 610 | \$0.180 |

The `sku` column is your primary troubleshooting tool. Use it to locate expensive runners (macOS/Windows), storage usage, or Codespaces consumption quickly.

After you understand the SKUs and usage patterns, apply these six levers to reduce spend. The order below follows a practical audit workflow: identify wasted licenses, remove or scope machine/service accounts, audit collaborators, limit expensive runner usage, reclaim Advanced Security seats, and optimize build times.

1. Dormant seats
   * Export the active license list from your GitHub billing dashboard and compare it to your identity provider’s active employees list. A simple script or spreadsheet VLOOKUP will reveal mismatches — these are likely seats assigned to departed employees and represent recurring waste. Remove or reassign those licenses.

![A slide titled "Six Levers – Optimize Spending" that illustrates finding dormant seats by comparing a billing dashboard's "Active licenses" list to an identity provider's "Active employees" list (using a script or VLOOKUP). The diagram shows matched usernames (e.g., jsmith, mchen, rpatel) and "not found" results to identify unused licenses.](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Administration-and-Support/Evaluating-Adoption-License-and-Cost/dormant-seats-license-vlookup.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=06e504062e627f964d63b79241b51fde)

2. Machine accounts
   * Ensure CI bots and service accounts use appropriately scoped machine/service accounts that do not consume standard user seats or expensive Advanced Security committer seats. Treat machine accounts differently in your identity provider or license mapping to avoid misbilling.

3. Outside collaborators
   * Outside collaborators on private or internal repositories consume paid seats; outside collaborators added only to public repositories do not. Audit collaborator lists and, where security permits, move contributors to public repositories or adjust repository visibility to avoid unnecessary license consumption.

4. macOS and Windows runners
   * macOS minutes are billed at a 10× multiplier relative to Linux minutes; Windows minutes are billed at 2×. If you see large quantities of these SKUs, consider:
     * Restricting macOS/Windows runner use (e.g., only run them for main-branch or release builds).
     * Migrating builds to self-hosted runners (no per-minute billing from GitHub).
     * Caching dependencies and build artifacts to reduce runtime.
   * Use targeted branch filters, required checks, or repository-level policies to reduce accidental runs.

![A slide titled "Six Levers – Optimize Spending" listing levers like Dormant seats, Machine accounts, Outside collaborators, and macOS/Windows overruns. On the right is a billing-usage-2026-03.csv table showing Actions usage: Linux 12,480 (1x), macOS 8,940 (10x), and Windows 3,210 (2x).](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Administration-and-Support/Evaluating-Adoption-License-and-Cost/six-levers-optimize-spending-actions.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=e468c6ebdb6c68401c4b60f665b00252)

5. GitHub Advanced Security seats
   * Advanced Security seats can be expensive. If repositories with Advanced Security enabled are inactive, archive them. Archiving makes a repository read-only and, after 90 days, reclaims active Advanced Security committer seats that were tied to that repo. This is a safe way to pause spending on legacy projects without immediate permanent deletion.

![A presentation slide titled "Six Levers – Optimize Spending" listing items like dormant seats, machine accounts, outside collaborators, macOS/Windows overruns, and Advanced Security seats. To the right it shows a repo (acme-eng/legacy-api) with metadata and an arrow illustrating archiving the repo to make its status "Archived" and code "Read-only."](https://mintcdn.com/kodekloud-c4ac6d9a/IdpF6mT8Tun72cng/images/GitHub-Administration-Certification/Administration-and-Support/Evaluating-Adoption-License-and-Cost/optimize-spending-six-levers-repo-archiving.jpg?fit=max\&auto=format\&n=IdpF6mT8Tun72cng\&q=85\&s=b23159bd8fbb11fcc9f02ff9c5871d5a)

6. Dependency caching
   * Add caching to Actions workflows to significantly reduce subsequent build times — often by up to \~80% depending on dependency patterns. This directly reduces billed minutes and is usually the quickest win.

Example minimal workflow cache step:

```yaml theme={null}
# .github/workflows/ci.yml
steps:
  - uses: actions/cache@v4
    with:
      path: ~/.npm
      key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
```

Quick reference: SKU multipliers and important behaviors

| Resource type | Example SKU | Billing multiplier | Notes |
| - | - | - | - |
| Linux runners | `Actions Linux` | 1× | Default lowest-cost option for builds. |
| Windows runners | `Actions Windows` | 2× | Consider restricting or self-hosting. |
| macOS runners | `Actions macOS` | 10× | Highest per-minute cost; optimize or self-host. |
| Packages Storage | `Packages Storage` | N/A | Monitor GB usage and retention policies. |
| Codespaces | `Codespaces Linux` | N/A (hourly rates) | Check both storage and compute costs. |

Key takeaways

* Use the billing CSV to find expensive SKUs and repositories causing overages.
* Prioritize fixes: reclaim dormant seats, convert machine accounts, remove paid collaborator assignments where possible, and limit macOS/Windows usage.
* Archive inactive repos with Advanced Security to reclaim committer seats after 90 days.
* Add dependency caching to workflows for rapid minutes reduction.

Links and references

* [GitHub Actions billing and usage documentation](https://docs.github.com/en/billing/managing-billing-for-github-actions)
* [GitHub Advanced Security](https://docs.github.com/en/code-security/advanced-security)
* [Using the dependency cache in GitHub Actions (actions/cache)](https://github.com/actions/cache)

Apply the six levers — dormant seats, machine accounts, outside collaborators, runner controls or self-hosting, archiving Advanced Security repos, and caching — to systematically reduce your GitHub-related spend.

> [card] [Watch Video](https://learn.kodekloud.com/user/courses/github-administration-certification/module/dd75e8c3-9cc0-462c-8bdd-8ad78690d5dc/lesson/2ac40f9f-bb04-4905-ab6c-c393fd79365b)


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