tonydzi

LLM Spend Audit — Security skill for Claude Code

Security community

Your agent setup charges rent on every session, before it does any work.

How to install LLM Spend Audit

This entry records only its repository, not the path inside it, so there is no exact command to give. Open tonydzi/llm-spend-audit and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What LLM Spend Audit does

Your agent setup charges rent on every session, before it does any work. Three stdlib-only instruments: what your wiring costs per session, who burned yesterday, and which paid subscriptions are going undrawn. 0 LLM, 0 network, MIT.

Alternatives in Security

  • Promptmap — Security scanner for custom LLM apps 1.2k ★
  • Pocketpaw — Your AI agent in 30 seconds 775 ★
  • Claude Bootstrap — Opinionated project initialization with security-first guardrails, spec-driven atomic todos, LLM testing patte 536 ★

README

llm-spend-audit

**Your agent setup charges rent. Every session, before it does any work.** Three deterministic instruments that show you how much, who is burning it, and whether the subscriptions you already pay for are going undrawn.

No LLM call. No network. No API key. No dependencies. Python 3.8+, stdlib only. It reads the transcripts your harness already wrote, which contain the real usage numbers the vendor recorded, and does arithmetic on them in [transcripts.py](transcripts.py).

Built and used daily at [Palo Alto AI Research Lab](https://github.com/tonydzi) across a fleet of machines running Claude Code.


The number that started this

Seven days of our own output tokens, broken down by kind of work:

kind of work share of output
shell commands 54.4%
writing code 15.6%
reading files 12.4%
pure mechanics 82%

82% of it mechanical, all of it on the most expensive model in the building. Meanwhile the cheap coding subscription we were already paying for sat at **4%** of its allowance, and two other paid rails had never been measured at all.

We quote the shares and not the absolute total on purpose: that split was taken with a per-record counter, before we found the double-count written up in [docs/GOTCHAS.md](docs/GOTCHAS.md), so the proportions hold but the total would be inflated. Saying so is cheaper than being caught.

Nobody decided this. The model already holding the conversation is always the path of least resistance, and no dashboard anywhere was going to say so out loud; the method is in [docs/METHOD.md](docs/METHOD.md).

Two axes, and most people only watch one

**Axis A: what you pay for the work.** Which model runs which job. Well covered elsewhere.

**Axis B: the standing rent your own wiring charges.** The rules file loaded into every session. The hook that prints eleven lines at startup. The tool descriptions. The MCP server whose forty tools are all shipped into context so three of th