← FinOpsAid blog

Which repositories are actually costing us? Reading the Repositories page column by column
Runs, failed runs, minutes, modeled Actions cost, health percentage and the activity badge — what each column means, which direction is good, and why the default sort is recency.
The Repositories page answers a narrower question than its name suggests. It is not a view of everything a repository costs — it is a view of what a repository's CI costs, plus a few hygiene signals. That distinction is the first thing to internalise, because it explains every "why is this repo showing $0" question anyone will ask you.
If you haven't read the grammar behind every number, the badge and direction conventions used below live there.
What this page can and cannot attribute
Actions Cost is modeled, and it is CI only. Minutes is the signal GitHub actually reports; the dollar figure is a rate applied to it, which makes it good for ranking and unsuitable for reconciliation.
The KPI row
| Tile |
What it counts |
Higher means |
| Repositories |
Total repositories in scope, with the active count as a footnote. |
Neutral. |
| Actions Cost |
Sum of modeled CI cost across all repositories. Labeled "modeled" on the tile. |
Worse. |
| Total Minutes |
Total billable runner minutes. The underlying signal. |
Worse, in cost terms. |
| Avg Health |
Average repository health percentage. |
Better. One of the few "up is good" tiles. |
| Missing License |
Repositories with no licence file, plus a missing-README count as a footnote. |
Worse — a hygiene and compliance signal, not a cost one. |
Avg Health is a composite hygiene score, not a build-success rate. Don't confuse it with the Actions success rate on the GitHub Actions page — different metric, different source.
Top repositories by Actions minutes
A ranked horizontal bar chart of the eight repositories consuming the most billable minutes, with the subtitle "Billable runner minutes drive modeled Actions cost." It ranks on minutes, not on the modeled dollar figure, which makes it the more honest of the two views — you're looking at the raw signal.
If it reads "No billable Actions minutes recorded", either the org runs CI entirely on self-hosted runners (which don't consume GitHub-billed minutes) or Actions isn't in use. Self-hosted cost lives on the Runners page instead.
The repositories table, column by column
The pairing to hunt for is "No activity" plus non-trivial Minutes. A dead repository with a live cron is the cheapest saving on this page, and it has an owner you can name.
| Column |
What it means |
Direction |
| Repository |
Name, plus an archived chip where relevant, plus a link out to GitHub. Click through for per-repo detail. |
— |
| Status |
Derived by the warehouse over the last ~52 days. Green Active, or amber No activity. A dash means we have no stats snapshot yet. |
Active is better. |
| Last active |
Weeks since the most recent commit, plus a 12-week commit sparkline. Highlighted when within the last week. |
Recent is better. |
| Visibility |
public / private / internal. |
Neutral — but a public repo with failing runs is a different risk. |
| Runs |
Workflow run count in scope. |
Neutral alone. |
| Failed |
Failed runs, rendered in the warning colour when non-zero. |
Lower is better. Failed runs are billed. |
| Minutes |
Billable runner minutes. The real signal. |
Lower is better. |
| Actions Cost |
Minutes × rate. Modeled. |
Lower is better. |
| Health |
Repository health percentage. |
Higher is better. |
The default sort is recency, not cost. When commit data is available the table sorts by most-recently-committed first, on the reasoning that those are the repositories you're actively working on. When commit data isn't available it falls back to sorting by modeled Actions cost. So the most expensive repository is not necessarily at the top — check the Minutes column, or use the ranked chart above the table.
The table shows the top 40 rows. The Export button exports every filtered row, not just the visible 40, including the weeks-ago figure. Search filters before the cut.
What people get wrong on this page
- Expecting total repository cost. It's CI cost. Copilot, seats and Codespaces have no repo attribution at source.
- Reading the top row as the most expensive. Default sort is recency.
- Ignoring failed runs as a cost item. A run that fails at minute nine has billed nine minutes.
- Confusing Health with build success. Health is repository hygiene; success rate is on the Actions page.
- Assuming archived means free. An archived repo can still hold Actions cache storage, which bills. That shows on the GitHub Actions page.
The 60-second read
- Ranked minutes chart first — the top three repositories usually are most of the bill.
- Scan the Status column for No activity rows with real Minutes. That's the list to send to owners.
- Scan Failed for anything double-digit — a flaky workflow is a recurring charge.
- Check Missing License on the KPI row if compliance is part of your remit.
- Export when you need to hand the list to someone; the CSV carries more than the screen.
Frequently asked questions
Why does a repository show $0 cost when we use Copilot heavily in it?
The Actions Cost column is modeled CI cost only. GitHub attributes workflow runs, runner minutes and Actions cache to a repository, but it does not attribute Copilot spend, seat cost or Codespaces to one. A repo with no CI correctly shows zero.
Why isn't the most expensive repository at the top of the table?
The default sort is most recent commit activity, not cost, on the reasoning that those are the repositories you are actively working on. It falls back to sorting by modeled Actions cost only when commit data is unavailable. Use the ranked minutes chart above the table to see the biggest consumers.
Do failed workflow runs still cost money?
Yes. A run that fails after nine minutes has billed nine minutes at the normal rate. The Failed column is rendered in the warning colour when non-zero for that reason, and at a 90% success rate roughly a tenth of your CI spend bought nothing.
Want this for your own org? Connect your GitHub org — read-only and free during beta — or explore the demo first. Next: how to read the Pull Requests page.