GitHub Actions budget

How do I stop GitHub Actions from billing past my budget?

To stop GitHub Actions from billing past your budget, set a monthly budget with the "Stop usage when budget limit is reached" option enabled in your account billing settings. If you leave that box unchecked, GitHub sends threshold warnings at 75%, 90%, and 100% but keeps your jobs running and bills you for every extra minute at rates like $0.006 per minute for standard Linux runners.

Every account gets an included compute allowance each month - $12 for GitHub Free or $18 for GitHub Pro and Team - before metered billing starts. Once that included balance and your configured budget run out, GitHub blocks all GitHub-hosted runners until the next monthly billing cycle begins or until you increase the budget limit.

How GitHub Actions budgets work

GitHub treats Actions compute as a metered product alongside Copilot AI credits and cloud sandboxes. You can set monthly budgets in US dollars to control that spend across personal accounts, organizations, repositories, enterprises, and cost centers (for enterprise accounts).

You can create up to 10,000 budgets per account. But how they behave depends on a single setting: the stop-usage option.

When you configure a budget, GitHub offers a toggle to "Stop usage when budget limit is reached" (or "Limit usage when budget limit is reached"). If you select this option and your spending hits the limit, GitHub halts metered usage. If you do not select it, GitHub only sends you an email notification when you cross the limit while your workflows continue to run and generate charges.

Keep these mechanics in mind before setting your numbers:

  • Metered usage can count toward multiple applicable budgets at the same time. If any active budget with "Stop usage when budget limit is reached" is exhausted, GitHub blocks further usage across that scope.
  • Budgets only track spending from the date you create them onward. Any metered usage accrued earlier in that same billing cycle is completely ignored. Because of this, your account can still exceed the budget amount during the first billing cycle in which you set it up.
  • You can edit the monetary limit or delete a budget at any time on the "Budgets and alerts" page, but you cannot change the scope of an existing budget once created. To change scopes, you must delete it and create a new one.
  • Anyone with write access to a repository can trigger Actions workflows, and all resulting costs bill directly to the repository owner rather than the user who initiated the run.

Included monthly compute by plan

GitHub does not give you a fixed pool of free minutes. Instead, GitHub grants an included compute usage allowance defined as a monetary value in USD each month. Standard runner minutes, cloud sandbox compute and memory, and Copilot code review runners in private or internal repositories all pull from this single monthly dollar balance.

Public repositories work differently: standard GitHub-hosted runners and self-hosted runners are free and do not draw down your included compute balance. Larger runners, however, are always billed even on public repositories, though GitHub Team and GitHub Enterprise Cloud accounts can apply their included compute against larger runner costs.

Here is how the plan allowances and storage overage rates compare:

PlanIncluded monthly computeShared artifact storageActions cache per repoCustom image storage
GitHub Free$12 USD500 MB10 GBNot applicable
GitHub Free for organizations$12 USD500 MB10 GBNot applicable
GitHub Pro$18 USD1 GB10 GBNot applicable
GitHub Team$18 USD2 GB10 GB75 GB
GitHub Enterprise Cloud$300 USD50 GB10 GB150 GB

If your account does not have a valid payment method on file, GitHub automatically blocks Actions usage as soon as your included compute balance runs out. Larger runners always require an active payment method on file.

To see what standard compute rates look like once you exhaust your monthly balance, check How much do GitHub Actions minutes cost in 2026?. Standard 2-core Linux runners (actions_linux) cost $0.006 per minute, 1-core slim Linux (actions_linux_slim) costs $0.002 per minute, and 2-core ARM Linux (actions_linux_arm) runs at $0.005 per minute. Standard 2-core Windows runners cost $0.010 per minute, while macOS 3-core or 4-core runners (actions_macos) cost $0.062 per minute.

For storage beyond your plan's included quotas, overages accrue hourly at $0.25 per GB/month for shared storage (artifacts and packages), $0.07 per GB/month for Actions cache, and $0.07 per GB/month for custom image storage. Deleting artifacts stops future hourly charges immediately (though GitHub takes 6 to 12 hours to update your reported artifact storage usage), while charges that already accrued earlier in the billing cycle remain on your bill.

Step-by-step: Set a hard spending budget

Setting a budget takes about two minutes in the GitHub web interface.

1. Open your billing overview

For a personal account, go straight to your billing overview:

https://github.com/settings/billing

For an organization, open your organization's settings page, select the billing options, and locate the budgets section. You must be an organization owner to configure organization budgets, or an enterprise owner or billing manager to set enterprise and cost center budgets.

2. Create the new budget

Click Budgets and alerts, then click New budget.

