JSON Output

Machine-readable reports for dashboards and scripts.

Use --json on either public command:

agent-burn summary --json
agent-burn summary --value --json
agent-burn summary --value --cursor-plan ultra --json
agent-burn harness claude --json
agent-burn harness codex --json

Use --jq to filter JSON directly:

agent-burn summary --json --jq '.totals'
agent-burn harness claude --json --jq '.window'
agent-burn harness codex --json --jq '.spendMix'

Harness JSON includes spendMix, a trailing-30-day breakdown of input, output, cache write, and cached input token classes with token percentages and API-equivalent cost percentages. Codex harness JSON also includes resetCreditsAvailable when the live ChatGPT usage meter reports banked rate-limit resets, and limitUsageDaily: the ChatGPT Codex dashboard's last 30 days of weekly-limit consumption (date, usedPercent, plus surfaces[] with surface/usedPercent and models[] with model/speed/usedPercent). It is empty with --offline or without a signed-in Codex token.

The JSON shape is intended for dashboards and scripts. Prefer command names summary and harness.

Summary JSON also includes daily rows (date, cost, tokens). Each entry in agents includes its own models, daily, and tokenBreakdown (input, output, cacheWrite, cacheRead). Cursor agent daily rows also include cursorModelsCost and cursorModelsTokens for Composer, Auto, and other Cursor-hosted models. These details respect the selected date range and keep models attributed to the correct harness, including Cursor. Existing totals and model fields are unchanged.

The macOS app uses these details for its General and harness tabs. Add --value to include subscription plan information.

Cursor account balances

Live agent-burn summary --value --json can include cursorAccount with billingCycleStartMs, billingCycleEndMs, includedLimitUSD, includedRemainingUSD, includedPercentUsed, optional includedSpendUSD / bonusSpendUSD / planSpendUSD, onDemandSpentUSD, onDemandLimitUSD, activeRemainingUSD, activeLimitUSD, activePercentUsed, and grants (kind, total/remaining USD, expiration timestamp). Active fields follow promotional credits while those still have remaining balance, then the included allowance. Absent amounts are null, not zero. These current account balances are distinct from historical API-equivalent spend and are omitted in offline mode.

Claude account meters

Live agent-burn summary --value --json can include claudeAccount with sessionUsedPercent, sessionResetsAtMs, weeklyUsedPercent, weeklyResetsAtMs, scoped model weeks (name, usedPercent, resetsAtMs), and optional extra-usage fields (extraEnabled, extraUsedUSD, extraLimitUSD, extraUsedPercent). Session and weekly values come from Claude’s live OAuth usage meters, including the modern limits array. Extra-usage amounts are dollars. Absent amounts are null, not zero. These current account meters are distinct from historical API-equivalent spend and are omitted in offline mode.

Agent Burn first reuses the usage reading Claude Code cached in ~/.claude.json, then asks the OAuth endpoint. An expired or rejected token is renewed first, with the same lock and write-back Claude Code uses, so running claude sessions adopt the new token. Agent Burn never sends an expired token. When Anthropic refuses the renewal, the output adds claudeAccountStatus: "signInExpired" and keeps the last shared reading in claudeAccount when one is still available.