---
title: Spend alerts
description: Baseline anomaly detection on every agent, plus monthly budgets with threshold alerts.
section: spend
order: 4
---

# Spend alerts

Two complementary signals. Anomaly detection watches every agent against its own history with no setup; budgets are explicit monthly lines you draw yourself.

## Spend anomalies

Once a day (06:00 UTC, after the previous day has fully closed), each agent's spend for yesterday is compared against its trailing 14-day baseline. If the day breaks the team's z-score threshold, a `spend.anomaly` event goes to every enabled [channel](/docs/alerts/channels) with the actual spend, the baseline, and how far outside it the day landed.

There is nothing to configure per agent. As soon as an agent has a baseline of spend history, it is covered. Detected anomalies also appear under **Spend, Anomalies** in the dashboard, where you can acknowledge them; each agent-day pair is detected at most once, so a spike never double-fires.

This is the alert built for the classic incident: a retry loop or a prompt regression that triples an agent's daily burn while every other graph stays green.

## Budgets

A budget is a monthly amount in USD with one or more threshold percentages. Create them under **Spend, Budgets**:

- **Scope**: the whole team, a single agent, or a single model (`provider:model`).
- **Amount**: the monthly figure the thresholds are percentages of.
- **Thresholds**: for example `50, 80, 100`. Values above 100 are allowed, so you can hear about a real overrun, not just the approach.

Budgets are evaluated hourly against month-to-date spend. The first crossing of each threshold in a calendar month fires one `spend.budget_threshold` event; the same threshold never repeats within the month, and everything resets on the 1st.

Budget alerts deliver to the **channel attached to the budget**. A budget with no channel still records crossings in the dashboard, but nobody gets notified, so attach one.

:::warning
A budget is an alert, not a kill switch. Crossing 100% never blocks ingest and never stops your agents; it tells humans, who decide.
:::

For how spend is attributed per agent, customer, and feature in the first place, see [Spend](/docs/spend).
