Spend limits
Put budgets on model spend — per organization, project, or connection — and refuse new work when a budget is hit.
Every execution records what it cost. Spend limits turn that record into budgets: set a dollar amount on an organization, a project, or a single provider connection, and Compass either refuses new executions or flags the overage when the budget is reached. A runaway workflow stops costing you money before the next model call — not after the invoice.
Where cost comes from
Compass computes cost from each execution's token usage and the model's pricing, per step. For models without standard pricing (a local or fine-tuned model, for example), set per-token rates on the provider connection — the connection's rates are then used for everything that runs through it. Cost rolls up the same way tokens do: per step, per execution, per agent or workflow, and project-wide.
What a limit is
A spend limit is a budget with four parts:
- Scope — what it covers:
- Organization — everything, across all projects.
- Project — everything in one project.
- Connection — everything that runs through one provider connection. This is the universal circuit breaker: it covers deployed work, test runs, chat, and schedules alike, because they all reach the model through a connection.
- Amount — the budget, in dollars.
- Period — per day, per month, last 30 days (a rolling window), or lifetime (never resets).
- When exceeded — Block refuses new executions once the budget is spent; Alert only flags it, and work continues.
Creating and managing limits
Limits are managed where the thing they cover is managed:
- Organization and project limits live in the Spend limits panel of the organization and project settings.
- Connection limits live in the connection's Spend & cost step, next to its pricing.
Each limit shows a spend-versus-budget bar with the amount spent this period, and can be toggled off without deleting it. The bar turns amber as spend approaches the budget and red once it's over.
To watch all budgets in one place, open the Spend tab under Console → Observability — the Budgets section lists every limit with its current bar, alongside spend-over-time charts and your top-spending agents and workflows.
What blocking looks like
When a Block limit is spent:
- Organization and project limits refuse new executions at dispatch — the execution is never started.
- Connection limits refuse right before the model call, wherever the connection is about to be used.
Either way the refusal is explicit — a 402 error stating which limit was
reached and how much has been spent — so a blocked schedule or API call fails
loudly rather than silently skipping work.
In-flight work finishes
Spend is counted when an execution completes, and checked before the next one starts. The execution that crosses a budget runs to completion; it's the next one that gets refused. Treat limits as a backstop, not a precise meter.