How to cap an AI video agent's spend: five limits, in order
A video agent has five separate limits: model budget, turns, per-call max_spend_usd, run cap and plan queue. Which stops a runaway Sume job, and which does not.

A video agent has no single cost cap. Claude Code's --max-budget-usd caps its own estimate of model spend; Sume caps renders with max_spend_usd on each call, generation_spend_cap_usd on an Agent Completion, and the plan's queue. Set the ones that match how you run the agent.
Which limit covers what?
Each limit watches something different.
| Limit | Where | Covers |
|---|---|---|
| --max-budget-usd | Claude Code, print mode | Estimated model API spend; can pass the cap |
| --max-turns | Claude Code, print mode | Number of agent turns |
| max_spend_usd | Sume MCP, per paid call | That call's render; enforced only when sent |
| generation_spend_cap_usd | Sume Agent Completions | Generation spend of the run; required |
| Plan queue | Sume workspace | Concurrent and queued jobs; 429 queue_full |
What stops a runaway?
Not the model budget. It does not know render prices, and stopping the run leaves any job in flight running and billing. The per-call cap bounds each render. The run cap bounds a whole Agent Completion. The queue bounds how many jobs can exist at once.
A starter setup
Pick by how you run the agent:
- Local or CI session:
--max-turns,--max-budget-usdandmax_spend_usdon every paid call, withdry_runfirst. - Sume-hosted run:
generation_spend_cap_usd, set low, plus a webhook for the terminal event. - Scheduled Actions: the effective default is $1.00 per run, and a caller can only lower the schedule's cap for a single run.
What still needs a human?
Balance. balance_get reads the wallet, and a short wallet fails a submit with 402 insufficient_credits. Cancel works only before generation starts, so the cap you set at submit time is the one that matters. See Safe automation.
Sources
Related posts
More in Agents
- Agent SDK verbatim_prompts vs Sume Agent Completions input
The Claude Agent SDK verbatim_prompts option stops @path and slash expansion of user text. Sume Agent Completions keeps input as data in a file. Compare them.
- claude --fallback-model when overloaded: Sume paid calls
--fallback-model switches Claude Code to another model when the main one is overloaded. Sume's spend caps and idempotency keys are independent of the model.
- Stopped a Sume MCP call in Claude Code? The job still runs
Stopping a long Sume MCP wait in Claude Code does not stop the render. The job keeps running and billing; find the job id, then wait again, read or cancel.
- Claude Motion makes MP4s from code: when a Sume Agent run fits instead
Claude Motion (beta, 2026-10-08) animates text and charts as code. Sume Agent Completions generate footage and return media URLs. Which fits which job.
Written by Sume