This morning I got an email from GitHub: "You have used 90% of the Actions storage included for the alapha888 account." 0.45 GB used out of 0.5 GB included, 7 days into the billing cycle.
Free accounts get 500 MB of Actions storage a month. I knew the number. I did not expect to burn through it in a week.
What was actually there
I listed the artifacts with the GitHub API:
- 47 artifacts in one repo, totaling 2.26 GB retained.
- (The email said 0.45 GB; the API listed 2.26 GB. The meter lags or measures differently — either way, it was over the limit.)
Every CI run uploaded three artifacts:
- the installer: ~90 MB
- the CLI exe: ~43 MB
- the GUI exe: ~46 MB
About 180 MB per run. We had a busy two days of fix iterations — roughly 7 runs — and none of it ever expired, because none of the upload steps set a retention. The default is 90 days.
The fix
Two changes.
First, delete the old artifacts, keeping only the newest one of each name (the current build is reproducible from source, so the older copies are just copies). One API call per artifact:
gh api -X DELETE repos/<owner>/<repo>/actions/artifacts/<id> That removed 43 artifacts; 4 remain, totaling 171 MB — down from 2,258 MB.
Second, stop it from coming back. Three lines in the workflow:
- uses: actions/upload-artifact@v4 with: name: bank-statement-converter-windows path: converter/dist/bank-statement-converter.exe retention-days: 1 The two exe artifacts only exist so the installer job can download them in the same run — they get 1 day. The installer itself is the deliverable, so it gets 7 days; if an order comes in after that, I re-run the workflow and rebuild it.
The lesson
actions/upload-artifact defaults to 90 days of retention. If your CI uploads a large build on every push, the free 500 MB goes fast and the warning email is the first you'll hear about it. Set retention-days on every upload step, and check what you're actually retaining — gh api repos/<owner>/<repo>/actions/artifacts tells you in one call.
Repo (for the workflow file, if you want to see the exact change): https://github.com/alapha888/bank-statement-presale

