Back to Devoured - June 03, 2026
DEVOURED
Preventing AI Inference Theft at Scale

Preventing AI Inference Theft at Scale

AI Vercel
Vercel revealed how AI inference theft, costing up to $2 per prompt, is a high-margin attack on exposed endpoints, overcoming traditional rate limits and auth walls.
What: Vercel observed an attack on April 12, 2026, where traffic to its docs AI chat endpoint spiked tenfold to 1,300 requests/minute, generating over $10,000/day in inference costs on Anthropic's Claude Haiku 4.5. Attackers use residential proxies and OpenAI/Anthropic-compatible adapters to resell stolen AI inference, making it a lucrative business even at 5-10% of list price.
Why it matters: This highlights a new and highly profitable vector for cybercrime targeting AI service providers, forcing a shift from session-based security to per-request verification to combat the high economic value of individual AI inferences.
Takeaway: Developers exposing AI endpoints should implement per-request verification like Vercel's BotID deep analysis, audit general-purpose AI playgrounds and support bots, and prioritize endpoints with maximum caller prompt control.
Deep dive
  • AI inference theft involves unauthorized use and resale of paid AI model access, driven by high per-call costs (e.g., $2/prompt) compared to inexpensive HTTP requests (~$2/million).
  • Attackers create OpenAI or Anthropic-compatible adapters, wrapping victim APIs to integrate stolen inference into standard client tools and SDKs.
  • They use thousands of residential proxies and throwaway accounts to bypass traditional session-based rate limits and authentication.
  • Vercel experienced a 10x traffic spike on April 12, 2026, reaching 1,300 requests/minute on Anthropic's Claude Haiku 4.5, incurring over $10,000/day in potential costs.
  • Effective defense requires per-request verification, such as Vercel's BotID deep analysis (powered by Kasada's client-side ML), which runs invisibly on every API call to detect bots.
  • Implementing BotID involves adding checkBotId() in the server-side route handler and declaring the protected path on the client using initBotId().
  • The economic asymmetry works in the defender's favor: inference is expensive per call for attackers to steal, but per-request verification is cheap to implement.
Decoder
  • AI Inference Theft: The unauthorized use and subsequent resale of access to a paid AI model's processing capabilities, where the original provider pays for the AI call and the attacker profits from the resale.
  • BotID Deep Analysis: Vercel's invisible CAPTCHA system, powered by Kasada, which uses client-side machine learning to analyze every request and distinguish between human and bot traffic without explicit challenges.
  • Residential Proxies: IP addresses provided by internet service providers (ISPs) to residential users, which attackers abuse to make bot traffic appear as legitimate user activity from diverse locations, bypassing IP-based rate limits.
Original article

HTTP requests are inexpensive. Vercel charges ~$2/million, a fraction of a cent per call. But a single prompt to an agent on a frontier model can cost $2, making AI a million times more expensive, and inference theft one of the highest-margin businesses an attacker can run. We have seen this type of attack on our own APIs.

If you have AI endpoints exposed to the internet, the risk of abuse is high and can easily run up bills in the tens of thousands of dollars or more.

Protecting those endpoints requires verification to run on every AI request, not on the session or signup. Rate limits and auth walls aren't sufficient on their own because checks that run once per session get amortized away across thousands of stolen calls.

At Vercel, we gate every AI request through BotID deep analysis, and you can do the same on your own endpoints with a few lines of code.

What inference theft is

Inference theft is the unauthorized use of someone else's paid AI inference, either for free consumption or downstream resale. The operator pays per AI call; the attacker pays nothing for inference and then resells the tokens at a discount. This goes beyond rate-limit abuse to actual resale of a stolen resource in a market.

Which AI endpoints are at risk?

Any internet-facing endpoint that gives a caller meaningful control over an LLM prompt is a target. The more general the endpoint, the higher the payout per stolen call.

AI playgrounds, like the AI SDK Playground, are the most dangerous shape because the caller has maximum control over the prompt, the model, and often the parameters. Stolen calls land cleanly into any standard client.

Support bots and documentation assistants are less exposed when system prompts are fixed server-side, but attackers have learned how to talk the models around system prompts cheaply enough to make resale viable.

Resale value tracks how easily the stolen calls can be dropped into a provider-compatible client.

