The bill is not a brake  / field guide
Practitioner field guide · 2026-09-14

The bill is not a brake

Cloud platforms convert demand into capacity in milliseconds and into an invoice in days. This guide reconstructs, from six published billing incidents and the platform mechanisms built in response, how production systems actually bound their own spend; and why every brake that works runs on estimated cost in the request path, never on the bill.

34 primary sources 26 source hosts 6 incidents dissected Evidence through September 2026 Read: 36 min
01

The territory

A control problem with the feedback wire cut: the actuator responds in milliseconds, the sensor reports tomorrow.

$72k
Spent overnight by a project carrying a $7 budget (Milkie Way, 2020)
3×/day
How often AWS Budgets re-evaluates spend, 8 to 12 hours apart (AWS docs, 2026)
60.7 TB
Bandwidth served in one day by a free-tier static site nobody was watching (Netlify, 2024)
16
Recursive invocations before Lambda breaks the loop, on by default since 2023

State the problem without naming a cloud. A system that converts incoming demand into capacity automatically has no intrinsic mechanism that converts money already spent back into a constraint. Autoscaling closes the loop between load and resources in seconds. Nothing closes the loop between resources and budget, because the only native signal on that path, billing data, is produced by a batch pipeline that runs hours to days behind the meter. AWS documents that Cost Explorer "refreshes your cost data at least once every 24 hours" and that Budgets updates three times a day, eight to twelve hours apart (docs, checked 2026). Firebase's billing documentation says plainly that "budgets and budget alerts do not cap your usage or charges" and that the alert itself can lag the cost "up to a few days" (Firebase docs, 2026). Corey Quinn, whose consultancy lives inside AWS bills, reports discarding billing data newer than two or three days as untrustworthy (Duckbill Group).

Meanwhile the spend side moves at request speed. Milkie Way's test deployment reached roughly one billion Firestore reads per minute within hours (postmortem, 2020). The gap between those two clocks, milliseconds of actuation against days of sensing, is the whole subject of this page. Every incident below is that gap monetised, and every mechanism below is an attempt to close it from one side or the other.

Who has faced this in production and written it down: startups that scaled into a bill (Milkie Way 2020, Cara 2024), individual operators billed by strangers or by their own configuration (an empty S3 bucket in 2024, Troy Hunt's uncached archive in 2022, a Netlify free-tier site in 2024), the platforms that then changed their billing semantics or shipped brakes (AWS 2023 to 2024, Vercel 2023, Netlify 2024 to 2025, Google Cloud 2026), platforms that shipped hard caps from the start (Supabase), and the LLM-gateway ecosystem now rebuilding admission-time budget enforcement from scratch (LiteLLM). Security research named the adversarial version of the problem "denial of wallet" in 2021 (Kelly, Glavin and Barrett).

Figure 1 · Two feedback loops, four orders of magnitude apart

scales in
milliseconds

batched records

email or webhook,
hours to days late

manual stop

estimated cost,
minutes

enforces

Demand
users, bots, loops

Admission controls
quotas, rate limits,
concurrency caps

Capacity
autoscaled compute,
storage, egress

Usage meter

Rating and billing pipeline
8 hours to days behind

Budgets, alerts,
anomaly detection

Human operator

Spend brake
pause or cap

scales in
milliseconds

batched records

email or webhook,
hours to days late

manual stop

estimated cost,
minutes

enforces

Demand
users, bots, loops

Admission controls
quotas, rate limits,
concurrency caps

Capacity
autoscaled compute,
storage, egress

Usage meter

Rating and billing pipeline
8 hours to days behind

Budgets, alerts,
anomaly detection

Human operator

Spend brake
pause or cap

The demand-to-capacity loop closes in milliseconds; the spend-to-constraint loop closes in hours to days, through a batch billing pipeline. The only fast path back is a brake fed by estimated cost, which is where every working mechanism in this guide sits. Reconstructed from AWS billing docs, Google Cloud spend cap docs and the incident accounts in section 4.
Diagram source
The finding that surprised us

The hard spending cap, the single most requested billing feature across every major cloud's forums, is not something the industry never built. Google built it (App Engine's daily spending limit), removed it between 2019 and 2023 because its coverage could not keep up with the platform, and shipped it again in July 2026 in a deliberately narrower form: enforced on estimated costs, for an eligible-services list, with persistent resources exempt. The reintroduction concedes the thesis of this page in the vendor's own design: a cap wired to actual billing data cannot work, because the bill is structurally late. Details and sources in section 3.

Scope. This guide covers runaway spend: cost that accumulates faster than the organisation can observe it. It deliberately does not cover steady-state cost optimisation, rightsizing, commitment purchasing or cloud repatriation (the 2026-08-30 guide on owning hardware covers that ground), and it does not cover FinOps organisational practice beyond where it touches enforcement.

02

How spend is actually bounded

Reconstructed across AWS, Google Cloud, Vercel, Netlify, Supabase and the LLM-gateway ecosystem: four planes, distinguished by how long they take to act.

No published system bounds spend with one mechanism. Across every account in the evidence wall, the same four planes recur, and the honest way to draw them is by time to act, because that is what decided each incident's blast radius.

The admission plane acts in milliseconds and knows nothing about money. It is quotas, rate limits, concurrency caps and loop breakers, enforced in the request path. Lambda's recursive loop detection is the clearest specimen: since July 2023 the platform stops a function invoked by the same triggering event more than 16 times, on by default (AWS). The mechanism is not in the billing system at all; it is an SDK middleware that stamps the X-Ray trace header onto outbound requests so the platform can count hops, visible in aws-sdk-go-v2's recursion_detection.go. Google Cloud's equivalent advice for App Engine after removing spending limits was max_instances (docs), which is also the parameter whose default of 1,000 amplified Milkie Way's test into $72k (postmortem, 2020). The admission plane is the only plane fast enough to stop the worst incidents in this corpus. It is also the least used, because its knobs are per-service, unglamorous, and default to permissive.

The estimation plane acts in minutes. It multiplies the real-time usage meter by the price list to approximate spend before the billing pipeline confirms it, and wires the result to an actuator. Vercel's Spend Management (October 2023) pauses projects when a spend amount is reached and exposes webhooks so teams can wire their own actions (Vercel); a later change made pausing production deployments the default behaviour (changelog). Google Cloud's spend cap budgets, shipped in preview July 2026, are explicit about the design: caps trigger on estimated costs precisely because estimates arrive "much faster than the actual costs are processed and appear on billing reports" (docs). LiteLLM, an LLM gateway, goes one step further into the request path: it reserves the estimated cost of a call against the budget and rejects the request before it reaches the provider if headroom is insufficient, with an optional fail-closed mode that returns 503 when spend cannot be verified (LiteLLM docs).

