Channel Budgets

Give every channel its own spend ceiling, tier range, and approval posture.

A personal chat and a shared team workspace should never carry the same risk. Channel Budgets let you set a spend ceiling, a tier range, and an approval posture per channel.

Configure a budget

[channels.telegram]
max_usd_per_day = 2
tier_range      = ["R0", "R2"]
auto_approve    = ["shell:low"]
 
[channels.slack]
max_usd_per_day = 20
approve         = ["shell:high", "git:push", "web:fetch"]
 
[channels.cron]
tier_range   = ["R0", "R1"]
deny         = ["web", "fs:write_outside_workspace"]

Fields

FieldPurpose
max_usd_per_dayDaily spend ceiling for the channel
tier_rangeLowest and highest router tier allowed
auto_approveTool classes that run without a prompt
approveTool classes that always require approval
denyTool classes that are never allowed

Behavior at the limit

When a channel reaches its daily ceiling, BudgetAI stops taking new paid turns on that channel and posts a short notice. Existing sessions keep their transcripts and receipts.

Channel budgets compose with Outcome Contracts: the per-task contract still applies inside the channel's daily ceiling.

Checking status

budgetai channels status slack --json
budgetai cost --by channel