AI coding agents and your CI bill: the GitHub Actions math
On this page
Coding agents open more pull requests, and every push runs your CI, so a per-minute GitHub Actions bill grows with them. At 3 pushes per pull request and a 10-minute job on GitHub's 8-core runner, 30 pull requests a day is 27,000 job-minutes: $594 a month. Skipbox M runs 8 vCPU jobs for a flat $79 a month.
Fluxenic, the company behind Convika, makes Skipbox, so the flat-price runner in this post is our own product. Every GitHub, Anthropic, and vendor fact below was read on its own page on November 11, 2026, quoted, and linked under Sources.
- The cause: an agent pushes a fix for each review comment and each failed check, and every push starts your workflows again.
- The bill: job-minutes × the runner's rate. It has no ceiling unless you set a budget, and a budget stops your jobs.
- The wait: jobs queue when more arrive than your runners take at once.
- The fixes that cut runs:
cancel-in-progress, path filters, and fewer triggers for the agent's own job. - The fix that removes the meter: an always-on runner at a flat price. One 8 vCPU runner busy all month is 43,200 job-minutes: $950.40 on GitHub's 8-core runner, $79 on Skipbox M.
Why agents multiply CI runs
More pull requests, and more pushes to each. GitHub's Octoverse report says: "By September 2026, more than 40% of pull requests on GitHub started with an agent's first draft, up from 17% in March." The same report says GitHub Actions ran "more than three times last year's total" of jobs.
An agent doesn't open a pull request and stop. It pushes again for each review comment and each red check, and each push is a new CI run. Anthropic's docs for Claude Code's GitHub Action treat that as the wanted behaviour: when CI doesn't run on Claude's commits, they tell you to change how the action authenticates, because "GitHub doesn't trigger workflows on commits made with the default GITHUB_TOKEN."
One team's own words, from Forestwalk's June 8, 2026 post: "As our PR throughput has gone up, it's increasingly obvious that our CI actions are too slow and expensive." And later: "our agents run a lot of CI jobs."
The agent's own job bills minutes too. That arithmetic is in what Claude Code's GitHub Action costs in Actions minutes.
The arithmetic at 10, 30, and 100 pull requests a day
The assumptions, so you can swap in your own:
- Each pull request gets 3 pushes: the first, and 2 fixes.
- Each push runs one 10-minute job on GitHub's Linux 8-core runner, $0.022 a minute.
- The month has 30 days. Agents don't take weekends.
- The account is on GitHub Team, which includes $18 of compute a month.
| Pull requests a day | CI runs a day | Job-minutes a day | Job-minutes a month | At $0.022 a minute | After GitHub Team's $18 |
|---|---|---|---|---|---|
| 10 | 30 | 300 | 9,000 | $198 | $180 |
| 30 | 90 | 900 | 27,000 | $594 | $576 |
| 100 | 300 | 3,000 | 90,000 | $1,980 | $1,962 |
For your own number: pull requests a day × pushes per pull request × job-minutes per push × 30 × your runner's rate. GitHub's Linux rates are $0.006 a minute for the 2-core ubuntu-latest, $0.012 for 4-core, $0.022 for 8-core, and $0.042 for 16-core, and "GitHub rounds the minutes and partial minutes each job uses up to the nearest whole minute."
The included $18 doesn't grow with the pull requests. Every run the agents add past it is billed in full.
Why CI gets slow when pull requests pile up
Three things stack:
- Runs nobody needs keep running. An agent pushes 3 fixes in 10 minutes. Without a concurrency rule, all 3 runs go to the end, and only the last one matters.
- Jobs arrive in bursts. Agents finish at the same moment more often than people do. 10 pull requests opened together, each with a 6-job matrix, is 60 jobs at once.
- Runners are finite. GitHub's limits page lists the "Total concurrent jobs" on standard GitHub-hosted runners: 20 on GitHub Free, 40 on GitHub Pro, 60 on GitHub Team, and 500 on Enterprise. On runners you host, the limit is your machines. Jobs past it wait, and "A job can be in the queue for 24 hours before it is automatically cancelled."
On a per-minute runner you mostly get the bill and not the wait. On a fixed set of machines you get the wait and not the bill. The options below move you between the two.
The options
| Option | What it cuts | What it leaves |
|---|---|---|
cancel-in-progress | The runs a newer push replaced | Every run that finishes still bills |
| Path filters | Runs for changes your tests don't read | Code changes run in full |
| Larger GitHub runners | Minutes per job, when the job uses the cores | A higher rate per minute |
| A GitHub budget | The bill, at a hard limit | It stops every GitHub-hosted job at that limit |
| An always-on runner at a flat price, such as Skipbox (made by Fluxenic, the company that publishes this site) | The meter: $79 a month for 8 vCPU, unlimited minutes | Jobs past the plan's size wait their turn |
Cancel the run a new push replaces
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
GitHub's workflow syntax: "To also cancel any currently running job or workflow in the same concurrency group, specify cancel-in-progress: true." The minutes a stopped run already used are billed. The rest of it never runs.
Skip the runs that test nothing
on:
pull_request:
paths-ignore:
- "docs/**"
- "**/*.md"
"When all the path names match patterns in paths-ignore, the workflow will not run." Agents edit docs and comments as often as code.
Larger runners
A larger runner costs more per minute: GitHub's 4-core is 2 times the 2-core rate, and the 8-core is 3.7 times. The bill drops only when the job gets shorter by more than that. A test suite that already runs in parallel may; a single-threaded build won't.
An always-on runner at a flat price
A 30-day month has 30 × 24 × 60 = 43,200 minutes. One 8 vCPU runner that never idles runs 43,200 job-minutes:
| Runner, 8 vCPU | The arithmetic | A month |
|---|---|---|
| GitHub 8-core | 43,200 × $0.022 | $950.40 |
| Skipbox M | flat | $79 |
Skipbox M is cheaper: $950.40 ÷ $79 is 12 times its price. GitHub doesn't bill those minutes at all, because a runner from another company connects as a self-hosted runner, and GitHub's billing page lists "Self-hosted runners" under usage that "remains free independently and does not reduce the included compute usage."
Copilot code review uses Actions minutes too
Since June 1, 2026, each Copilot code review on a private repository is one more agent job on the same meter. GitHub's changelog of April 27, 2026: "GitHub Actions minutes will be consumed from your existing plan entitlement for each review that is run on private repositories, with any usage beyond your included minutes billed at standard GitHub Actions rates."
GitHub's billing page says it this way today: "Each Copilot code review consumes GitHub Actions compute in addition to AI credits." Reviews and CI draw on the same included compute, and "No eligible usage type has priority over another when drawing from the shared included compute usage."
To find the review minutes, download the detailed usage report and filter workflow_path by dynamic/agents/copilot-pull-request-reviewer.
The review job can't move to just any runner. GitHub's docs: "ARC is the only officially supported solution for self-hosting Copilot code review. For security reasons, do not use non-ARC self-hosted runners." ARC is Actions Runner Controller, which runs on Kubernetes. So Skipbox doesn't run the review job. It takes the rest of your CI, and the builds and tests you move leave GitHub's included compute for the reviews.
The same three teams on a flat price
A flat plan sells size, not minutes. Skipbox M runs one 8 vCPU job at a time, so the question is how many M plans the day's work fits in:
| Pull requests a day | Job-minutes a day | Skipbox M plans, work spread over 24 hours | Skipbox M plans, work packed into 8 hours | GitHub 8-core, a month |
|---|---|---|---|---|
| 10 | 300 | 1, $79 | 1, $79 | $180 |
| 30 | 900 | 1, $79 | 2, $158 | $576 |
| 100 | 3,000 | 3, $237 | 7, $553 | $1,962 |
Each plan count is the day's job-minutes divided by the minutes in the window (1,440 or 480), rounded up. That is the least that fits: the runners are busy most of the time, and jobs wait their turn. Add a plan and they wait less. Waiting adds nothing to the bill, and Skipbox's account page shows how many jobs are waiting and how long the oldest has waited.
Skipbox's prices are $39, $79, or $149 a month for 4, 8, or 16 vCPU, with "Unlimited minutes" and "No usage charges." Against GitHub's runner of the same size on GitHub Team, Skipbox S is cheaper above 4,750 job-minutes a month, M above 4,410, and L above 3,977. Against the 2-core ubuntu-latest, Skipbox S is cheaper above 9,500.
What it doesn't have:
- macOS, Windows, or Arm. Skipbox runs Linux x64.
- GitHub's memory per core. Skipbox M has 16 GB; GitHub's 8-core runner has 32 GB.
- The Copilot code review job, as above.
No benchmark of Skipbox has been published, so this post claims no speed for it.
To move a job, sign in at skipbox.dev with GitHub, install the Skipbox app, and change the job's line:
jobs:
test:
runs-on: skipbox
skipbox asks for 4 vCPU; on plans with the larger VMs, skipbox-8x16 and skipbox-16x32 ask for those. The Skipbox trial runs one 4 vCPU job at a time for 7 days or 3,000 job-minutes from your first job, whichever comes first, and takes no card.
Start a free Skipbox trial on skipbox.dev
Per-minute prices across GitHub and 7 runner vendors are in how much GitHub Actions runners cost, and the vendors by billing model are in Blacksmith alternatives.
Related reading
- GitHub Actions pricing in November 2026: per-minute rates, what each plan includes, and a month's math
- Fix: an Actions budget is preventing further use
- How to speed up GitHub Actions: 6 fixes, in order
- Every flat-rate GitHub Actions runner with unlimited minutes
Frequently asked questions
Do AI coding agents increase GitHub Actions costs?
Yes. Every pull request and every push an agent makes starts your workflows, and GitHub bills each job by the minute. At 30 pull requests a day, 3 pushes each, and a 10-minute job on GitHub's 8-core runner, that is 27,000 job-minutes, $594 a month. A flat-price runner takes the minutes off the meter: Skipbox M runs 8 vCPU jobs for $79 a month with unlimited minutes. Fluxenic, the company behind Convika, makes Skipbox.
Why is CI slow since AI agents started opening more pull requests?
More jobs arrive than your runners take at once, so they queue. Agents push several fixes in a row, and without cancel-in-progress every older run still goes to the end. GitHub runs at most 60 standard jobs at once on GitHub Team; on runners you host, the limit is your machines.
How do I stop CI from running on every push an agent makes?
Add a concurrency group with cancel-in-progress: true, so a new push stops the run still going on that branch, and paths-ignore, so a docs-only push starts nothing. Then start the agent's own review on opened or on a mention, not on every push.
Does Copilot code review use GitHub Actions minutes?
Yes, since June 1, 2026, on private repositories. GitHub's billing page: "The runner cost draws from your account or organization's included compute usage. Additional usage is billed at standard GitHub Actions rates." On public repositories it stays free.
Can Copilot code review run on a self-hosted runner?
Only on Actions Runner Controller. GitHub's docs: "ARC is the only officially supported solution for self-hosting Copilot code review. For security reasons, do not use non-ARC self-hosted runners." Skipbox isn't ARC, so it doesn't run the review job. It runs the rest of your CI for a flat monthly price.
What is the cheapest way to run CI for AI coding agents?
Cut the runs first: cancel-in-progress and path filters cost nothing. For the runs that are left, a runner that is busy most of the day costs least at a flat price. One 8 vCPU runner busy all month is 43,200 job-minutes: $950.40 on GitHub's 8-core runner, $79 on Skipbox M.
Sources
Read 2026-11-11 (Japan time).
- GitHub Blog: Octoverse 2026 (published 2026-10-28, updated 2026-11-06, checked 2026-11-11)
- Claude Code Docs: Claude Code GitHub Actions: CI on Claude's commits (checked 2026-11-11)
- Forestwalk: Surprise! Pay $1000 (published 2026-06-08, checked 2026-11-11)
- GitHub Docs: Actions runner pricing (checked 2026-11-11)
- GitHub Docs: GitHub Actions billing: included compute, self-hosted runners, Copilot code review (checked 2026-11-11)
- GitHub Docs: Actions limits: concurrent jobs by plan, the 24-hour queue limit (checked 2026-11-11)
- GitHub Docs: Workflow syntax:
concurrency,paths-ignore(checked 2026-11-11) - GitHub Docs: Larger runners: 32 GB on the 8-core runner (checked 2026-11-11)
- GitHub Changelog: GitHub Copilot code review will start consuming GitHub Actions minutes on June 1, 2026 (published 2026-04-27, checked 2026-11-11)
- GitHub Docs: Configuring runners for GitHub Copilot code review (checked 2026-11-11)
- GitHub Docs: Models and pricing for GitHub Copilot: where the review's Actions minutes show (checked 2026-11-11)
- GitHub Docs: Budgets and alerts (checked 2026-11-11)
- Skipbox: plans, sizes, unlimited minutes, the trial, private repositories (checked 2026-11-11)
Related articles
- Claude Code GitHub Actions cost: minutes, rates, capsWhat Claude Code's GitHub Action uses in GitHub Actions minutes: the runner, the rate, a month from the usage report, the caps, and a flat-price runner.
- Are GitHub self-hosted runners free? Yes, in 2026Yes. GitHub bills nothing for self-hosted runner minutes (billing docs read November 11, 2026). Why AI answers say otherwise, and what you pay instead.
- Blacksmith alternatives by billing model, with prices (2026)Blacksmith's per-minute prices as published, and 9 alternatives by how they bill: per minute, a plan with minutes, a licence, flat per server, flat managed.