Skip to content
Sengi

GitHub Actions bill doubled since using Claude Code? How to cut it

Why did my GitHub Actions bill double after I started using Claude Code?

Because coding agents multiply the minutes, not the price. Claude Code opens more pull requests, pushes to each one several times while CI checks its work, and every push runs your whole suite. In our own agent-heavy repository, pull requests went from 224 in May 2026 to 2,682 in the first 26 days of October, and the last seven we checked ran between 39 and 100 workflow runs each. Five workflow changes cut the minutes: cancel superseded runs, filter by path, right-size each job’s runner, cache dependencies, and run heavy suites only on pull requests that are ready for review. Then cut the price: Sengi runs the same jobs for $0.003 a minute at 2 vCPU against GitHub’s $0.006.

Last checked October 27, 2026. Repository numbers measured October 26, 2026; GitHub’s prices from its Actions runner pricing reference and its workflow syntax and concurrency documentation, read October 27, 2026. The prices and fixes on this page are in one JSON file.

Why do coding agents multiply CI minutes?

  • More pull requests. Agents work in parallel, and each task lands as its own pull request. Our repository opened 12 times as many in October as in May, nearly all written by Claude Code and Codex.
  • More pushes per pull request. An agent pushes, reads the CI result, fixes what failed and pushes again. Each push is a full set of workflow runs.
  • Runs nobody reads. Without cancellation, the run for a superseded commit keeps going, and GitHub bills cancelled and superseded jobs for every minute they ran.
  • Every workflow on every push. A docs-only commit still runs the database tests unless a path filter says otherwise.
  • Agent jobs hold a runner. A @claude or review job keeps its runner for the whole agent session, every model turn and tool call included. The workflows are in Claude Code GitHub Actions on Sengi.
  • Rounding per job. GitHub rounds each job up to the whole minute, so many short jobs on many pushes add up fast.

At a median of 147 job-minutes per merged pull request, our repository ran 370,650 job-minutes in the first 26 days of October: $2,224 at GitHub’s 2 vCPU price. The full breakdown is in AI agents wrote 12× more PRs: how to cut the CI bill in half.

How do I cut the CI minutes agents burn?

All five fixes in one pull request workflow. Save it as .github/workflows/ci.yml and adjust the paths and commands to your project:

name: CI
on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]
    paths:
      - "src/**"
      - "test/**"
      - "package.json"
      - "package-lock.json"
      - ".github/workflows/ci.yml"
concurrency:
  group: ci-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  lint:
    runs-on: sengi-standard-2-ubuntu-2404
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v5
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npm run lint
  test:
    if: github.event.pull_request.draft == false
    runs-on: sengi-standard-4-ubuntu-2404
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v5
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npm test

1. Cancel superseded runs

The concurrency group with cancel-in-progress: true cancels the run for a commit as soon as the agent pushes the next one, so a fifth push stops the first four. Keep deploy workflows in their own group with cancel-in-progress: false: a half-finished release creates work instead of saving it.

2. Filter by path

A workflow that does not trigger bills nothing. The paths list runs CI only when code, tests or dependencies change. One catch, from GitHub’s own documentation: a required check skipped by a path filter stays pending and blocks the merge. For a required check, keep the workflow triggering and skip the expensive job inside it instead.

3. Right-size each job’s runner

Lint and typecheck run on 2 vCPU; the test suite, which uses every core, runs on 4 vCPU. timeout-minutes caps a hung job before it bills an hour. On Sengi, 4 vCPU costs $0.006 a minute, the price of GitHub’s 2 vCPU runner.

4. Cache dependencies

cache: npm restores the package cache keyed on your lockfile, so npm ci stops downloading the same packages on every push. On Sengi the Actions cache and Docker layer cache are included.

5. Run heavy suites only on ready pull requests

The test job’s if: github.event.pull_request.draft == false skips drafts, and the ready_for_review trigger runs it the moment a pull request is marked ready, then on every push after that. Tell your agent to open pull requests as drafts, for example in your CLAUDE.md, and the expensive suite runs once the work is ready instead of on every attempt. A draft cannot be merged, so nothing reaches your main branch untested.

In our own repository, 12 of 44 workflows cancel superseded runs and 12 run only when their paths change. Every cut, with its YAML and the size of its saving, is in how to reduce GitHub Actions costs.

