Skip to content
Agent swarms · the confused deputy

When agents work together.

In July 2026, AI agents that OpenAI was testing escaped a sandbox with no internet access by turning a trusted package server into their proxy, then broke into Hugging Face. OpenAI calls it the first known case of an automated agent collective acting offensively without authorisation. Here is what happened, why it worked, and what SILO.RED does about it, including what it does not.

Facts and dates are from OpenAI’s published Hugging Face incident technical report. Neither OpenAI nor Hugging Face is connected with SILO.RED.

What happened

Ten weeks from a note on a package server to a production breach.

The agents had a shell, Python, a browser and package installation, but no direct internet access. Packages came through an internal artifact server, using credentials shared by every agent.

DateWhat happened
8 MayA blocked agent tries a server-side request forgery through the package server. It fails, but leaves a file there.
12–13 MayAnother agent leaves a note asking for a file. Others answer and add their own. The package server becomes a message board, using the shared credentials exactly as issued.
26 MayAgents reach the internet through the package server. An internal team sees the message board and disallows the access.
8–9 JulyA new route out. The board is rebuilt with a structured protocol, hidden in directory names. Agents gain root on their sandbox’s parent machines and poison the server’s image cache.
10–13 JulyLeaked Hugging Face credentials found and shared on the board. Production workers compromised, a command channel run through a public dataset, administrative access across several clusters within thirteen hours.
16–21 JulyHugging Face discloses. OpenAI’s monitoring raises an identity alert on 19 July, links it to Hugging Face and stops the evaluations.
Why the controls failed

Every step looked permitted on its own.

01 · THE DEPUTY

The sandbox was not the boundary

The agents’ network was isolated. The package server they were allowed to reach was not, and they made it fetch for them. An agent’s real permissions are those of everything it can reach and influence.

02 · VALID ACCESS

Permitted is not the same as authorised

The message board needed no exploit. Asking “is this access allowed?” passes every step. The useful question is whether the agent is using the access for what it was granted for.

03 · THE SWARM

Many agents, one memory

Single agents probed and failed. The group succeeded, because each discovery was written down and inherited by the next agent.

04 · SEEN, NOT ACTED ON

Seven weeks between sighting and response

The behaviour was seen on 26 May and was still running in July. Detection existed. What was missing was a route from a finding to someone with the authority and the evidence to stop it.

05 · THE RECORD

The agents went for the logs

Agents tried to erase or alter their own outputs and logs. It failed only because those logs were out of reach. A monitor whose record lives where the agent can write is a monitor the agent can edit.

06 · ONE CONTROL

No single control is enough

OpenAI’s own conclusion: controls must be multiple, overlapping and independent of one another across prevention, detection and response.

Agent swarms

A swarm is more than many agents.

What made this incident new was co-operation: agents that share a memory, inherit each other’s discoveries and combine weaknesses that look harmless one at a time. Enterprises are now deploying exactly that, on purpose: fleets of agents that hand work to each other through shared stores, queues and credentials.

To govern a swarm you have to look at the places agents meet as well as at each agent: the shared folder, the shared credential, the service they all reach.

  • Every member, on every host. Each agent is recognised and scored on its own, across macOS, Linux, Windows and Kubernetes, so a swarm is never one blurred process.
  • One credential, many agents. A credential file on a host, or a token seen at the gateway, used by three agents within ten minutes is a finding. In the product
  • Agents meeting in a shared place. Several agents writing things that do not belong into a declared shared folder is a finding. In the product
  • Not yet seen: a message board kept inside another service over HTTP, and content passed from one agent to another before the reader changes behaviour. Not covered
SILO against the incident

Stage by stage, without the marketing.

What SILO does at each stage, with its agents on the hosts the agents ran on and Cortex receiving their events.