Choose your scope. Personal account owners can set budgets for the whole account or scope them down to a single repository. Organization owners can scope a budget to the entire organization or a single repository. Enterprise accounts can choose between the entire enterprise, an organization, a repository, or a specific cost center.

3. Enable the hard stop and alerts

Enter your target limit in USD. To ensure spending stops:

  1. Select Stop usage when budget limit is reached (or Limit usage when budget limit is reached). If you leave this unchecked, you will get warning emails when the budget is exceeded, but your workflows will keep running and incurring costs.
  2. Under "Alerts", select Receive budget threshold alerts. This triggers notifications by email and displays banners in the GitHub UI when usage hits 75%, 90%, and 100% of the budget amount.
  3. Review recipient settings. By default, alerts go to account owners and billing managers, but you can add additional email recipients if needed.

Save the budget. From that moment forward, GitHub tracks your metered spending against that limit.

What happens when your budget runs out?

When an account or organization hits a budget that has the stop-usage option enabled, GitHub blocks members from starting any new jobs on GitHub-hosted runners. This lock remains active until the next monthly billing cycle resets your compute usage, or until an owner manually raises the budget limit.

If you have overlapping budgets - such as an organization-wide budget of $50 and a higher SKU-level budget - reaching the hard stop on the organization budget blocks all GitHub-hosted runners immediately.

You can also opt in to alerts for your plan's included usage. On the "Budgets and alerts" page, enterprise owners, organization owners, personal account owners, and billing managers can use the Included usage alerts control to toggle notifications sent when plan usage reaches 90% and 100% for Actions minutes and storage.

If you are dealing with workflows looping uncontrollably before your budget catches them, see How do I stop a runaway GitHub Actions workflow before it burns minutes?.

Monitoring GitHub spending alongside your other tools

GitHub's built-in budgets are reliable for cutting off metered runners, but they only govern GitHub itself. If your CI/CD pipelines deploy code that spins up costly infrastructure on external providers, a runaway pipeline can inflate your total cloud bill without ever exceeding your GitHub Actions budget. For an overview of how other platforms handle caps, read Which cloud and AI providers let you set a hard spending cap?.

This is where Costbrake fits in. Costbrake tracks what you spend across 23 cloud, AI, and SaaS providers, including GitHub, AWS, Google Cloud, Azure, Cloudflare, OpenAI, Anthropic, and RunPod.

For GitHub specifically, Costbrake reads your billing usage report and prices running Actions jobs at list rates so you do not have to wait for the daily invoice to see what is happening. Polling uses up to about 450 of your 5,000 GitHub API requests per hour and automatically backs off if fewer than 750 requests remain.

Costbrake provides two opt-in actions - called brakes - for GitHub:

  • Disable workflow: Disables an individual workflow so no new runs start, and immediately cancels its queued and running jobs.
  • $0 Actions budget: Sets your organization's Actions budget to $0 with the stop-usage setting enabled, halting all jobs on GitHub-hosted runners once GitHub enforces it.

Brakes are completely opt-in and require an admin to manually click and confirm before running; Costbrake never executes a brake automatically.

To connect your account, check the agent setup walkthrough or view plan options on Costbrake pricing. New workspaces include a 14-day Pro trial without requiring a credit card, after which the Free plan continues monitoring your two highest-spending connections with hourly checks.

Questions and answers

Does GitHub Actions have an automatic spending limit?

Yes, if you do not have a payment method on file, GitHub automatically cuts off Actions compute once your plan's included dollar allowance runs out. If you do have a payment card on file, you must explicitly set a budget with "Stop usage when budget limit is reached" selected to prevent overage charges.

What happens when an Actions hard budget is reached?

Members are immediately blocked from running workflows on GitHub-hosted runners across the budget's scope. That block stays in place until your next billing cycle begins or until an authorized account owner increases the budget limit.

How many free Actions minutes do I get each month?

GitHub gives you an included monetary allowance rather than a fixed minute bucket: $12 per month on GitHub Free accounts and $18 per month on GitHub Pro and Team. For a standard 2-core Linux runner billed at $0.006 per minute, $12 covers 2,000 minutes and $18 covers 3,000 minutes.

Why did GitHub bill me after I set a hard budget limit?

When you create a budget, it only calculates metered usage starting from the day it was created. Any billable minutes or storage used earlier in that billing cycle are excluded from the calculation, which means your total bill for that first cycle can still exceed your limit.

Can I change a budget from repository scope to organization scope?

No, GitHub docs state that you cannot change the scope of an existing budget after creating it. You must delete the repository budget and create a new one scoped to the entire organization.

Sources

Updated