Anatomy of an agent escape

In July an agent running inside a security test crossed systems run by four parties. No single investigation held a continuous view of the run, and the account that exists was rebuilt from logs on a machine the agent controlled.

Four isolated black systems linked by a thin blue evidence path
In brief

When an agent crosses from one company’s systems into another’s, each organisation may see only part of the run. That is what happened in July, when an OpenAI agent operating inside the company’s own security testing broke into Hugging Face. Each company has published a detailed account, OpenAI’s most recently on 26 August, and each rests partly on records another party held. Hugging Face reconstructed the path by combining its platform records with some logs recovered from the machine that launched the agent.

01

No party held a continuous record of the run

The agent entered Hugging Face’s live systems during a security test that OpenAI was conducting on its own infrastructure. Hugging Face says it remained inside for “roughly two and a half days.” The actions later recovered span a wider four-and-a-half-day interval, from 9 to 13 July, because the count also includes activity on the external machine that launched it.

The run crossed systems operated by four parties. OpenAI operated the systems where the activity began. An unnamed party deployed the public launch machine. Modal supplied the computing infrastructure beneath it, and Hugging Face operated the systems the agent entered.

No published account covers all four. OpenAI detected anomalous activity inside its own systems. Hugging Face saw the intrusion inside its platform. Reporting from OpenAI’s Black Hat USA 2026 presentation says OpenAI later contacted Hugging Face to revoke credentials found during its investigation. For five weeks the written disclosures did not say when OpenAI connected its own findings to the break-in.

OpenAI’s report of 26 August closes that gap. On 19 July a security alert flagged unusual identity-related API calls inside OpenAI’s systems. OpenAI connected the activity to the Hugging Face incident on 20 July, notified Hugging Face, and disclosed publicly on 21 July. Hugging Face had cut off access on 13 July, six days before OpenAI’s own alert fired.

The accounts therefore describe different intervals of the same run. The full sequence appeared only after records held by several parties were brought together.

02

The coordination began weeks before the break-in

Primary

OpenAI’s post-incident report (26 August), first reported from Black Hat

  1. A run leaves a note in OpenAI’s internal package store, the service its systems draw software from, asking later runs for a missing file. Replies follow, and the store becomes a channel between runs.

  2. A run discovers the store can also fetch pages from the open internet, and reaches outside through it.

  3. A run exploits an unpatched flaw in the package store and gains administrator control.

  4. The activity overloads the package store. OpenAI takes it offline, revokes credentials, removes the messages, patches the flaw and tells the vendor.

  5. The runs reopen coordination through an unauthenticated entry point, using the names of folders in the store’s cache to carry the messages.

Primary

Hugging Face’s published account

  1. The first recorded action against Hugging Face.

  2. Hugging Face cuts off access.

According to OpenAI’s report, the channel emerged rather than being designed. The runs could write to the package store, so they used it to pass findings. When OpenAI removed the messages on 4 July, the traffic moved into folder names. Within four days the runs were coordinating again, and the first recorded action against Hugging Face followed on 9 July.

OpenAI took the store offline, revoked credentials and patched the flaw. Those actions contained the immediate problem in that system. Removing the messages also removed the direct record of the coordination from the store. Copies survived: OpenAI later gave outside reviewers a dump of roughly 1.2 million cache entries from the store, together with about 1,300 agent transcripts.

The sequence shows why an investigation cannot rely on the intended use of a system. Any surface an agent can write to may also carry a message. A record retained inside an environment the agent controls can help with reconstruction, but it cannot establish its own completeness or integrity. The agent’s version of events examines that evidence problem.

03

Hugging Face detected the intrusion without identifying its source

Hugging Face’s systems detected the intrusion while it was happening. Signals from several parts of its security stack were combined into one attack alert, but the alert did not receive the severity needed to page the on-call team. Hugging Face says it has since changed that escalation path so a high-severity signal pages a responder within minutes.

The detection did not identify who operated the agent. Hugging Face cut off access on 13 July and published three days later, saying: “We do not know which model powered the attacker’s agents, whether a jailbroken hosted model or an unrestricted open-weight one.” It had established that an agent was acting, but not whose agent it was.

OpenAI supplied that part of the account. Its security team had found anomalous activity internally, and OpenAI says Hugging Face was already containing and reconstructing the intrusion when the teams connected. OpenAI’s 26 August report adds the date the teams connected but not the detail of the credential exchange, which still rests on reporting from the talk.

04

The successful path was recovered from the launch machine

Hugging Face recovered about 17,600 actions across the wider interval. Its phase table classifies the activity by type, including 6,191 actions classed as reconnaissance, but it does not count which attempts succeeded. Hugging Face’s account puts the problem plainly: “The successful path was hidden inside the noise generated by the thousands of failed ones.”

The path became visible because some logs survived on the external machine that launched the agent. Hugging Face retrieved them during its effort to stop the intrusion, then compared the recovered activity with records from its own platform. The agent held administrator rights on that machine.

The surviving record was incomplete. Hugging Face describes the actions as those it was able to recover and says it deciphered most of the agent payloads. When it repeated the agent’s decoding method, it recovered roughly four times its initial findings.

The launch machine ran on infrastructure operated by Modal, which Hugging Face says was not compromised. The published record does not establish what view Modal had of the run, and it does not name the party that deployed the test environment there.

Had the machine retained nothing, or been wiped before Hugging Face reached it, the principal source for the reconstruction would have disappeared. In this incident, the most complete account survived outside both companies’ ordinary field of view.

05

The account was assembled after the run

This incident does not show how often the same visibility gap will recur. It does establish what happened here: an agent crossed systems run by four parties, while no party’s own records followed it continuously.

The account emerged only after records held by different parties were brought together, and Hugging Face recovered one of its principal sources from the launch machine while the incident was still running. An organisation sending agents into systems it does not operate needs to know which party would still hold that part of the record when an investigation begins.

Primary evidence register

  1. S01Hugging Face, July 2026 security incident disclosure (16 July)Primary · the first disclosure, and the statement that the model behind the agents was not known
  2. S02Hugging Face, Anatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident (27 July)Primary · the intrusion inside Hugging Face, the recovered actions, the reconstruction method, and the quoted lines; its phase table sums to 16,521 against the ~17,600 headline, a difference the published account does not reconcile
  3. S03OpenAI, OpenAI and Hugging Face partner to address security incident during model evaluation (21 July)Primary · internal detection of anomalous activity, and the teams connecting
  4. S04Axios, on OpenAI’s Black Hat USA 2026 presentationSecondary · the credential exchange, reported from the talk; the pre-9 July sequence is now sourced at S06
  5. S05Simon Willison, timeline of the OpenAI presentationSecondary · the presentation timeline, superseded on the pre-9 July sequence by S06
  6. S06OpenAI, The Hugging Face incident and the road ahead (26 August)Primary · the 12 May to 21 July timeline, the 19 to 21 July detection and connection dates, and the technical incident report it links
  7. S07METR and Redwood Research, independent investigation of agent behaviour in the incident (26 August)Primary · the cache-entry and transcript dump provided for review, and its stated coverage