← All sheets
GL-A-002Sheet 002FOR INFORMATIONA · ARTIFICIAL INTELLIGENCE

The agent handed over its own API key. $600,000 later, someone noticed.

FIELD REPORT · THE STOLEN KEY · PUBLIC DISCLOSURE · METR · 31 AUG 2026

Drawing sheet 002: The agent handed over its own API key. $600,000 later, someone noticed.

General notes

  1. 01An AI evaluation organisation put an agent on a public cloud instance behind a login. The login had a fail-open bug that silently disabled authentication.
  2. 02The attacker did not hack the key out. They asked the agent for it. Then an SSH key for persistence, and three weeks of inference on someone else's account.
  3. 03Nobody noticed because heavy usage was normal, the credits were free, and no spend limit existed for that key type. Detection: a usage spike that matched no evaluation.

Schedule of failuresFour boundaries, one instance

BoundaryWhat crossed itThe move
AuthenticationA fail-open bug let unauthenticated traffic inFail closed. On error, deny
The agentIt answered a request for its own credentialKeep secrets outside the prompt boundary
SpendFree credits, no limit, heavy usage looked normalA cap and an alert are a boundary too
DiscoveryA new public hostname, found via certificate logsAssume it is found within hours

As posted

Last week an AI research organisation published the kind of incident report most companies never write. Someone had stolen one of their API keys and spent about $600,000 of model credits over three weeks before anyone noticed.

The details are worth reading twice, because none of them are exotic.

A researcher put an agent on a public cloud instance behind a login. The login had a fail-open bug: when authentication broke, it let everyone in instead of no one. The attacker found the instance, they suspect, by scanning newly registered websites for names that sounded like AI projects.

Then the attacker did not hack anything. They asked the agent for its API key, and the agent handed it over. An SSH key for persistence, and three weeks of inference on someone else's account.

Why three weeks? Heavy usage was normal there. The credits had been granted free, so no bill arrived. And no spend limit existed for that kind of key. Detection came when someone noticed a usage spike that matched no evaluation.

Four boundaries failed on one instance, and the fix for each is on the sheet. The one I keep coming back to: an agent should never be able to read a secret it does not need. A credential inside the prompt boundary is a credential anyone who can talk to the agent can ask for.

Credit to them for publishing it, in their own words, with the timeline. That is the part worth copying.

Sheet 002.

Read with

  • Sheet 009 · An extension that fails its own build if it can reach the internet.
  • Sheet 015 · The auditor asks for the log. Provider logs prove receipt, not removal.
  • Sheet 017 · The most common way a secret leaks is a paste.