The billing plane acts in hours to days and cannot be made faster from outside. Metering records are batched, rated, aggregated and only then compared against budgets. Everything built directly on it inherits its latency: AWS's own Innovation Sandbox solution, which leases sandbox accounts against a budget, carries an open issue documenting a "24-hour+ detection blind spot" because its enforcement reads Cost Explorer, with an estimated "$800+ per-incident exposure" during the window (issue #92). The billing plane is where the money is authoritative and where control is impossible. Its proper role is reconciliation and anomaly detection over days, and the industry's current work there is standardising the data itself: the FinOps Foundation's FOCUS specification for billing data, and OpenCost computing cost in real time from the Kubernetes control plane's own resource accounting rather than waiting for the invoice.

The social plane acts in days to weeks, and it is load-bearing whether or not anyone admits it. Netlify's CEO described the operating control in 2024 as policy, not software: "it's currently our policy not to shut down free sites during traffic spikes that don't match attack patterns but instead forgive any bills from legitimate mistakes after the fact" (HN comment). AWS refunded the S3 empty-bucket bill "as an exception" (Pocwierz, 2024). Google refunded Milkie Way in full (2020). Refund-on-outcry works for the customer who goes viral; it is not a control an architect can design against, which is why every one of these platforms later moved enforcement into the planes above.

Figure 2 · The reference architecture, drawn by time to act

Estimation plane, minutes, approximate money

pause signal

reject request

Social plane, days to weeks

Support tickets,
refunds, forgiveness policy

Billing plane, hours to days, authoritative money

Metering, rating,
aggregation

Budgets, alerts
(3x daily on AWS)

Anomaly
detection

Admission plane, milliseconds, no money knowledge

Service quotas, API caps,
rate limits, WAF rules

Concurrency and max-instance caps,
loop breakers (trace-header hop counts)

Real-time usage
meter times price

Estimated-cost cap
(GCP, Vercel)

Per-request reservation
(LiteLLM)

Estimation plane, minutes, approximate money

pause signal

reject request

Social plane, days to weeks

Support tickets,
refunds, forgiveness policy

Billing plane, hours to days, authoritative money

Metering, rating,
aggregation

Budgets, alerts
(3x daily on AWS)

Anomaly
detection

Admission plane, milliseconds, no money knowledge

Service quotas, API caps,
rate limits, WAF rules

Concurrency and max-instance caps,
loop breakers (trace-header hop counts)

Real-time usage
meter times price

Estimated-cost cap
(GCP, Vercel)

Per-request reservation
(LiteLLM)

Each plane down adds latency and authority: the request path can act instantly on estimates; the invoice is exact and useless for control. Sources per component: AWS Lambda, Google Cloud spend caps, Vercel, LiteLLM, Innovation Sandbox issue #92, Netlify CEO on HN.
Diagram source

Loop breaker

Counts causal hops in the request path via a propagated trace header and stops the chain at a threshold (16 on Lambda). Runs before any money is counted. Shipped default-on, which briefly broke teams who used recursion deliberately.

Runs this way at: AWS Lambda, mechanism in aws-sdk-go-v2

Estimated-cost cap with a pause actuator

Real-time usage times price, compared to a target, wired to "pause new work". Google Cloud enforces at 100% of target with alerts at 50% and 80%; paused services stay paused until a human lifts the cap. Persistent resources keep accruing.

Runs this way at: Google Cloud (preview, 2026), Vercel, Supabase (default on)

Kill switch on the billing account

A budget notification triggers a function that unlinks billing from the project, terminating every service in it. The community productised it with Terraform; its README warns the stop is not graceful, may delete resources irretrievably, and still trails spend because the trigger rides the billing pipeline.

Runs this way at: Cyclenerd's kill switch, per Google Cloud's own documented pattern

03

The decisions that matter

Five forks, each with the condition that flips it. The central one is twenty years old and was answered three different ways by the same company.

Where does spend enforcement live: the billing plane or the request path?

Chosen
  • Request path, on estimated cost. Google Cloud's 2026 spend caps enforce on estimates because actuals are too late; LiteLLM reserves estimated cost per request; Vercel pauses on real-time usage.
Rejected
  • Billing-plane enforcement. AWS's own Innovation Sandbox tried it and documented a 24-hour blind spot; the Cyclenerd kill switch README tells users to set the budget below their real limit "to account for billing delays".
Flips when
  • The spend rate is slow relative to a day: idle-resource drift, storage growth, licence creep. There the billing plane is accurate, cheap and fast enough, and request-path machinery is overhead.

When the brake trips, what does it do: pause new work or kill everything?

Chosen
  • Pause new work, keep state. GCP spend caps pause eligible API services and leave persistent resources running; Vercel pauses the project; Supabase disallows further over-quota usage until the next cycle.
Rejected
  • Disabling billing on the project. Google documents it as terminating every service, with no graceful recovery and no guarantee of restoration; the community tool repeats the warning in bold.
Flips when
  • The environment is a sandbox whose entire value is bounded loss. Students, hackathons and lease-based sandbox accounts accept "everything dies at the cap" because nothing in them is production state.

Is the cap on by default?

Chosen
  • Depends on who the platform serves. Supabase ships the Pro plan with the spend cap enabled; Netlify's post-2024 free plan suspends rather than bills; Vercel flipped pause-production to default after shipping it opt-in.
Rejected
  • Cap-off-by-default for hobby tiers. Netlify's 2024 position, forgiving bills after the fact, collapsed under one viral $104,500 invoice and a 50-reply feature thread demanding a kill switch.
Flips when
  • The workload is revenue-serving production. An enforced cap converts a spend spike into a self-inflicted outage; bex.co's 2026 analysis of Vercel names the trade exactly: bill shock traded for outage risk.

Who pays for traffic the customer rejected?

Chosen
  • The platform stops metering it. S3 stopped charging for unauthorized 403 requests from outside the account (May 2024, global, no customer action); CloudFront stopped charging for WAF-blocked requests (November 2024).
Rejected
  • Customer pays for all requests reaching their resource. The pre-2024 S3 semantics meant anyone who knew a bucket name could bill its owner; it took a viral postmortem to change a policy AWS support had defended on forums for years.
Flips when
  • Rejection itself consumes real resources the platform cannot amortise, which is why WAF evaluation is still billed even when the request is blocked. The principle is narrower than it looks: unmetered rejection, metered inspection.