Why web defenses don't mitigate inference theft

IP rate limits and auth walls were built to defend against attacks with dramatically lower per-call economics, where gaming IPs and accounts weren't worth the cost.

The payoff from stolen inference is high enough that attackers will procure residential proxy IPs by the thousands and register throwaway accounts at whatever scale it takes to defeat your gate. Rate limits get diluted across the fleet of IP addresses, and real accounts pass authentication.

The architecture of abuse

Sophisticated attackers wrap your custom AI endpoint in an OpenAI- or Anthropic-compatible adapter and fan calls out through residential proxies.

The adapter is the key component. It is a one-time engineering cost that presents the victim's idiosyncratic API as OpenAI- or Anthropic-compatible, so stolen inference can drop into any standard coding agent or SDK. Reselling at even five to ten percent of the list price, with zero marginal inference cost, can make for a generous-margin business.

A recent example is Chipotlai Max, a forked coding agent that ships with a proxy turning Chipotle's customer-support chatbot into an OpenAI-compatible endpoint. The project openly solicits help in porting the same inference-theft approach to Home Depot, Lowe's, Target, and Starbucks.

The adapter also serves as the session boundary for the attacker's downstream users. They authenticate to the adapter, not to your endpoint. By the time a call hits your API, it has already crossed the boundary you were planning to defend. The check has to run on the call the adapter proxies, not on the session it sits behind.

The shape of a real attack on our own endpoint

On April 12, 2026, traffic to the Vercel docs AI chat endpoint spiked to roughly ten times normal volume on Anthropic's Claude Haiku 4.5 model. Traffic rose to 1,300 requests per minute at peak, which would have translated to an inference cost run rate of over ten thousand dollars per day.

The attack came in through residential proxies that obscured the real client IPs. Across hundreds of thousands of bot requests over two days, standard per-IP rate limits had nothing useful to act on.

How to defend against inference theft

Protecting AI endpoints against inference theft requires verification of every request. We use Vercel's BotID with deep analysis, called inside the route handler before the AI request lands.

Verification has to run on every AI request

If our gate had run at session start instead of per request, the attacker would have paid the bypass cost once and walked away with hundreds of thousands of stolen calls. Any check that runs per session amortizes the attacker's bypass cost across every subsequent inference call. Per-request gates force that ratio down to one, and even at high inference prices, defeating a check on every call isn't worth the cost.

This is where the cost asymmetry works in the defender's favor. Inference is the most expensive resource per call that the attacker steals, but verification is one of the cheapest protection costs per call.

Implementing request verification with BotID deep analysis

Traditional image CAPTCHAs no longer hold up against modern attackers because the same AI models that make inference worth stealing can easily bypass them.

We deploy Vercel BotID on our AI endpoints, gating every request. BotID is an invisible CAPTCHA with deep analysis powered by Kasada that uses client-side machine learning to distinguish humans from bots without a visible challenge, so it can run on every request rather than only at session start.

BotID deep analysis detected and blocked more than ten thousand bot requests in the first minutes of the spike. Within twenty-four hours, request volume on the endpoint was flat at normal levels.

Server-side, checkBotId() runs inside the route handler and returns a classification for the request currently being served.

1// app/api/ai-chat/route.ts2import { checkBotId } from 'botid/server';3import { NextRequest, NextResponse } from 'next/server';4
5export async function POST(request: NextRequest) {6  const verification = await checkBotId();7  if (verification.isBot) {8    return NextResponse.json({ error: 'Access denied' }, { status: 403 });9  }10  // Your existing AI SDK call path11}

The route also has to be declared on the client. Without this, checkBotId() fails because BotID doesn't attach the challenge headers to the request:

1// instrumentation-client.ts2import { initBotId } from 'botid/client/core';3
4initBotId({5  protect: [{ path: '/api/ai-chat', method: 'POST' }],6});

See the BotID docs for the next.config.ts wrapper and the full setup.

Protect inference, not just access

Inference will remain orders of magnitude more expensive than the requests it carries, so resale will remain profitable, and attackers will keep iterating.

To protect your AI endpoints:

  • Audit which of your AI endpoints are exposed

  • Prioritize by attack likelihood: more caller prompt control means an easier target

  • Gate every endpoint on every request

Explore all 53 articles in today's digest

Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi