GitHub Actions will tell you what you spent. It won't tell you which workflow spent it.
The billing page groups usage by repo and by runner type. To find the workflow behind a big number, you open each repo's Actions tab, click into runs, and add up durations yourself. Almost nobody does. So the most expensive workflow in your org tends to stay invisible until the bill is already a problem.
I wanted to see what that blind spot looks like on real data, so I audited my own repos.
I sampled the last ~100 runs per repo across my GitHub fleet: 812 workflow runs in total. For each run I took the billed minutes, grouped them by workflow, and priced them at private-repo Ubuntu rates ($0.008/min).
To be upfront about the caveats: these are my personal repos, they are public, and GitHub doesn't bill Actions minutes on public repos. The ~1,603 billable minutes come to about $12.82 at private rates, and my actual bill was about $0. The dollar figure is a hypothetical. The shape of the data is what matters.
of the entire fleet's CI compute came from a single workflow: a React app's "CI/CD with Coverage and Playwright". That's 572 billed minutes over 93 runs, averaging 5.6 minutes a run.
On a team with private repos, the same pattern turns into real money, and the cost scales with how often the workflow runs, not how important it is. A slow end-to-end job triggered on every push, including docs-only changes, is the classic offender.
None of these need a runner migration or a new tool:
The audit logic is now a small read-only service called spendtron. It uses a GitHub App with two permissions (Actions: read, Metadata: read), so it can't see your code or secrets and never pushes changes. Call it from Claude or any MCP client at https://spendtron.com/mcp, or install the GitHub App. The first audit per org is free; after that it's $99/month.