Does the budget alert page a human or trip an actuator?

Chosen
  • Actuator first, human second, for anything that can spike. Vercel's webhooks, GCP's Pub/Sub budget notifications feeding a disable function, and Netlify's account-wide pause all wire the alert to an action.
Rejected
  • Email to a human as the only consumer. Troy Hunt had alerting available and unconfigured; Cara's founder missed Vercel's warning emails during the growth spike. Under exactly the conditions that cause runaway spend, humans are saturated.
Flips when
  • The false-trip cost exceeds the overrun cost. The July 2026 AWS incident fired customers' budget alarms off corrupted estimates; an actuator wired to those alarms would have paused healthy production. Alert-to-human is the right design where estimates are untrusted.

Figure 3 · Choosing your brake

no

yes

no

yes

yes

no

Can spend spike faster than
your billing data refreshes?

Billing-plane budgets,
anomaly detection,
weekly review

Is the workload
revenue-serving production?

Hard cap on by default:
pause or suspend at target,
sandbox posture

Can the platform pause
new work without
destroying state?

Estimated-cost cap
plus quotas set to
measured peak

Quotas and concurrency caps
as the only hard bound;
alerts page a human

no

yes

no

yes

yes

no

Can spend spike faster than
your billing data refreshes?

Billing-plane budgets,
anomaly detection,
weekly review

Is the workload
revenue-serving production?

Hard cap on by default:
pause or suspend at target,
sandbox posture

Can the platform pause
new work without
destroying state?

Estimated-cost cap
plus quotas set to
measured peak

Quotas and concurrency caps
as the only hard bound;
alerts page a human

The first question is about relative speed, not size: spend that can outrun your billing data needs request-path controls, whatever the absolute numbers. Derived from the decisions above and the incident evidence in section 4.
Diagram source
DecisionChosenRejectedBecauseEvidence
Enforcement planeRequest path, on estimatesBilling planeBilling data is 8h to days late; caps on actuals cannot stop fast spendGCP docs, 2026; ISB issue #92
Trip behaviourPause new usage, keep stateDisable billing (kill all)Billing disable is documented as non-graceful and possibly unrecoverableGCP docs; Cyclenerd README
Cap defaultOn for bounded-budget tiersForgive-after-the-factRefund-on-outcry does not scale and selects for viralityNetlify CEO, 2024; feature thread
Rejected-traffic billingPlatform absorbs itCustomer pays for 403sUnauthorized requests are outside the customer's control entirelyAWS, 2024-05; AWS, 2024-11
Alert consumerActuator, then humanEmail onlyRunaway conditions saturate the humans the email is addressed toHunt, 2022; TechCrunch, 2024
Budget data modelStandard schema (FOCUS), control-plane cost feeds (OpenCost)Per-vendor bill parsingCross-vendor enforcement and allocation need one vocabularyFOCUS spec; OpenCost spec
The two-decade decision record

Google is the only vendor to have answered the central question three ways. App Engine shipped a daily spending limit; Google closed it to new apps in December 2019, deprecated it in July 2020 and shut it down in July 2023, with the stated reason that "while App Engine has evolved, the spending limit functionality has not", it no longer covered Flex or Cloud Build (official response in the removal thread). Three years of community kill-switch scripts later, spend cap budgets shipped in July 2026, narrower and estimate-based (launch post). The removal reason and the reintroduction design are the same lesson from both sides: a cap is only honest for the services whose usage it can actually see and stop.

Figure 5 · The brake, removed and rebuilt: 2019 to 2026

2019-20Spending limits closedto new apps,deprecatedMilkie Way spends72k USD against a 7USD budget2022-23Troy Hunt billed~11.4k AUD for anuncached archiveSpending limits shutdownLambda shipsdefault-on loopdetectionVercel ships SpendManagement2024 H1Netlify free-tier sitebilled 104.5k USDEmpty S3 bucketbilled for strangers'403sS3 stops charging forunauthorized errorsCara's 96k USD week2024 H2CloudFront stopscharging forWAF-blockedrequestsNetlify free plansuspends instead ofbilling2025-26Netlify layers ratelimits andaccount-wide pauseAWS estimatepipeline breaks,alarms disabledplatform-wideGoogle ships spendcaps enforced onestimates
2019-20Spending limits closedto new apps,deprecatedMilkie Way spends72k USD against a 7USD budget2022-23Troy Hunt billed~11.4k AUD for anuncached archiveSpending limits shutdownLambda shipsdefault-on loopdetectionVercel ships SpendManagement2024 H1Netlify free-tier sitebilled 104.5k USDEmpty S3 bucketbilled for strangers'403sS3 stops charging forunauthorized errorsCara's 96k USD week2024 H2CloudFront stopscharging forWAF-blockedrequestsNetlify free plansuspends instead ofbilling2025-26Netlify layers ratelimits andaccount-wide pauseAWS estimatepipeline breaks,alarms disabledplatform-wideGoogle ships spendcaps enforced onestimates
Seven years in which the incidents and the platform mechanisms alternate; every mechanism on this line shipped after, not before, a public incident of the class it addresses. Dates per the references in sections 3 and 4.
Diagram source
04

What broke in production

Three failure classes cover every published incident found: the loop you built, the meter others can run, and the signal that failed. No class is closed by the fixes shipped so far.

Class 1 · Self-amplification: the system spends on its own behalf

Postmortem

A $7 budget and a $72,000 night

AssumptionA billing budget bounds what a test project can spend; a free-tier database plan stays free.
What happenedA Cloud Run test deployment kept running after its request appeared to die. Instances scaled to the default max of 1,000 at concurrency 80 and hammered Firestore at roughly 1 billion reads per minute at peak: 116 billion reads and 33 million writes in about 24 hours, 16,022 instance-hours.
Blast radius$72,000 invoiced overnight against a $7 budget, March 2020. Billing data synced about a day late; the Firebase dashboard lagged more than 24 hours.
FixGoogle refunded in full. The postmortem's own remediations are admission-plane: set max instances, set concurrency deliberately, separate billing accounts per environment.
Design ruleThe default scaling ceiling is the real budget. Whatever number is in max_instances times unit price times a day is what a bug can spend before anyone is told.
Postmortem

The recursion class, closed by the platform