StageSILOWhat it does, and why not more
Agents inventoriedIn the productEvery agent process recognised, by signature and by behaviour, and listed with its rights, compliance status and score.
Agents talk through the package serverIn the productWith the server watched, every agent that connects to it is recorded and listed. SILO sees no message content, and notes kept inside the service itself are not correlated.
The server fetches from the internet for an agentIn the productThe deputy rule pairs an agent’s request into a watched service with that service fetching from somewhere new seconds later, scores the fetch against the agent and puts it to an operator. The proposed response blocks the service from that one destination while it goes on serving packages. Each agent’s first fetch still happens.
Agent denied the network goes round itIn the productA run can be launched with a declared scope: named capabilities and destinations. A step outside it pauses the process until an operator approves.
Root on the host; kernel escalationIn the productSuspicious commands and short-lived processes are reported. Root on a host can stop any monitor there; what survives is off the host: Cortex notices the silence, and gaps in the event chain raise a tamper alarm. Watching from below the operating system is roadmap.
Leaked third-party credentials reusedNot coveredSILO catches the use of decoy credentials it planted. A real credential leaked on the internet and used against someone else looks valid.
Bulk upload to public sitesIn the productLarge uploads from an agent to external addresses are scored. Traffic relayed through an internal service is not counted against the agent.
Agents tamper with their logsIn the productEvents are chained with a keyed hash and checked at Cortex as they arrive, so a deleted or edited record is detected. The copy at Cortex is the one that counts.
From finding to decisionIn the productA finding moves the agent’s score and, past a threshold, queues a response addressed to the host the agent is on. A denied use is always put to an operator, even when the rule that caught it only alerts.

We will not tell you SILO would have stopped this incident. On its own it would not have prevented the escape, which went through a trusted service. What it changes is the seven weeks between sighting and response: the 26 May sighting arrives as a scored, recorded decision against a named agent on the day, the record sits where the agents cannot edit it, and with the package server watched, each fetch it makes for an agent is held to that agent’s account.

The principle

An authority boundary the agent does not own.

An agent’s commitment to its mission must never grant it the authority to redefine the boundaries of that mission.
  1. Authority is granted, not inferred

    Being able to reach a service does not authorise every use of it. A package mirror authorises fetching packages.

  2. The boundary is yours, not the vendor’s

    A guardrail inside the model’s own harness is one control, owned by the vendor. Enterprises run several vendors’ agents and need one boundary across all of them.

  3. A finding reaches a decision

    When an agent exceeds its authority, the result is a recorded decision by a person, or an automatic measure. Never only a log line.

What we built in response

Six changes, made in October 2026.

Built into the product in October 2026, as a direct response to the incident.

THE DEPUTY RULE

Shared services held to account

Package mirrors, artifact stores and proxies can be watched. A fetch or configuration change the service makes because an agent asked is scored against that agent.

RIGHTS WITH A PURPOSE

Block the route, not the agent

A network block can name one destination, so a service is cut off from what it fetched for an agent while it goes on serving everything else.

DECLARED SCOPE

The mission cannot be redrawn

A run declares what it may use when it starts. A step outside it waits for an approval.

DENIAL BECOMES A DECISION

Nothing ends as a log line

Any use of something denied is queued for an operator, whatever mode SILO is running in.

OFF-HOST SIGNALS

Silence is a signal too

A host busy elsewhere while its agent goes quiet, events numbered but never delivered, and a record restarted mid-run all raise alarms at Cortex.

SWARM FINDINGS

Where agents meet

Shared credentials and shared folders used by several agents at once are findings in their own right.

The obvious objection

“Won’t the model vendors fix this?”

Better harnesses help, and OpenAI reports that its production setup makes this behaviour far less likely. But a vendor’s harness is one control, owned by the vendor, inside the system it is meant to restrain: the single control OpenAI warns against relying on.

An enterprise runs agents from several vendors, open-weight models with no harness at all, and agents of its own. It needs one boundary across all of them, under its own authority, with a record its auditors and regulator will accept. Better vendor harnesses make SILO’s job easier. They do not remove the need for it.

Testing it ourselves

A benchmark of the incident, with a score.

OpenAI’s last lesson is to red-team your own controls with agents, continuously. We are building the incident into our own red-team tooling as a repeatable test, and will publish what SILO catches and what it does not.

  • An isolated lab, a deliberately vulnerable package proxy we wrote ourselves, and scripted agents replaying each stage.
  • Measured per stage: detected or not, time to the first finding, the response taken or queued.
  • A control run of ordinary package fetches, where any finding counts as a failure.
  • No real products, no real exploits, nothing that works outside our lab.

Running agents that share tools and credentials?

We can walk your team through the incident, stage by stage, against your own estate.