DEV Community

Catch token-cost regressions in CI before they ship

What it does

wartzar-bee/ci-guardrail is a GitHub Action that:

  • Runs @wartzar-bee/tokenscope on 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.