AssumptionA function writing to the queue or bucket that triggers it is an application bug, so the application will catch it.
What happenedRecursive invocation loops (function writes to its own trigger) recurred often enough across customers that AWS built detection into the platform: the SDK stamps a trace header, Lambda counts hops on the same triggering event.
Blast radiusIndividual incidents mostly unpublished; the platform response is the evidence of frequency. Stopped at 16 hops since July 2023, extended to Lambda-and-S3 loops in October 2024.
FixDefault-on loop breaking with an opt-out, per-function configuration from August 2024, plus a Health Dashboard notification on trip.
Design ruleAny event topology where a consumer can write to its own trigger needs a hop counter in the message, not a code review promise. If the platform provides one, leave it on.

Class 2 · Unmetered exposure: other people, or old configuration, run your meter

Postmortem

An empty bucket, billed by strangers

AssumptionAn empty private bucket costs nothing; only my own requests are my problem.
What happenedA new bucket happened to share its name with a default in a popular open-source tool. Nearly 100 million unauthorized PUT requests arrived in a day; S3 billed the 403 rejections to the bucket owner, about $1,300 in two days (April 2024).
Blast radiusAnyone who knew any bucket's name could bill its owner, at scale, from anywhere. AWS refunded as an exception.
FixA billing-semantics change: from May 2024, unauthorized 403s from outside the account are free, globally, no customer action needed. CloudFront followed in November 2024 for WAF-blocked requests.
Design ruleEnumerate every path where a party you do not control can create metered usage on your account. What remains after the 2024 changes: public endpoints, egress, and anything behind them.
Postmortem

$104,500 for a static site on the free tier

AssumptionA free-tier site's downside is being taken down, not a six-figure invoice.
What happenedA four-year-old side project normally under 10 GB/month served a sustained download event peaking at 60.7 TB in one day (February 2024). Overage priced at $55 per 100 GB compounded to $104,500 over four days with no automated stop.
Blast radiusOne user, four days, $104,500 billed; reduced to $5,225 by support, then waived entirely after the story trended.
FixLayered, over 18 months: a guaranteed free plan that suspends instead of billing (November 2024), usage notifications at 50/75/100% with account-wide pause (September 2025), function rate limiting and firewall rules (October 2025).
Design rulePrice times worst-case throughput times detection delay is your real exposure on any usage-billed tier. If that number is unpayable, the tier is wrong regardless of the expected bill.
Postmortem

Success priced like an attack: Cara's $96,280 week

AssumptionGrowth is the good outcome; the platform's job is to absorb it.
What happenedAn artist platform grew from 40,000 to 650,000 users in a week (June 2024) as users left Meta. Serverless function usage hit 56 million invocations per day; the weekly bill reached $96,280. The founder reported the warning emails were missed exactly because the team was drowning in the growth the emails warned about.
Blast radiusA bootstrapped company's runway, publicly. The founder spent the following weeks negotiating and optimising rather than building.
FixCode optimisation and negotiation with the vendor; Vercel's spend controls (project pausing, later default pause of production) existed and now default tighter.
Design ruleFrom the meter's side, virality and denial-of-wallet are the same signal. A spend policy that only contemplates attacks will be operated for the first time on your best week.
Postmortem

The cache limit nobody re-read: Troy Hunt's egress bill

AssumptionThe CDN in front of the storage account caches the big files, so egress is bounded.
What happenedA password-corpus archive grew past Cloudflare's 15 GB single-file cache ceiling in December 2021, so every download went to origin. Azure egress billed quietly for weeks; total communication cost about AUD 11,448.
Blast radiusOne month's bill, noticed only when the invoice arrived in January 2022. Alerting existed on the platform and was not configured.
FixRaise the cache limit so the file is served from the CDN again; configure the spend alerts that had been available all along.
Design ruleA cost architecture that depends on a cache is a cost architecture that depends on the cache's limits. Re-derive the worst-case origin bill whenever an artifact grows, and treat "cache hit ratio" as a billing metric.

Class 3 · Signal failure: the layer that watches spend breaks

Case study

Trillion-dollar estimates, alarms off platform-wide

AssumptionBudget alarms and anomaly detection are a safety net independent of the thing they watch.
What happenedOn 2026-07-16 a configuration change in AWS's bill computation introduced a unit pricing error into the estimated billing pipeline. Dashboards showed estimates in the billions and trillions (one reported $7.1T month-to-date) for over 24 hours. The corrupted estimates fired customers' budget notifications; AWS's own alarms detected anomalies but did not halt bill generation, and customer escalations reached the company about 4.5 hours in.
Blast radiusThousands of accounts saw false numbers; finance and security teams investigated phantom compromises; during mitigation AWS disabled budget and cost anomaly alerts platform-wide, turning off the recommended safety net for everyone. Actual invoices were unaffected.
FixRollback failed first; AWS then paused estimated-bill generation and rebuilt the data. Reported remediations centre on validation in the estimate pipeline.
Design ruleThe estimate feed is an input to automation and must be treated like one: bound it with sanity checks (an account that spends $5/month is not spending $1.7B), and decide in advance what your actuators do when the feed itself is implausible.
SourceInfoQ, 2026 (press reconstruction from AWS statements and customer reports)
Source

The budget that did not block: LiteLLM's enforcement gap

AssumptionSetting max_budget on a gateway key means requests stop when the budget is exhausted.
What happenedA community PR ("litellm fails to block requests over end-user budget (allows unlimited spending)") documented that end-user budgets were recorded but not enforced; the fix attempt was closed unmerged, and a follow-up issue tracked the gap persisting on the user-header path.
Blast radiusEvery deployment relying on end-user budgets as a hard bound; magnitude unpublished. The failure is silent by nature: spending continues normally.
FixThe current architecture reserves estimated cost per request before the provider call and offers fail_closed_budget_enforcement, rejecting with 503 when spend cannot be verified against the store.
Design ruleA budget without a test that proves a request gets rejected is a metric, not a control. Test the deny path with the same rigour as an authorization deny, and decide fail-open versus fail-closed explicitly.

Figure 4 · Anatomy of the canonical incident: Milkie Way, March 2020

Budget alertsBilling pipelineFirestoreCloud RunDeveloperBudget alertsBilling pipelineFirestoreCloud RunDeveloperloop[continuous, every fewmilliseconds]rating and sync lag,about one dayactual spend alreadytens of thousands aheadfinal invoice $72,000for ~24 hours of runtimedeploy test scraper (evening)scale out to 1,000 instances(platform default), concurrency 80reads, ~1B per minute at peakusage records, batchedrecorded spend crosses $7budgetnotification emaildiscover and delete services
Budget alertsBilling pipelineFirestoreCloud RunDeveloperBudget alertsBilling pipelineFirestoreCloud RunDeveloperloop[continuous, every fewmilliseconds]rating and sync lag,about one dayactual spend alreadytens of thousands aheadfinal invoice $72,000for ~24 hours of runtimedeploy test scraper (evening)scale out to 1,000 instances(platform default), concurrency 80reads, ~1B per minute at peakusage records, batchedrecorded spend crosses $7budgetnotification emaildiscover and delete services
Every control that existed sat downstream of a pipeline lagging the meter by roughly a day; the only mechanisms that could have acted in time (max instances, concurrency) were set to permissive defaults. Reconstructed from the Milkie Way postmortem, part 2.
Diagram source

