TL;DR (May 2026): Microsoft cancelled its internal Claude Code program effective June 30, 2026 after a six-month overrun. Uber burned its entire 2026 AI budget in four months at $500-$2,000 per engineer per month, with 95% of the engineering org active. Every CFO and VP Eng is now asking the same question: how do we cap this without killing productivity? Three patterns are surviving the cutover, hard caps with auto-throttle, department chargeback (vs showback), and pooled allotment with overage. The defensible 2026 baseline is a $500/engineer/month soft cap with a $1,000 hard ceiling, model-tier downgrade at 80%, and per-token metering plumbed into Slack alerts. The rest of this article is the operating manual.
The Microsoft and Uber stories landed within a week of each other in May 2026 and made one number famous: $500-$2,000 per engineer per month on the agent-mode-heavy end of the distribution. See the postmortem on the Microsoft and Uber pilots for the full timeline. What follows is the practical question every engineering finance partner is now staring at: given the bill is real, what is a defensible cap shape, and which tooling actually enforces it?
Why per-seat pricing breaks at agent-mode scale
Per-seat pricing assumes uniform consumption. Tab-completion is uniform. Agent mode is not, a single engineer running an autonomous loop consumes tokens at 50-100x the rate of a completion-only user, and the variance between median and top-decile is two full orders of magnitude. Cursor at $40/seat, Copilot Business at $19/seat, Copilot Enterprise at $39/seat: all priced on the assumption that 80% of engineers would never burn anywhere close to the marginal model cost included. When agent mode broke that assumption, vendors started exporting the metering problem to customers, see Copilot's June 1 cutover to AI Credits. Your team is now doing the per-token accounting whether you wanted the job or not.
Defining a defensible per-engineer cap: where the $500 number comes from
$500 is not a guess. It is the Uber median, observed empirically across a fully-deployed rollout in an org of ~4,000 engineers. The top decile pulled the mean above $1,000, the bottom quartile sat below $200. That gives you the 90/10 rule: 90% of engineers can do their job comfortably under $500/month mixing tab-completion + Chat + occasional Agent Mode. The top 10%, staff engineers running large refactors, platform/infra orchestrating automation, AI/ML doing pipeline work, legitimately consume $1,000-$2,000/month with a corresponding output multiple. Capping these users at $500 is the textbook penny-wise-pound-foolish failure.
So the cap is not one number. It is a tier with explicit promotion criteria.
Table 1: Per-engineer cap tiers
| Tier | Monthly cap | Who it fits | Models allowed | Agent mode | Max tool calls / session |
|---|---|---|---|---|---|
| Light | $300 | Frontend, application engineers, mostly tab + Chat | Sonnet 4.6, GPT-5.5, Gemini 3.1 Flash | Off by default | 5 |
| Standard | $500 | Backend, full-stack, the bulk of engineering | Sonnet 4.6, GPT-5.5, Gemini 3.1 Pro | On, with daily token cap | 15 |
| Heavy | $1,000 | Staff engineers, platform, infra, complex refactors | + Opus 4.7 for planning | On, full loops | 30 |
| Power user | $2,000 | AI/ML engineers, principal eng, agentic-workflow developers | All including Opus 4.7 full sessions | Unlimited within cap | Unlimited |
The promotion path matters: standard tier is the default, not a permanent assignment. Heavy and power-user tiers require an explicit manager request with justification (specific project, documented refactor scope). Review monthly. This is the only shape that survives finance scrutiny without infuriating the 10% who actually need the budget.
Pattern 1: Hard cap with auto-throttle
The simplest pattern, and the one Microsoft visibly failed to deploy in time. Every API call passes through a proxy (or vendor-native admin layer) that knows the user ID and the running MTD spend. At configurable thresholds the proxy modifies behavior:
- 50% of cap: Slack DM to the engineer, "you are halfway through your AI budget for the month, current burn rate projects to X% of cap." No behavior change.
- 80% of cap: Slack DM + automatic model downgrade. Requests that asked for Opus 4.7 get rewritten to Sonnet 4.6. Requests that asked for GPT-5.5 get rewritten to GPT-5.5 Mini. Agent Mode tool-call limits drop by half.
- 100% of cap (soft): Frontier models blocked. Chat works on mid-tier models. Tab completion still works. Engineer can request override from their manager, who has a one-click approve flow that bumps cap by $200 with a logged reason.
- 100% of cap (hard): All paid tokens blocked. Engineer falls back to free tier (Codestral, DeepSeek-Coder, or whatever local model you've stood up). Manager override still possible but requires director sign-off.
Here is what a real Slack alert template looks like, this is the format we ship as a default in UsageBox, but the shape is portable to any metering system:
# /opt/ai-finops/slack-alerts.yaml
alert_80_percent:
channel: dm
user_field: engineer_slack_id
template: |
Heads up: you are at 80% of your $500 AI coding cap for May.
Current spend: $402.18 across Claude Code ($310), Cursor ($87), Copilot ($5).
Projected end-of-month: $612 (over by $112).
Auto-throttle is now active:
- Opus 4.7 -> Sonnet 4.6
- GPT-5.5 -> GPT-5.5 Mini
- Agent Mode tool calls capped at 8 per session
To request a temporary bump, reply with: /ai-budget bump 200 "reason"
Your manager (@${manager_slack}) will get a one-click approve.
throttle_actions:
- downgrade_model:
from: ["claude-opus-4-7", "gpt-5.5", "gemini-3.1-pro"]
to: ["claude-sonnet-4-6", "gpt-5.5-mini", "gemini-3.1-flash"]
- reduce_agent_calls:
max_tool_calls: 8
- cache_enforcement:
require_prompt_cache_on_system_prompts: true
Who controls the cap: This is the part most teams get wrong. The cap is owned by engineering management, not finance. Finance sets the org-level budget envelope; engineering management distributes it across teams; team leads distribute it across engineers. If finance owns the per-engineer cap, every override request becomes a finance ticket, and you have just invented the world's worst expense-report system. Don't do that.
Pattern 2: Department chargeback (and the showback alternative)
Once spend exceeds $5M/yr, finance will ask whether AI coding costs should be charged back to product teams or absorbed centrally. Real decision, real tradeoffs.
Table 2: Chargeback vs Showback vs Centralized
| Model | How it works | Budget owner | When it fits | Blast radius of overrun |
|---|---|---|---|---|
| Centralized | All AI coding spend lives in one engineering cost center. No per-team attribution surfaced. | VP Engineering | Orgs under ~500 engineers; early rollouts; when usage patterns are still being discovered | One blown month sinks the entire engineering budget. Microsoft-pattern. |
| Showback | Spend is attributed to teams and surfaced in dashboards, but the bill is still paid centrally. No real budget consequence. | VP Engineering (with per-team visibility) | The "training wheels" phase, 3-6 months before chargeback. Lets teams see their burn before they have to own it. | Same as centralized, but with after-the-fact accountability. |
| Chargeback | Each product team's monthly AI spend is allocated to that team's budget; team lead is accountable for staying under. | Each engineering manager / team lead | Orgs over 500 engineers; mature rollouts; when teams have differentiated AI usage profiles | One team overruns its own budget; central budget is protected. |
Right sequence for a large org: centralized for one quarter, showback for two, chargeback after that. Jumping straight to chargeback before teams see their own burn produces a predictable failure, teams discover they're heavy users via a surprise shortfall, and the political damage outlasts the spend itself. Concrete numbers from a 1,000-engineer org running this transition: Q1 centralized at $9.2M annualized run rate; Q2 showback surfaces Platform at $1,800/eng/month vs Frontend at $290 (both teams surprised, Platform optimizes); Q3 chargeback envelopes sized to observed Q2 +20% buffer drops total spend 18% in month one, mostly from latent over-consumption nobody had visibility into.
Pattern 3: Pooled allotment with overage
Borrowed directly from how GitHub structured its June 2026 AI Credits cutover: give the org a fixed monthly pool, surface burn in real time, charge overage at marginal token rate. Cleanest model for orgs that don't want per-engineer caps but still need a hard envelope. Org buys 4,000 engineer-seats worth of pooled credits at $500 each, $2M/month pool. Any engineer draws from the pool. At 90% pool consumption an org-wide alert fires and overage kicks in at 1.2x marginal token cost. Heavy users implicitly subsidize light users for the first 90%, marginal cost above is paid directly. Does not work for orgs whose top decile is 10x heavier than the median, the long tail drains the pool before the median engineer hits 30% of notional share. If you can't predict shape, run centralized + showback first.
The metering schema you actually need
Every pattern above collapses without per-token attribution. The schema is four-dimensional: user (engineer ID, team, manager, cost center, joinable to HR), tool (Claude Code, Cursor, Copilot, Cody, custom agents, each has metering quirks), model (Opus 4.7, Sonnet 4.6, GPT-5.5, GPT-5.5 Mini, Gemini 3.1 Pro/Flash, rates vary by 10x between tiers), and token type (input, output, cached input, cached read, the cached tier is 10% of normal at Anthropic, ~25% at OpenAI; see the prompt-caching cost-optimization playbook for why this is the single biggest lever after capping itself).
A row looks like: (user=eng_412, team=platform, tool=claude_code, model=opus-4.7, token_type=cached_input, count=145002, cost_usd=0.0725, timestamp=2026-05-27T14:22:11Z). Every cap, chargeback report, and dashboard query is an aggregation over this base ledger. If the ledger isn't near-real-time, your 80% alert fires after the engineer has burned 110%.
Implementation walkthrough: proxy vs SDK vs vendor-native
Three architectures, three tradeoff profiles.
Proxy (recommended for multi-tool orgs)
Stand up an internal LLM proxy, LiteLLM, Helicone, Portkey, or a homegrown FastAPI service, and route all paid traffic through it. The proxy is the chokepoint for auth, ledger writes, and cap enforcement. Engineers point Claude Code, Cursor, and Copilot Enterprise at the proxy via custom-endpoint configs. Pros: tool-agnostic, single ledger, enforces caps vendor admin doesn't expose. Cons: uptime-grade infra you own, 20-50ms added latency, not every tool supports custom endpoints cleanly (Copilot is the worst here).
SDK / library layer (for in-house agents only)
If you're building your own AI coding tools, wrap the Anthropic/OpenAI/Google SDKs in a metering shim that logs every call. Same schema, no proxy, no latency hit. Only works for code you control, useless for Cursor, Copilot, or third-party tools.
Vendor-native (for single-tool orgs)
Each vendor exposes some admin-side enforcement. 2026 state of the art:
- Cursor Business / Cursor Ultra: $40/seat/month baseline. Admin dashboard surfaces per-user request counts; per-user dollar caps were added in March 2026. Enforces at the application layer (Cursor's own SaaS), not at the API. Decent for single-tool orgs, useless if you also run Claude Code.
- GitHub Copilot Enterprise: $39/seat/month with AI Credits effective June 1, 2026. Per-seat credit cap is the structural enforcement; admin can set overage policies (block, warn, or paid). Audit log is reasonable but lags 30-60 minutes.
- Anthropic Workspaces: introduced February 5, 2026 specifically for this problem. Each workspace has its own API keys, its own spend cap, its own usage dashboard. You can model "team = workspace" and assign engineers their own keys. Caps enforce in real time at the API layer. This is the cleanest vendor-native option for Claude Code at scale.
- OpenAI projects / API keys: per-project spend limits, per-key rate limits. Enforces at the API. Newer than Anthropic Workspaces but functionally equivalent for the cap-and-meter use case.
- Claude Code Max plans: $100/month (5x baseline) and $200/month (20x baseline). These are individual subscriptions, not enterprise contracts; they cap exposure for individual engineers without org-side metering. Useful for small teams (under 20 engineers) where building proxy infra isn't worth it.
For orgs running more than one of Claude Code + Cursor + Copilot (almost all of them in 2026), the proxy is the only pattern that gives you a unified ledger. Vendor-native enforcement is a useful second layer, not a single line of defense.
Two failure modes you will encounter
The resentful-engineer overcap
Cap a senior engineer at $500, they hit it on day 18, auto-throttle drops them to Sonnet, the refactor grinds to a halt, they escalate, the meeting is uncomfortable. Mitigation: the tier system. The $500 cap is the standard tier; heavy and power-user tiers exist for a reason. Make the promotion path explicit, frictionless (one-click manager approval, no finance gate), and criteria-documented. The pathology is caps set by policy rather than observed need.
The silent-power-user undercap
The mirror image, and more dangerous. You cap at $1,000 across the board because that felt generous; three months in you discover two AI/ML engineers hitting cap on day 12 and quietly using personal Claude Code Max accounts the rest of the month. Now you have shadow IT, data leaving the corporate boundary, no audit trail. Mitigation: surface cap-hits to managers, not just engineers. If someone hits cap two months running, that's a tier-promotion conversation, not an efficiency conversation. Build the query into the monthly engineering ops review.
Tooling: what to plug into the ledger
Your metering pipeline needs these sources wired up: Anthropic Workspaces export (per-workspace usage CSV, daily, mapped to team/cost-center); OpenAI usage API (per-project per-day token counts pulled hourly, see OpenAI billing API patterns); GitHub Copilot Enterprise audit log (per-seat credit consumption via REST API, lags 30-60 min); Cursor Business admin API (per-user requests + model breakdown, added Feb 2026); and your proxy logs (source of truth if you've gone proxy-first).
UsageBox sits on top of this stack as the cross-tool ledger and alerting layer, instead of writing five separate integrations, point your proxy at us and the unified per-engineer view, tier enforcement, and Slack/Teams alerting come out of the box. See also the Anthropic limits and usage primer for the underlying API model.
The number you should leave with
A 4,000-engineer org at $1,000/eng/month is $48M/year. The same org at $500 standard tier with 10% on a $1,500 heavy tier is $26.4M/year. Same productivity, heavy tier covers the engineers who actually need the budget, standard tier covers everyone else, auto-throttle ensures nobody silently overruns. That is $21.6M annual savings from cap discipline alone, before caching, model downgrades, or vendor renegotiation.
Microsoft's June 30 cutoff was budget control by amputation. Uber's "back to the drawing board" was the same thing in slower motion. Neither was necessary. The pattern that survives, tiered caps, auto-throttle, real-time metering, chargeback after a showback warm-up, is not glamorous and doesn't make headlines. It does, however, let you keep the productivity gains without putting your CFO in front of a board with a $48M surprise.
The UsageBox angle
We built UsageBox because every team running multiple AI coding tools is now running a metering problem they didn't sign up for. The cross-tool per-engineer ledger, tier enforcement, Slack alert plumbing, chargeback report exports, none of that exists in any single vendor's admin console because no vendor sees the others. We are the layer that does. Signup is free, ingestion is push-API or proxy-relay, dashboards work on day one. If you'd rather build the proxy pattern above in-house, do that; if you'd rather not own the infra, that is what we exist for.