Can you work out your GitHub Actions bill by subtracting run_started_at from updated_at for every workflow? No. Those are workflow-run timestamps, not a statement of billable usage. A useful OpenClaw cost monitor keeps the run ledger and GitHub's account billing view separate, then reports what each can actually prove.
We had to make that distinction in our own GitHub Actions Cost Tracker template. Its earlier draft multiplied a workflow's elapsed time by fixed Linux, macOS, and Windows factors and called the result cost. That shortcut could turn a useful activity alert into a false spending claim. The template now asks for the billing source when a real charge matters.
Two ledgers, two different questions
| Source | Useful question | Do not infer |
|---|---|---|
| GitHub workflow runs API | Which workflow ran, failed, or was retried in the window? | Charged minutes or money from workflow start and update times |
| Account or organization Actions billing view | What usage and charges does GitHub report for the billing owner? | Which single workflow caused every line item without further evidence |
| Runbook notification | Did the scheduled check find an anomaly and reach an operator? | That an alert was delivered just because the automation ran |
GitHub says standard GitHub-hosted runner use in public repositories and self-hosted runner use are free under its Actions billing model. Private repositories have plan allowances; additional usage can be billed to the repository owner. Storage and larger runners have their own treatment. A single multiplication rule cannot cover those cases. Check the current billing page and your actual account before attaching a currency figure to a report.
A check you can rehearse
- Pick one repository owner and a reporting window. List workflow runs with their IDs, names, statuses, conclusions, and timestamps. Keep the source query and timezone in the report.
- Open that owner's Actions billing view for the same window. Record its reporting period and any included allowance. If the runbook cannot access billing, say 'billing not checked' and send a run-activity report instead.
- Re-run a harmless workflow in a test repository. Confirm the activity report changes without assuming a matching charge appeared immediately. Check the official billing view when it updates; don't invent a latency guarantee.
- Simulate an unavailable billing source and a failed notification. The first must be 'unknown spend', not '$0'; the second must be an undelivered alert, not a successful warning.
This is an acceptance procedure, not a claim that the gallery prompt has been tested against your GitHub account. The template text alone does not create an Automation or grant billing permissions. Keep budget enforcement in GitHub's billing controls; let the agent assemble a bounded explanation with links to the authoritative records.
Inspect the GitHub Actions Cost Tracker template