What the three classes share: in no incident above did the failure begin in the billing system. It began in the request path (a loop, a hot file, a name collision, a growth spike), and the billing system's only role was to be too slow to matter. The corollary an architect should carry: the denial-of-wallet literature's mitigations, rate limiting, concurrency caps, execution timeouts (Kelly et al., 2021), are identical to the accidental-runaway mitigations. You get the adversarial defence and the self-inflicted defence with the same controls, which is the best cost-benefit line in this whole domain.

05

Numbers you can plan against

The two columns that matter for design are the spend rates and the detection delays; your exposure is always their product.

MetricValueAtContextAs ofSource
Peak read amplification~1B reads/minMilkie WayCloud Run at default max 1,000 instances hitting Firestore2020postmortem
Spend rate, self-amplification$72,000/dayMilkie Way116B reads at $0.06 per 100k, plus compute2020Register
Spend rate, bandwidth~$26,000/dayNetlify customerDerived: $104,500 over 4 days; 60.7 TB peak day at $55/100GB2024thread
Spend rate, adversarial requests~$650/dayPocwierzDerived: ~$1,300 in 2 days from ~100M unauthorized PUTs/day2024postmortem
Spend rate, organic growth$96,280/weekCara on Vercel56M function invocations/day at peak; 40k to 650k users in a week2024Zhang; InfoQ
AWS Cost Explorer refresh≥24 hAWS"at least once every 24 hours"; some data later2026docs
AWS Budgets evaluation3×/day, 8–12 h apartAWSUpper bound on billing-plane reaction time2026docs
GCP budget alert lagup to a few daysGoogle/Firebase"delay between incurring costs and receiving a budget alert"2026docs
Practitioner trust horizon2–3 daysDuckbill GroupBill data newer than this treated as unsettled2021, standingQuinn
Enforced-cap overshootminutesVercelMeter runs past the limit before pause takes effect2026bex.co analysis
GCP spend cap thresholds50 / 80 / 100%Google CloudAlerts at 50 and 80; enforcement pauses eligible services at 100% of target, on estimated cost2026docs
Lambda loop threshold16 invocationsAWSSame triggering event; then dropped to DLQ, default on2023announcement
Billing-plane sandbox exposure$800+/incidentAWS Innovation SandboxEstimated loss during the 24 h Cost Explorer blind spot2026issue #92
Read these carefully

The incident figures ($72k, $104.5k, $96,280, $1,300, AUD 11,448) are reported by the party that paid them, and in three of five cases were later refunded or reduced; they measure exposure, not final cost. The two "spend rate" derivations marked as derived are this guide's arithmetic from reported totals and durations. Platform cadences (24 h, 3x/day, few days) are vendor documentation, checked September 2026, and are floors rather than guarantees. The Vercel pause-overshoot figure comes from one independent analysis of vendor documentation, not from a measured incident.

06

The evidence wall

Every source behind this page, graded. Filter by kind. Retrieval for this guide ran through search-engine page retrieval plus direct fetches of raw GitHub content; the ledger in sources.md records which quotes are verbatim.

Postmortem Milkie Way2020-12

We Burnt $72K testing Firebase + Cloud Run (parts 1 and 2)

The canonical self-amplification incident, written by the founder with full numbers: default max instances, read rates, the day-late billing sync, the refund.

Carry forwardThe scaling defaults are the de facto budget; billing lags by a day, so nothing downstream of billing could have helped.
https://blog.tomilkieway.com/72k-1/
Postmortem Troy Hunt / HIBP2022-01

How I Got Pwned by My Cloud Costs

An operator who teaches security hygiene professionally, billed ~AUD 11,448 because a file outgrew the CDN's 15 GB cache ceiling; available alerts were unconfigured.

Carry forwardCost architectures decay silently as artifacts grow; unconfigured alerting is the norm, not the exception, even among experts.
https://www.troyhunt.com/how-i-got-pwned-by-my-cloud-costs/
Postmortem Netlify customer2024-02

Netlify billing horror story

First-person forum account of the $104,500 free-tier bill: 60.7 TB peak day, $55/100GB overage pricing, support reducing then the CEO waiving it.

Carry forwardOn usage-billed tiers, compute your worst-case daily bill from the price sheet; the platform will not compute it for you.
https://answers.netlify.com/t/netlify-billing-horror-story/113392
Postmortem Cara (Jingna Zhang)2024-06

Founder's account of the $96,280 Vercel week

The founder's own posts on the bill, the log discrepancies she questioned, and the optimisation work that followed; the vendor's warnings were missed amid the growth.

Carry forwardYour best growth week and an attack are the same billing event; alerts addressed to saturated humans do not count as a control.
https://x.com/zemotion/status/1800959534057529394
Case study InfoQ2026-07

AWS billing bug shows trillion-dollar estimates while its own cost alarms fail to act

The estimated-billing pipeline corrupted by a pricing config change; customer budget alarms fired on false data; AWS disabled budget and anomaly alerts platform-wide during mitigation.

Carry forwardThe alerting plane has its own failure modes; automation consuming spend estimates needs plausibility bounds.
https://www.infoq.com/news/2026/07/aws-billing-estimates-incident/
Source Netlify (CEO)2024-02

biilmann on HN: the forgiveness policy

The CEO stating the then-current control in public: no shutdown of free sites on non-attack spikes, bills from legitimate mistakes forgiven after the fact.

Carry forwardWhen a vendor's spend protection is policy rather than mechanism, model it as unenforceable in your risk analysis.
https://news.ycombinator.com/item?id=39521986
Source Netlify community2024–2025

Feature thread: add automated kill switch or rate limiting

Fifty-plus replies over 18 months, with Netlify's staged responses landing in the thread: free-plan suspension, usage notifications, account-wide pause, rate limiting.

Carry forwardPlatform spend controls arrive in layers, admission last; track the vendor's actual shipped mechanisms, not the incident-week promises.
https://answers.netlify.com/t/add-automated-kill-switch-or-rate-limiting-to-prevent-excess-billing-from-ddos-attacks/113359
Source Cyclenerd (community)maintained; checked 2026-09

poweroff-google-cloud-cap-billing

Terraform-packaged kill switch implementing Google's documented disable-billing pattern, with a custom role so only a billing admin can re-enable. Its README carries the honest caveats: non-graceful, possibly unrecoverable, and still behind the billing lag.

Carry forwardSet the trigger budget below your true limit by your measured billing delay; restrict re-enable rights away from the project itself.
https://github.com/Cyclenerd/poweroff-google-cloud-cap-billing
Source AWSchecked 2026-09

aws-sdk-go-v2: recursion_detection.go

The loop breaker's actual mechanism: SDK middleware stamps the X-Ray trace header on outbound requests from Lambda so the platform can count hops of the same event.

Carry forwardEffective spend controls ride the request path's existing metadata (trace context), not the billing system; the same trick is available to you.
https://github.com/aws/aws-sdk-go-v2/blob/main/aws/middleware/recursion_detection.go
Source AWS Solutionsopen; checked 2026-09

Innovation Sandbox issue #92: the 24-hour blind spot

AWS's own budget-leased sandbox solution, enforcement built on Cost Explorer, documented as blind for up to 24 hours with $800+ estimated per-incident exposure; proposes event-driven detection instead.

Carry forwardEven first-party tooling inherits the pipeline lag; if AWS cannot enforce budgets off Cost Explorer in time, neither can you.
https://github.com/aws-solutions/innovation-sandbox-on-aws/issues/92
Source LiteLLM community2025; checked 2026-09

PR #9658, closed unmerged: budgets that did not block

A recorded argument about enforcement: end-user budgets tracked spend but allowed unlimited overage; the community fix was closed without merging, and the gap was re-reported. The eventual design reserves estimated cost pre-request.

Carry forwardTest the deny path: prove a request is rejected at budget exhaustion before trusting any gateway's budget feature.
https://github.com/BerriAI/litellm/pull/9658
Decision record Google2019–2023

The App Engine spending-limit removal, with stated rationale

The official response in the removal thread: the limit no longer covered what the platform had become (Flex, Cloud Build), so it was retired rather than extended. Deprecated 2020-07-24, shut down 2023-07-01.

Carry forwardA cap that covers a subset of spend is judged by vendors as worse than no cap; expect coverage limits in any cap you adopt, and read them.
https://groups.google.com/g/google-appengine/c/dqm8JH2eAo4
Decision record FinOps Foundationactive; checked 2026-09

FOCUS: FinOps Open Cost and Usage Specification

A community specification defining a vendor-neutral schema for cost and usage data across clouds and SaaS; the standardisation effort is itself evidence of how unusable raw billing feeds are for cross-vendor control.

Carry forwardNormalise billing data to one schema before building anomaly detection or chargeback; FOCUS is the current convergence point.
https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec
Decision record OpenCost (CNCF)v0.1; checked 2026-09

OpenCost Specification

Vendor-neutral spec for measuring and allocating Kubernetes costs from the control plane's own resource accounting, in real time, rather than from the provider invoice.

Carry forwardWhere you control the scheduler, you can compute cost at allocation time and skip the billing pipeline entirely for detection purposes.
https://github.com/opencost/opencost/blob/develop/spec/opencost-specv01.md
Case study The Register2020-12

Google Cloud (over)Run

Independent write-up of the Milkie Way incident with the unit arithmetic: $0.06 per 100k reads times 116 billion reads is $69,600 of the $72k.

Carry forwardPer-operation prices look like rounding errors; multiply them by your amplification factor before dismissing them.
https://www.theregister.com/2020/12/10/google_cloud_over_run/
Case study InfoQ2024-06

Cara's serverless scale expenses

Reported figures for the Cara incident: 56M invocations/day peak, the growth curve, and Vercel's response including the claim that warnings were sent ahead of the bill.

Carry forwardLoad-test your bill, not only your latency: project the invoice at 10x traffic before the 10x week happens.
https://www.infoq.com/news/2024/06/vercel-serverless-scale-expenses
Case study TechCrunch2024-06-06

Cara grew from 40k to 650k users in a week

Corroborates the growth numbers behind the bill and records Vercel's public response that outreach emails preceded the invoice.

Carry forwardThe alert-to-human channel fails precisely when it matters; growth events need pre-agreed automated policy.
https://techcrunch.com/2024/06/06/...
Eng blog Duckbill Groupchecked 2026-09

Ask Me Anything About AWS Billing (Corey Quinn)

The practitioner's operating rule from inside hundreds of AWS bills: billing data younger than two or three days is treated as unsettled.

Carry forwardBuild reconciliation on settled data (T+3); build control on real-time usage; never mix the two.
https://www.lastweekinaws.com/blog/ask-me-anything-about-aws-billing/
Eng blog bex.co2026-07-08

Vercel's spending cap doesn't cap your spending

Close reading of the spend-management docs: the pause actuator lets the meter run for minutes past the limit, and the five-axis function pricing makes the limit hard to predict from traffic.

Carry forwardAsk any cap three questions: what does it measure, how often, and what exactly stops when it trips. "Cap" is a marketing word.
https://bex.co/blog/2026/07/08/vercel-no-spending-cap
Eng blog Honeycombchecked 2026-09

How much should I spend on observability?

Places the watching-cost in context: teams with good observability spend on the order of 20 to 30% of their infrastructure bill to get it, per Honeycomb's leadership.

Carry forwardSpend observability is observability: budget for the metering, storage and alerting that cost control itself consumes.
https://www.honeycomb.io/blog/how-much-should-i-spend-on-observability-pt1
Eng blog HAMY2024-03

How this developer's side project racked up a $100k cloud bill, and five ways to avoid it

Practitioner synthesis written directly off the Netlify incident: caps where offered, static-first architectures, and hosting side projects on flat-price infrastructure.

Carry forwardFor unattended projects, flat-price hosting is a legitimate architecture decision, not a toy choice; the bill cannot run away by construction.
https://hamy.xyz/blog/2024-03_avoid-side-project-financial-ruin
Eng blog Google Cloud Community (Dazbo)2026-07

Finally: hard caps to limit your Google Cloud spend

Practitioner reception of the 2026 spend caps from an author who had previously published the DIY kill-switch pattern; documents the enforcement-on-estimates behaviour and the service coverage limits.

Carry forwardThe cap's eligible-services list is the control's real boundary; everything off the list still needs quotas.
https://medium.com/google-cloud/finally-hard-caps-to-limit-your-google-cloud-spend-29b2e658ed73
Eng blog ServerlessHorrorsongoing

The incident collection

A running catalogue of serverless billing incidents, including the Netlify $104,500 entry. Used here as an index; primary write-ups are cited directly above.

Carry forwardThe class is common enough to have a dedicated archive; check it when evaluating any usage-billed platform.
https://serverlesshorrors.com/all/netlify-104k/
Paper NUI Galway2021-04

Denial of Wallet: defining a looming threat to serverless computing

Kelly, Glavin and Barrett define DoW as mass, continual invocation causing financial exhaustion rather than unavailability, and enumerate the mitigations: rate limiting, concurrency limits, timeouts, budgets.

Carry forwardThe adversarial and accidental cases share one defence set; deploying it buys both.
https://arxiv.org/abs/2104.08031
Paper La Trobe University2025-08

A comprehensive review of denial of wallet attacks in serverless architectures

Surveys the field's evolution: attack taxonomy (blast, continual-inconspicuous, background-chained) and a shift toward ML-based detection in six of the ten most recent papers reviewed.

Carry forwardInconspicuous low-rate DoW is designed to hide under anomaly thresholds; detection research is moving to learned baselines for exactly that reason.
https://arxiv.org/abs/2508.19284
Talk SREcon26 Americas (Microsoft)2026-03

Infinity Is Not a Strategy: Right-Sizing the Cloud

Praval Panwar applies capacity-planning frameworks from airlines, power grids and logistics to cloud systems, arguing against oscillating between over-provisioning and panic-scaling; capacity, cost and performance as one signal set.

Carry forwardTreat spend as a capacity signal with the same discipline as saturation; industries with hard physical limits already have the frameworks.
https://www.usenix.org/conference/srecon26americas/presentation/panwar
Talk AWS (Werner Vogels) via InfoQ2023-12

The Frugal Architect (re:Invent 2023 keynote)

The platform CTO's doctrine: make cost a non-functional requirement, unobserved systems lead to unknown costs, and cost-aware architectures implement cost controls. "Cost awareness is a lost art."

Carry forwardWrite the spend NFR into the design review template next to availability and latency; the keynote's laws are a usable checklist.
https://www.infoq.com/news/2023/12/frugal-architect-werner-vogels/
Vendor Google Cloud2026-07

Manage spend cap budgets (Preview)

The cap's semantics in the vendor's own words: enforcement on estimated costs because they arrive faster than actuals; eligible services only; persistent resources keep accruing; paused until manually lifted.

Carry forwardRead the exclusions before relying on the cap: compute and storage already provisioned are outside it.
https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps
Vendor Google / Firebasechecked 2026-09

Avoid surprise bills

The two sentences that define the problem: budgets and alerts do not cap usage or charges, and the alert can lag the cost by up to a few days.

Carry forwardQuote these lines in design reviews when someone proposes a budget alert as the spend control.
https://firebase.google.com/docs/projects/billing/avoid-surprise-bills
Vendor AWS2024-05

S3 no longer charges for several HTTP error codes

The billing-semantics fix for the empty-bucket class: unauthorized 403s from outside the account are free, all regions, no application changes.

Carry forwardBilling semantics can change under public pressure; the residual risk is what is still metered: authorized traffic and egress.
https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/
Vendor Supabasechecked 2026-09

Cost control and the spend cap

The counter-example default: the Pro plan ships with the spend cap on; over-quota usage of an item is disallowed until the next billing cycle rather than billed.

Carry forwardCap-by-default is commercially viable; a platform choosing meter-by-default is making a choice, not obeying a law of nature.
https://supabase.com/docs/guides/platform/cost-control
07

Build a miniature, then productionise it

Each rung produces a number or a proven behaviour you did not have before. The line from toy to real is crossed at rung four.

Measure your own blind spot

Deploy a trivial metered workload (a function calling a paid API in a loop, capped at a few dollars by iteration count). Record when the spend appears in provider metrics, in the billing console, and in a budget alert.

Done when: you have three timestamps and can state your detection latency per surface.  Teaches: the lag is real, measurable, and different per tool.

Reproduce the amplifier in a sandbox

In an isolated project with quotas pre-set low, deploy a service that writes to its own trigger. Watch the platform's loop breaker fire (or fail to exist) and watch instance counts against the configured maximum.

Done when: you can name the exact mechanism that stopped the loop, and what would have stopped it if that mechanism were absent.  Teaches: defaults, not budgets, decided the outcome.

Wire an alert to an actuator

Connect a budget notification (Pub/Sub topic, webhook) to a function that actually stops something: pause a project, set a quota to zero, detach billing in a throwaway project. Trip it with synthetic spend.

Done when: synthetic spend causes an automated stop with no human in the loop, and you know the end-to-end trip time.  Teaches: the IAM and plumbing between "alert" and "stop" is where these projects stall.

Enforce in the request path

Put a metering gateway (LiteLLM for LLM traffic, or a thin proxy of your own) in front of a paid API. Implement reserve-then-call against a budget: estimate cost, check headroom, reject at exhaustion. Load-test past the budget.

Done when: the overshoot equals your in-flight requests times per-request cost, and you have chosen fail-open or fail-closed for a store outage in writing.  Teaches: estimate-based admission control, the only real-time brake there is.

Set quotas from measured peaks

For every service in one production system, list the current quota, concurrency and max-instance settings against measured peak usage. Set each to peak times a deliberate multiplier, and document the multiplier.

Done when: a load test hits a quota before it could hit the budget alert.  Teaches: quotas are the hard bound the billing plane pretends to be.

Run a spend game day

Inject a runaway in a production-like environment: a loop with the breaker disabled, or replayed unauthorized traffic. Measure time-to-detect, time-to-stop, and money burned, with the on-call operating from runbooks only.

Done when: spend MTTR is a number your team has seen and reduced at least once.  Teaches: the human and IAM latencies that never show up in architecture diagrams.

Write the trip policy and the re-enable rule

