rabadon

overview / rules / budget-cap

budget-cap

On every tool call the session's real cumulative usage (all four token classes) is measured from the transcript, and at the ceiling the next tool is refused before it runs.

what it refuses, and what it lets through

Budget cap: the deterministic halt-before-burn. .rabadon/budget.json is the user's ceiling: {"tokens":N} and/or {"usd":X}. On every tool call the session's real cumulative usage (all four token classes) is measured from the transcript, and at the ceiling the next tool is refused before it runs. Without budget.json this is one empty read. Override: "budget-cap" in disabled[], or rabadon budget off.

From the comment in native/gate_pre.h above the code that decides it.

the halt, as the agent reads it

rabadon: budget cap <cap> reached — run halted before burn this session: <spent> (measured from the transcript, all token classes). raise it (`rabadon budget <n>`), clear it (`rabadon budget off`), or add "budget-cap" to disabled[] in .rabadon/guard.json.

Printed by judge_budget in native/gate_pre.h; <cap> and <spent> come from .rabadon/budget.json and the session transcript.

switching it off

Raise the ceiling with rabadon budget <n>, clear it with rabadon budget off, or add "budget-cap" to disabled[] in .rabadon/guard.json — the three ways the halt message itself names.

in the field

No record in the published field dataset (field.jsonl, 778 records, 2026-07-27 to 2026-08-26) carries this id.

The dataset is on the field page.