How to Set AI Budget Limits
A single number — "my AI agent can spend $500/day" — is not a budget. It is a wish. A real AI agent budget is a layered set of rules that enforces itself: per-transaction caps, daily totals, velocity limits, category limits, and approval thresholds. Here is how to build one.
The 5 layers of a real AI agent budget
1 Pick a daily total
This is your overall ceiling — the max the agent can spend across all transactions in a 24-hour window. It is the budget number you already have in mind, now made enforceable.
{"rule_type": "daily_total", "params": {"max_amount": 500}, "action": "BLOCKED"}
How to pick: the right daily total is the number where, if the agent spent it all in the first hour, you would not be panicked. For a coding agent, $20–$100/day. For a procurement agent, $200–$2,000/day. Start low and raise as trust builds.
2 Set a per-transaction cap
A ceiling on any single spend. Typically 10–25% of your daily total — so a $500 daily budget means a $50–$125 per-transaction cap. This catches the catastrophic one-off (the $6,200 GPU rental) that a daily total alone would allow.
{"rule_type": "per_transaction", "params": {"max_amount": 100}, "action": "BLOCKED"}
3 Add velocity limits
A cap on the number of transactions per hour. This is what kills the retry loop — the #1 cause of runaway spend. If your agent can only make 10 transactions per hour, a retry loop dies on the 11th attempt.
{"rule_type": "velocity", "params": {"max_count": 10, "window_minutes": 60}, "action": "BLOCKED"}
4 Configure category limits
Cap spend by category — compute, ads, data enrichment, payments. This prevents one category from eating the entire daily budget. Your agent might be allowed $400/day on compute but only $50/day on advertising.
{"rule_type": "category_limit", "params": {"category": "ads", "max_amount": 50}, "action": "BLOCKED"}
5 Set an approval threshold
Transactions above a value are FLAGGED rather than blocked or approved — they route to a human-in-the-loop queue. This is the layer that makes the budget usable in production. A binary cap either blocks too much or allows too much; flagging handles the ambiguous middle.
{"rule_type": "approval_threshold", "params": {"threshold": 75}, "action": "FLAGGED"}
Example: a budget for a procurement agent
| Layer | Rule | Value |
|---|---|---|
| Daily total | daily_total | $2,000/day |
| Per-transaction | per_transaction | $500 max |
| Velocity | velocity | 20 transactions/hour |
| Category: compute | category_limit | $1,000/day |
| Category: ads | category_limit | $200/day |
| Approval threshold | approval_threshold | Flag anything > $200 |
| Merchant allowlist | merchant_allow | AWS, GCP, Stripe, approved vendors |
With this budget, the agent can spend up to $2,000/day, but no more than $500 in a single transaction, no more than 20 transactions per hour, only at approved vendors, and anything over $200 waits for a human to approve. That is a real budget.
Per-agent budgets
If you run multiple agents, each can have its own budget. A research agent might get $50/day; a procurement agent $2,000/day; a trading bot much higher. sipi.bot supports per-agent rule sets — register each agent, configure its rules, and every decision is logged with the agent ID.
Deploy it
pip install sipi-bot
python -m spendfirewall.api # self-host
Or use the hosted endpoint. Configure your rules in the dashboard or via the API, and every transaction your agent attempts is evaluated against them in under 5ms.