Per environment, decide in writing: which services pause at the cap, which are never paused automatically, what the plausibility bounds on the estimate feed are, and who can lift a tripped cap (not the project's own service accounts, per the Cyclenerd role design).

Done when: the policy is reviewed alongside availability SLOs and the pause path is tested quarterly.  Teaches: the brake is an availability decision, and availability owners must sign it.

08

Keep hunting

The queries that found this material, grouped by what they surface. The incident vocabulary ("bill", "burnt", "horror") outperforms any technology term.

Incidents and postmortems

  • "we burnt" OR "billing horror" cloud bill postmortem
  • site:news.ycombinator.com "bill" vercel OR netlify OR firebase
  • "empty S3 bucket" unauthorized requests bill
  • serverlesshorrors.com

Platform mechanisms and their limits

  • "spend cap" OR "spending limit" site:docs.cloud.google.com
  • "budgets" "do not cap" usage charges
  • lambda "recursive loop detection" default
  • "spend management" pause production changelog

The lag, from primary sources

  • "Cost Explorer" "24 hours" refresh latency
  • repo:aws-solutions "Cost Explorer" latency is:issue
  • "budget alert" delay "few days" firebase

Research and the adversarial case

  • "denial of wallet" serverless arxiv
  • DoW attack taxonomy detection survey
  • litellm max_budget enforcement is:issue OR is:pr
09

References

  1. Milkie Way, We Burnt $72K testing Firebase + Cloud Run, part 1 Milkie Way blog, 2020-12. Checked 2026-09-14. Mirror: medium.com/milkie-way.
  2. Milkie Way, We Burnt $72K, part 2 Milkie Way blog, 2020-12. Checked 2026-09-14.
  3. The Register, Google Cloud (over)Run The Register, 2020-12-10. Checked 2026-09-14.
  4. Troy Hunt, How I Got Pwned by My Cloud Costs troyhunt.com, 2022-01. Checked 2026-09-14.
  5. Netlify billing horror story Netlify Support Forums, 2024-02. Checked 2026-09-14.
  6. Netlify CEO (biilmann) comment on the $104k thread Hacker News, 2024-02. Checked 2026-09-14.
  7. Add automated kill switch or rate limiting (feature thread) Netlify Support Forums, 2024-02 through 2025-10. Checked 2026-09-14.
  8. Maciej Pocwierz, How an empty S3 bucket can make your AWS bill explode Medium, 2024-04. Checked 2026-09-14.
  9. Jeff Barr on unauthorized-request charges X, 2024-04-30. Checked 2026-09-14.
  10. AWS, Amazon S3 will no longer charge for several HTTP error codes AWS What's New, 2024-05-13. Checked 2026-09-14.
  11. AWS, CloudFront no longer charges for requests blocked by AWS WAF AWS What's New, 2024-11. Checked 2026-09-14.
  12. InfoQ, Vercel serverless scale expenses (Cara) InfoQ, 2024-06. Checked 2026-09-14.
  13. Jingna Zhang on the Vercel bill X, 2024-06. Checked 2026-09-14. See also x.com/zemotion/status/1798558292681343039.
  14. TechCrunch, Cara grew from 40k to 650k users in a week TechCrunch, 2024-06-06. Checked 2026-09-14.
  15. Vercel, Spend Management launch Vercel blog, 2023-10-05. Checked 2026-09-14.
  16. Vercel changelog, Spend Management now pauses production deployments by default Vercel changelog, undated; retrieved 2026-09-14.
  17. Vercel, Spend Management documentation Vercel docs. Checked 2026-09-14.
  18. bex.co, Vercel's Spending Cap Doesn't Cap Your Spending bex.co, 2026-07-08. Checked 2026-09-14.
  19. Google Cloud, Create, edit, or delete budgets and budget alerts Google Cloud docs. Checked 2026-09-14.
  20. Firebase, Avoid surprise bills Firebase docs. Checked 2026-09-14.
  21. Google Cloud, Disable billing usage with notifications Google Cloud docs. Checked 2026-09-14.
  22. Cyclenerd, poweroff-google-cloud-cap-billing GitHub. Checked 2026-09-14 (README fetched raw).
  23. Google Groups, Spending LImits Going Away :( google-appengine group, 2019-2020. Checked 2026-09-14.
  24. Google Cloud, Manage App Engine costs Google Cloud docs. Checked 2026-09-14.
  25. Google Cloud, Manage spend cap budgets (Preview) Google Cloud docs, 2026-07. Checked 2026-09-14.
  26. Google Cloud, New early anomalies and spend caps on Google Cloud Budgets Google Cloud blog, 2026-07-28. Checked 2026-09-14.
  27. AWS, Lambda detects and stops recursive loops AWS What's New, 2023-07-13. Checked 2026-09-14.
  28. AWS, Lambda detects and stops recursive loops between Lambda and S3 AWS What's New, 2024-10. Checked 2026-09-14.
  29. aws-sdk-go-v2, recursion_detection.go GitHub, fetched raw at head. Checked 2026-09-14.
  30. aws-solutions/innovation-sandbox-on-aws, issue #92 GitHub. Checked 2026-09-14.
  31. AWS, Analyzing your costs and usage with Cost Explorer AWS docs. Checked 2026-09-14.
  32. Corey Quinn, Ask Me Anything About AWS Billing Last Week in AWS. Checked 2026-09-14.
  33. InfoQ, AWS billing bug shows trillion-dollar estimates InfoQ, 2026-07. Checked 2026-09-14.
  34. Kelly, Glavin, Barrett, Denial of Wallet: Defining a Looming Threat to Serverless Computing arXiv 2104.08031, 2021-04. Checked 2026-09-14.
  35. Dorsett, Mann, Chowdhury, Mahmood, A Comprehensive Review of Denial of Wallet Attacks in Serverless Architectures arXiv 2508.19284, 2025-08. Checked 2026-09-14.
  36. BerriAI/litellm, PR #9658 (closed unmerged) GitHub, 2025. Checked 2026-09-14. See also issues/11083.
  37. LiteLLM, proxy config settings (budget reservation, fail-closed) LiteLLM docs. Checked 2026-09-14.
  38. Supabase, Control your costs Supabase docs. Checked 2026-09-14.
  39. Praval Panwar, Infinity Is Not a Strategy: Right-Sizing the Cloud SREcon26 Americas, 2026-03. Checked 2026-09-14.
  40. InfoQ, The Frugal Architect: AWS promotes cost awareness InfoQ, 2023-12. Checked 2026-09-14.
  41. FinOps Foundation, FOCUS specification GitHub, fetched raw at head. Checked 2026-09-14.
  42. OpenCost Specification v0.1 GitHub, fetched raw at head. Checked 2026-09-14.
  43. HAMY, How this developer's side project racked up a $100k cloud bill hamy.xyz, 2024-03. Checked 2026-09-14.
  44. Dazbo, Finally: Hard Caps to Limit Your Google Cloud Spend Google Cloud Community on Medium, 2026-07. Checked 2026-09-14.
  45. Honeycomb, How Much Should I Spend On Observability? (part 1) honeycomb.io. Checked 2026-09-14.
  46. ServerlessHorrors, $104,500.123 serverlesshorrors.com. Checked 2026-09-14.