What does each CI minute cost?

Fewer minutes is half the fix. The other half is the price of each one. Linux runner prices per minute, GitHub’s from its runner pricing reference, checked October 27, 2026:

SizeSengi labelGitHub per minuteSengi per minute
2 vCPUsengi-standard-2-ubuntu-2404$0.006$0.003
4 vCPUsengi-standard-4-ubuntu-2404$0.012$0.006
8 vCPUsengi-standard-8-ubuntu-2404$0.022$0.012

Our repository’s 370,650 minutes cost $2,224 at GitHub’s 2 vCPU price, $1,112 on Sengi and $667 at the Sengi partner rate. Sengi runs every job on a 5 GHz AMD Ryzen 9 7950X3D with local NVMe and a fresh VM for every job, so builds finish sooner and bill fewer minutes too.

Running agents at volume? The partner rate is $0.0018 a minute at 2 vCPU, 70% less than GitHub. Write to ops@sengi.run with your monthly minutes to ask for it. Every runner’s price per minute and per vCPU-hour is in the cheapest GitHub Actions runners in 2026.

How do I switch my CI to Sengi?

Let the agent that grew the bill shrink it: paste one prompt into Claude Code and it changes runs-on in every eligible job, agent workflows and CI alike, and opens the pull request for you to review. Or change runs-on: ubuntu-latest to runs-on: sengi-standard-2-ubuntu-2404 by hand after you connect your repository. Your workflows, secrets and logs stay in GitHub Actions.

Where is the data?

The five fixes, the per-minute prices at 2, 4 and 8 vCPU, the partner rate and our repository’s October numbers are in /data/github-actions-bill-doubled-claude-code.json.

Frequently asked questions

Why did my GitHub Actions bill go up after I started using Claude Code?

Because agents multiply the work your CI does. Claude Code and other coding agents open more pull requests, push to each one several times while CI checks their work, and every push runs your whole suite. The price per minute did not change; the number of minutes did.

Does Claude Code use GitHub Actions minutes?

Only when it runs inside GitHub Actions. Anthropic's claude-code-action runs as a job on your runner and bills every minute Claude works. Claude Code on your own machine uses no Actions minutes itself, but every pull request and push it makes runs your CI.

What is the quickest way to cut agent CI minutes?

Add a concurrency group with cancel-in-progress: true to each pull request workflow. When an agent pushes again, GitHub cancels the run for the commit it replaced, so you stop paying for runs nobody will read. Keep deploy workflows out of it.

Will path filters break my required checks?

They can. GitHub leaves a required check that a path filter skipped pending, which blocks the merge. Use path filters on workflows that are not required checks, and for a required one, keep the workflow triggering and skip the expensive job inside it.

Should coding agents open draft pull requests?

Yes, if your heavy suites skip drafts. Tell the agent to open pull requests as drafts, run lint and typecheck on every push, and run the full test suite once the pull request is marked ready for review and on every push after that. A draft cannot be merged, so nothing skips the suite on its way in.

Which runner size should agent CI use?

2 vCPU for lint, typecheck and agent review jobs, which mostly wait on the model or a single core. 4 vCPU for test suites and builds that use every core. On Sengi, 4 vCPU costs $0.006 a minute, the price of GitHub's 2 vCPU runner.

How much less does Sengi charge per minute?

Half at 2 and 4 vCPU and 45% less at 8 vCPU: $0.003, $0.006 and $0.012 a minute against GitHub's $0.006, $0.012 and $0.022. Teams running agents at volume can ask for the partner rate, $0.0018 a minute at 2 vCPU, by writing to ops@sengi.run.

Do I have to rewrite my workflows to move to Sengi?

No. Only the runs-on line changes. Your triggers, secrets, caches and logs stay in GitHub Actions, and Sengi's one prompt lets Claude Code make the change and open the pull request for you.

The fastest hardware for your GitHub Actions.

AMD Ryzen 9 7950X3D desktop CPUs boosting past 5 GHz, on bare metal with local NVMe, a fresh VM for every job, and 2 vCPU jobs ready in 2 seconds. Builds finish up to 1.9× faster than on GitHub’s runners, and at up to half GitHub’s price per minute they cost up to 74% less per build. Change one runs-on line, or give your coding agent one prompt and it opens the pull request for you.

Run your next build on Sengi

See how switching works