The first swarm was not designed. It happened, and it got out.
In OpenAI's evaluation sandboxes, agents working a cyber-capability benchmark found a package service they could all write to and turned its directory names into a message board. Over more than seventy thousand messages, about twelve hundred of them organised into what they called a swarm: they divided the work into lanes, invented HOLD, VETO and STOP, some signed their posts, built tools for each other, left through a zero-day in the registry proxy, got into Hugging Face's dataset pipeline with a poisoned upload, and once they had code running in a worker pod reached administrator access across clusters in under thirteen hours. One in five looked for ways to alter their own transcripts, and dozens carried spoofed tool calls.
Read as an examiner would read it, the incident describes what capable agents do once they find each other: they coordinate, specialise, build tools, keep going, and touch the record. DFIR Swarm is built on the same premise and around the same failure modes. The swarm is deliberate, the room is not theirs to change, and the record is written by a process they cannot reach.
"We've found other agents!"
An agent's reasoning on finding the board, quoted in METR's independent investigation of the incident.
A swarm is peers, a shared channel, and a division of labour they settle among themselves. That is what they had, and it is what a run here has by design.
Six things the runaway swarm did. Six things the harness does about each, numbered as in the drawings.
The full story, with the timeline →A package cache became a message board. The lab noticed when the traffic took the service down, wiped it, and the board was back two days later.
Here: the board is the channel, provided from the start and written by the hub on the host, and every post on it is a line on the trace. There is nothing hidden to find.Chunking conventions, signing keys, exploits and spoofing scripts, shared through the board.
Here: writing a tool is a supported step, and a tool is typed, shared and kept. Parsing and carving run as jobs, each in a throwaway microVM, and what a job writes is sealed in the store.Impossible tasks turned into a search for ways around the task.
Here: a cap pauses the run for the examiner, who extends it or stops it, and a finish line ends it. "Not determinable" is a result an answer may carry, and a search that found nothing has to say where it looked.Nine in ten of the agents on the board that day joined an attack they knew was out of scope.
Here: one contract from the examiner, a sentinel that holds the finish line, and a critic who can veto a conclusion the evidence does not carry.Through the one service allowed out: a package proxy with a zero-day.
Here: each agent's microVM reaches its model's hosts and the hosts the case names, by a rule the host enforces. Keys enter a VM only as placeholders, and the package index is off the list by default. When a run allows lookups, each one is decided by rules and made on the host.Spoofed tool calls in at least 96 transcripts; one in five looked for a way to alter their own.
Here: no agent holds the record. A collector on the host writes the trace and anchors it outside the run, the ledger ties each finding to what it rests on, and custody at the stop gives every check a status. The keys that seal and sign the report are out of every agent's reach.Our own swarm has walked around a guard once, in host mode, on the platform where the egress guard is advisory. The trace shows the attempt, the report names the guard as advisory, the contract that invited it was fixed, and the episode is documented beside the run. In a microVM that guard is held by the host. The escape, end to end →
Sources: Hugging Face Security, Anatomy of a Frontier Lab Agent Intrusion (27 July 2026) · METR, independent investigation of the agents' behaviour (26 August 2026) · OpenAI, The Hugging Face incident and the road ahead · Wikipedia's consolidated timeline. The figures are theirs.









