Blackbox Blast
BB Preflight
← Incident log

CASE · Minor · financial-loss

VerifiedFirsthand record

A batch job meant to run "inside the flat-rate plan" auto-reloaded credits ten times

Over a few days of running a batch job over 1,500+ ledger rows with Claude Code, plus research with up to four subagents in parallel, Claude Pro's usage credits were auto-reloaded ten times, adding about $115 in extra charges, more than five times the monthly plan price. The user noticed only when reading the card statement.

5 min read

OBSERVED
CATEGORY
financial-loss
BLAST RADIUS
financial
DETECTED BY
billing-statement
TAGS
#claude-code #extra-usage #auto-reload #subagents #claude-p #budget-guard

CH 1

Cause

The Pro account had usage credits (keep using Claude after hitting plan limits) and auto-reload turned on. The batch scripts carried a comment saying they used "the Claude Code plan allowance, not the API budget," and the agent itself assumed the work stayed within the flat rate. The home-made budget guard counted only API calls, not subscription overage. On top of that, Claude usage credits and API credits are managed on two separate pages (claude.ai and the Anthropic Console); both auto-reload in roughly $11 steps and show up on the card statement under the same company name. Finding the cause required cross-checking both pages, and that was not obvious.

CH 2

Consequence

About $115 in extra charges across ten reloads in one month. The API side was a single charge of about $11, matching the budget guard's own log. The $50 monthly spend limit did stop the work, but each time it did, the user raised it to keep going and later set it back to $50, which is why the page read "$138.33 of $50 used."

CH 3

Fix

Batch jobs and parallel subagents now need a cost estimate from the item count and a human approval before they run. Subagents run one at a time, and mechanical work goes to a smaller model. The budget guard will also count subscription overage and auto-reload charges. Whether to switch usage credits off is still the user's call.

LOGTimeline

  1. OCCURRED

    Date of record (date_observed)

  2. DETECTED

    2 days after it occurred · Detected by: billing-statement

Built only from the dates on record (date_observed, date_detected, date_resolved).

What happened

The work was a system that collects and scores small-business ideas. The AI coding agent (Claude Code) ran a batch job that rewrote, clustered and gated about 1,500 collected complaints, calling claude -p dozens of times. On the same day it also had up to four research subagents running in parallel.

The parts that ran on the API had a home-made budget guard: stop at 90% of the cap, warn at 70%. By that log, the month's API spend was about $9, well inside the cap.

A few days later the user read the card statement. Eleven charges from the same company were lined up, eight of them on a single day.

The chaos on the ground

At first nobody could tell where the charges came from. They were an order of magnitude off from the guard's log. The agent searched the mailbox for receipts but got only a count, and its attempt to read the login settings was blocked by the permission system. In the end the user had to open two pages (Claude's usage and billing, and the API Console's billing) before the numbers could be matched.

The eleven card charges split cleanly into ten usage-credit charges and one API charge. The API was on budget. Everything over budget was Claude Code used beyond the flat-rate plan's limits, which accounted for 97% of that week's usage.

Root cause

The batch scripts said they used "the Claude Code plan allowance, not the API budget." The agent that wrote them assumed the work would stay inside the flat rate, and that hitting the limit would simply pause it.

In fact the Pro account had usage credits and auto-reload on. Past the limit, credits are consumed, and every time the balance drops below $5 it is topped back up to $15. Parallel subagents and the batch job triggered that top-up several times a day. Under this setting, "use the plan allowance" meant "pay per use once the allowance runs out."

The guard had a hole too. It counted only API calls, so subscription overage was not counted anywhere.

The $50 monthly spend limit was in fact working. On November 4, 6 and 7 the work stopped with a single line: "You've hit your monthly spend limit · raise it at …". Eager to finish, the user raised the limit each time to keep going, then set it back to $50 later. The "$138.33 of $50 used" on the page is the trace of that, not a bug in the limit. Choosing "raise and continue" at the moment of the stop blows the budget on the spot; the limit should have been the place to pause before raising it.

Telling the two apart was part of the problem. There are two ways money leaves, and each has its own page:

  • claude.ai (the flat-rate Pro plan, plus usage credits past its limits): auto-reload tops up to $15 when the balance drops below $5.
  • Anthropic Console (API credits): auto-reload also tops up to $15 when the balance drops below $5.

Both charge about $11 per reload, and both appear on the card statement under the same company name with similar amounts, so the statement alone cannot tell them apart. Worse, the Console billing page says credits are used for "API, Claude Code, and Playground." That Claude Code means Claude Code run on an API key; overage from Claude Code on a subscription plan never shows up in the Console. Reading the Console alone, it is easy to conclude the Claude Code spend is already there and look in the wrong place. The breakdown was settled only after opening the billing pages on both claude.ai and the Console and matching them, charge by charge, against the card statement.

The fix

  • Batch jobs and parallel subagents get a cost estimate from the item count and a human approval before they run.
  • Subagents run one at a time; mechanical work goes to a smaller model.
  • The budget guard will also count subscription overage and auto-reload charges, not just API calls.
  • The monthly check opens the billing pages on both claude.ai and the Console and matches the charge count against the card statement.
  • When the monthly spend limit stops the work, the agent estimates the cost of continuing before anyone raises it, and a human decides whether it is worth doing now.
  • The batch guard stops on the one-line limit messages (session limit, weekly limit, monthly spend limit, and so on) and does not rely on exit codes.
  • Whether to switch usage credits off, or keep them with a lower limit, is still the user's decision.

Sources

  • Firsthand account from the site operator. There is no public write-up to link to.
PREFLIGHTIs your own Mac prepared?BB Preflight is a free Mac tool that checks 21 things, from AI agent permissions to where your keys live, without changing anything.Run the check →