What your agents cost
Agent Spend Optimization. Smaller AI bills, same results.
Agent Spend Optimization is Audon’s product for cutting what AI agents and coding tools cost. It reads OpenAI, Anthropic, xAI, Cursor and Devin billing with read-only keys, finds savings such as prompt caching, batch processing, model routing and unused seats, and counts a saving only after it is measured. Formerly Agent Loss Prevention.
Find out in minutes how much of your AI bill you could cut without changing what your agents deliver, get the exact fix for each, and prove every saving before it counts.
Spend spike on project support-agent
Two days at 3.4× the 14-day median, right after a deploy.
- Classification
- To review
- Above median
- $5,559.88
- Period
- 15–16 Oct 2026 (UTC)
- Confidence
- High
- Status
- Fix ready
Cap retries at 2
max_retries: 5 → 2
Sends a GitHub issue to northwind/support-agent
Detected by scheduled audit2 days ago
Note from Priya Raman1 day ago
Retry storm after release 4.12.Fix suggested20 h ago
Cap retries at 2. Rollback: max_retries=5.Ready to apply, on a 10% canarynow
When you apply it
Your coding agent gets a GitHub issue
It opens a pull request behind a flag
How it’s measured
10% canary for 7 days
Cost per successful task, before and after
Rollback
max_retries: 2 → 5
One click sends the rollback
Six steps, from a key to a measured saving.
- 1
Connect
A read-only key per provider, encrypted. No SDK, no proxy.
- 2
Reconcile
Daily cost records; recent days stay provisional.
- 3
Detect
Versioned detectors compare each project and model with its history.
- 4
Explain
Every finding carries its evidence, baseline and confidence.
- 5
Monitor
Scheduled re-scans, with alerts by email, webhook or agent.
- 6
Measure
Live changes are measured from billing; an experiment verifies them.
Detectors in this release. Deterministic, unit-tested and versioned.
| Detector | What it finds | Writes | Needs |
|---|---|---|---|
| spend_spike1.0.0 | Days where spend on a project/workspace/model exceeds 2.5× its trailing 14-day median (minimum 7 days of history). | Anomalous spend | Cost data, 7+ days of history |
| spend_concentration1.0.0 | A single project/workspace/model accounts for at least 60% of spend in the period. | Observed spend | Cost data |
| budget_burn1.0.0 | Month-to-date spend run-rate projects above the organization’s configured monthly budget. | Observed spend | Cost data and a monthly budget |
| sustained_growth1.0.0 | Week-over-week spend growth above 20% for three consecutive complete weeks on one dimension. | Observed spend | Cost data, 4+ weeks |
| outcome_data_gap1.0.0 | Material spend with no outcome telemetry — an analysis gap, never presented as waste. | Observed spend | Cost data |
How we size a lever. On your own cost data, with every assumption stated.
Your data, not a price list
Signals come from your cost line items: token types, service tier, observed cost per token per model.
One stated assumption
The share of eligible traffic is never claimed as known. It is an explicit, editable assumption on the lever.
Facts with a source
Each lever records the provider facts it used, with the source and the date they were checked.
Sized in order, so they add up
Levers on the same spend are sized in a fixed order, each on what the earlier ones left.
Model providers10
Changes to how your code calls a provider’s API, or to a setting on the provider account.
Service tier
Pay the fast or priority surcharge only where someone waits; run work nobody waits on at flex or batch rates.
Regional processing
Drop the regional or US-only processing surcharge where no contract requires it.
Model choice
Move to a newer, cheaper version of the same model, or route simpler requests to a cheaper model.
Tests and evals
Run tests, evals and CI on a cheaper model, a smaller sample or a nightly schedule.
Context size
Stop resending growing history and stay under long-context price thresholds.
Output and reasoning
Cap outputs and set reasoning effort per task, so you pay for the answer, not the padding.
Embeddings
Embed each document once (skip unchanged content) and run bulk embedding at batch rates.
Retries and failed runs
Stop paying for runs that fail or retry without producing a result.
Prompt caching
Serve repeated prompt prefixes from cache, and stop paying for cache writes that are never read.
Storage and hosted tools
Delete stored files, vector stores and caches nobody uses, and cap paid tool calls.
See which ones apply to you. The free audit sizes every method on your last 30 days and shows only the ones that apply, each with its fix.
Coding tools and seats, contracts and commitments6
Plans, seats and defaults an admin changes in a tool’s dashboard. Contracts and commitments are sized on the numbers you enter under Settings → Contracts.
Coding tools and seats
Right plan per person
Give each person the cheapest plan that covers how they work: remove, downgrade, upgrade or move to a seat.
Coding tools and seats
Coding model mix
Default coding agents to a cheaper model or the tool’s own model pool; keep the premium model for hard tasks.
Coding tools and seats
Cursor Max mode
Keep Max mode for large, multi-file work; normal mode costs less per token for the rest.
Coding tools and seats
Overlapping tools
People paying for two tools that do the same job: keep the one they use.
Contracts and commitments
Cloud commitments and credits
Pay for the same models through AWS, Google Cloud or Azure where a commitment or credits would otherwise go unused.
Contracts and commitments
Reserved capacity
Size provisioned throughput to what you use, or move low-use capacity back to pay-as-you-go.
From finding to fix. Apply it in one click.
The fix, on every finding
Steps, code and rollback for your provider and model.
Apply fix
One click sends it to your coding agent as a GitHub issue or a webhook.
Followed to live
The pull request and the merge show up on the finding. Then the saving is measured.
The fix · Anthropic · claude-sonnet-5-5
Cache the static prompt prefix
- 1.Move instructions, tools and examples to the front
- 2.Mark them as cacheable
- 3.Ship behind a flag and watch the cached share
system: [{
type: 'text', text: STATIC_INSTRUCTIONS,
cache_control: { type: 'ephemeral' },
}],Sends a GitHub issue to northwind/support-agent
- Issue #214 opened
- Pull request #215 open
- Live on merge
Daily spend above $3,000
daily_spend > $3,000.00
Monthly budget 80% reached
budget_burn ≥ 80%
Provider sync stale for 12 h
sync_staleness > 12 h
Cost per success above $0.13
cost_per_success > $0.13
Monitoring and governance by default. Hard limits stay with your provider.
- Monitoring
- Daily re-scans and alerts by email or webhook.
- Governance
- Rollback plans, a second approver, an audit trail.
- Hard caps
- Your provider’s limits, set where Audon suggests.
- Cost per team
- Spend per team, with a monthly budget for each.
- Renewals and prices
- Renewal reminders and announced price changes.
- New keys
- New or unnamed API keys wait for review.
{
"events": [{
"run_id": "run_8f2c",
"workflow_id": "support-triage",
"started_at": "2026-10-21T09:14:02Z",
"result_status": "succeeded",
"result_verification": "system_verified",
"estimated_provider_cost_minor": 42,
"currency": "USD"
}]
}Cost per successful task. The number billing data can’t give you.
Methodology and the words we use.
Observed spend
Invoice-aligned, provider-reported cost for the selected UTC days. Sourced from the OpenAI organization Costs API and the Anthropic Cost Report API. Recent days are provisional and are re-reconciled on every sync.
Anomalous spend
Observed spend with features that indicate a possible problem (e.g. a day more than 2.5× its trailing 14-day median). It is not a saving: it may be legitimate demand.
Potential saving
A modelled reduction if a proposed change works, under stated assumptions.
Validated opportunity
A scoped, feasible change with supporting evidence and a computable expected benefit, confirmed by a person.
Verified saving
A measured reduction in cost per verified successful task in the latest recorded experiment on production traffic, approved and verified by people other than those who proposed it and recorded the results, with no success-rate drop greater than 2 percentage points, no p95 latency increase greater than 20%, and at least 30 verified successes per window:
measured saving = (cost per success before − cost per success after) × successful tasks after
Cost per verified successful task
Cost per verified successful task = Σ attributable run costs ÷ count of verified successful runs. When the denominator is zero, or cost is missing, the value is unavailable — never 0.
Cash impact
Lower usage reduces future usage-based invoices. Under prepaid commitments it frees capacity rather than reducing near-term cash.
Monitoring vs blocking
Alerts evaluate complete UTC days of provider billing data, which can lag by hours. They are monitoring, not real-time spend blocking.
Money
Amounts are stored as exact integer micros (10⁻⁶ of the billed currency). Currencies are never summed together.
Integrations. Each with what we read and what we never read.
- What we read
OpenAI
Costs and usage by project, model and line item, read with an organization Admin key.
- What we read
Anthropic (Claude API)
Cost and usage reports by workspace and model, plus Claude Code per person, with one Admin key.
- What we read
Claude EnterpriseNew
Per-person activity, idle seats, and daily cost and tokens by product and model.
- What we read
Claude CodeNew
Tokens and cost per person and model, from the Admin report or Claude Code’s own telemetry.
- What we read
CodexNew
Tokens per day and model from Codex’s own OpenTelemetry export, with no key stored.
- What we read
xAINew
Daily team spend by model and endpoint, read with a team-scoped management key.
- What we read
CursorNew
Members, usage per person and model and on-demand spend, or the usage export on individual plans.
- What we read
DevinNew
Daily ACUs by product and per person, priced with your own price per ACU.
Questions teams ask before connecting.
What is Agent Spend Optimization?
Is this the same as Agent Loss Prevention?
Which providers and tools does it read?
Does it change our code, keys or AI traffic?
When does a potential saving count as saved?
What does it cost?
Last updated