actions-storage-report
v0.1.0
Published
Executive summary of GitHub Actions storage and metered usage for an organization, in your terminal.
Maintainers
Readme
GitHub Actions Storage Report
An executive summary of your GitHub organization's Actions storage and metered usage, in the terminal. Answers the question the billing page doesn't: which repository is eating the artifact storage allowance, and are we going to blow through it this month?
$ npx actions-storage-report my-org
GitHub usage — my-org
August 2026 · data through 2026-08-05 (5 of 31 days) · plan: team
── HEADLINE ──────────────────────────────────────────────────────────
Actions storage 412.66 GB-hr avg 3.44 GB held
Storage budget 1,488 GB-hr (2 GB included × 744 hr)
Used so far ███████················· 27.7%
Projected (month avg rate) 2,559 GB-hr 172.0% of budget
Projected (last 3 days rate) 1,204 GB-hr 80.9% of budget
Billed this period $18.40 storage $0.00 · minutes $18.40 · other $0.00Also reports per-repository storage share, a daily trend, runner minutes broken out by SKU with billing multipliers, and flags for the patterns that actually cost money — a single repo dominating storage, repos whose artifacts never drain, or a trailing rate headed over the allowance.
Install
npx actions-storage-report my-org # no install
npm install -g actions-storage-report # or keep it aroundRequirements
Node 18+
GitHub CLI (
gh), authenticated. All API calls go throughgh api, so this tool never handles your token.An account that can read org billing — org
Administration: readon a fine-grained token, oradmin:orgon a classic PAT:gh auth refresh -s read:org,admin:orgThe org must be on GitHub's enhanced billing platform. Orgs still on the legacy platform return a 404 from the usage endpoint.
Usage
actions-storage-report <org> [options]| Option | Description |
|------------------|-----------------------------------------------------------------------------------------------------------|
| --org <name> | Organization login. May also be passed positionally, or set as GH_USAGE_ORG. |
| --plan <plan> | free, pro, team, or enterprise. Detected from the org by default; only needed if detection fails. |
| --year <yyyy> | Defaults to the current year (UTC). |
| --month <1-12> | Defaults to the current month (UTC). |
| --json | Print the raw usageItems array and exit. |
| --no-color | Disable ANSI color. NO_COLOR is also honored. |
| --version | Print the version and exit. |
Examples:
actions-storage-report my-org # current month
actions-storage-report my-org --month 7 --year 2026 # a past month
actions-storage-report my-org --json | jq '.[0]' # raw dataReading the output
GB-hr (gigabyte-hours) is the unit GitHub actually bills storage in: one gigabyte held for one hour. Your plan's "2 GB included" is really an allowance of 2 GB × the hours in the month, so a 60 GB artifact held for one day costs the same as 2 GB held for 30 days.
Two projections are shown because they answer different questions. The month average rate extrapolates everything so far, which overshoots badly if a large artifact has already been deleted. The last 3 days rate tracks the shape you are currently on, and is usually the one to trust mid-month.
Two caveats worth internalizing:
- Storage figures lag 6–12 hours behind reality.
- Accrued GB-hr never decreases. Deleting artifacts doesn't refund what's already accrued — it only slows future accrual. Acting early in a month is worth far more than acting late.
