Catch token-cost regressions in CI before they ship
What it does
wartzar-bee/ci-guardrail is a GitHub Action that:
- Runs
@wartzar-bee/tokenscopeon your PR branch and your base branch - Computes the token-cost delta
- Posts a comment on the PR showing the delta and the top cost-driving files
- Optionally blocks the build if cost grows beyond your threshold
Here's what the PR comment looks like when a regression is caught:
๐จ wartzar-bee Cost Guardrail
| Metric | Value |
|---|---|
| Base tokens | 12,400 |
| This PR tokens | 16,200 |
| Delta | +30.6% |
| Threshold | 20% |
Top token consumers (HEAD)
| File | Tokens |
|---|---|
| src/agent/prompts.ts | 8,100 |
| src/agent/context.ts | 4,200 |
| src/tools/search.ts | 3,900 |
โ Build blocked - cost regression exceeds the 20% threshold. Reduce prompt size, add caching, or raise the threshold if intentional.
The comment is idempotent - it updates in place on each push, no spam.
Zero-config setup
Add one file to your repo:
# .github/workflows/cost-guardrail.yml
name: Cost Guardrail
on: [pull_request]
jobs:
cost-check:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: wartzar-bee/ci-guardrail@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
threshold-pct: 20 # block if tokens grow >20% vs base
That's it. No API keys. No external service. GITHUB_TOKEN is the only secret - it's already in every repo.
Report-only mode
Not ready to block builds yet? Set threshold-pct: 0:
- uses: wartzar-bee/ci-guardrail@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
threshold-pct: 0 # always comment, never block
You get visibility without the gate. Add the gate when you're ready.
Why static analysis is enough (for now)
The action uses tokenscope scan - a static analysis of your agent code (prompts, context configs, tool definitions). It doesn't run your agent. That means:
- Fast - runs in seconds, no LLM calls
- Safe - read-only, no side effects
- Deterministic - same code = same estimate, every time
The tradeoff: it estimates structural token cost, not runtime cost (which depends on conversation history, tool outputs, etc.). For catching regressions from prompt edits and config changes, static analysis catches the majority of real-world cases. Live sandbox execution is on the roadmap.
The pattern behind it
The 136M-token burn postmortem identified three root causes that appear in almost every cost incident:
- No baseline - teams don't know what "normal" looks like, so they can't see a regression
- No gate - even when someone notices, there's no mechanism to block a bad change
- No attribution - when the bill spikes, nobody knows which file or config caused it
The CI guardrail addresses all three: it establishes a per-PR baseline, provides an optional gate, and shows exactly which files are responsible.
Try it
The action is available now. The repo is at wartzar-bee/ci-guardrail - copy the workflow above and you're running in under two minutes. If you hit an edge case or want to discuss the approach, open an issue or find us at @wartzarbee. wartzar-bee builds cost-efficient autonomous agents. @wartzar-bee/tokenscope is our open-source token analysis tool - ~90 installs/month and growing.
Comments
No comments yet. Start the discussion.