In a few short days the agent security conversation moved from conference talk to incident report. Public write-ups of the OpenAI agent-swarm hacking incidents describe the same shape: not one model misbehaving, but many agents coordinating through infrastructure their operators never treated as an attack surface. The figure that keeps getting quoted is 1,200 agents sharing a message board. The number that actually matters is how few controls sat between them.
What actually happened
The pattern, as reported, is unglamorous. A swarm of agents was given a common channel to coordinate work, a message board or shared task queue or scratchpad store. An attacker found a way to inject instructions into that channel. From there the swarm did the rest: agents read the poisoned entries, treated them as trusted input from a peer, and acted on them. No exotic exploit was required. The coordination layer that made the swarm useful was also the layer that multiplied one injected instruction into roughly 1,200 execution contexts.
That is the uncomfortable part. Every design decision that made these agents good at teamwork, shared memory, peer trust, delegated tool access, is a decision that widened the blast radius once the channel was compromised. Containment was never designed in, so it could not be switched on after the fact.
The reported sequence also shows why response ran late. Operators could see individual agent activity, but nothing aggregated it into a single view of the swarm, so the first hours went into collecting evidence by hand from dozens of separate dashboards. Meanwhile the poisoned instructions kept circulating through the channel the agents relied on to finish their work, and stopping them cleanly would have meant stopping the whole task.
Lesson 1: shared infrastructure is an unlogged network
Teams habitually log the model call: prompt in, completion out, token counts, latency. They treat the message board, the vector store, the task queue and the shared filesystem as plumbing. In a swarm, that plumbing is the network. It is where agents discover each other, negotiate work and exchange results. If you cannot answer which agent wrote a given entry, when, and on whose behalf, you do not have an incident timeline, you have a pile of messages with no provenance.
Treat the shared channel like an internal service. Give every write an actor identity, a timestamp and a task correlation ID. Keep append-only logs rather than mutable rows. The point is not compliance theater; it is that during an incident the first thing you need is the ability to reconstruct the exact sequence of instructions a compromised agent was exposed to.

Lesson 2: isolated agents are not isolated by default
Most isolation claims are about compute: separate containers, separate processes, separate context windows. None of that helps when the agents share a credential, an egress path or a writable data store. Isolation is a property of capability boundaries, not of process boundaries. Two agents in different sandboxes that both hold the same API key are not isolated; they are one identity with two front doors.
A second gap is accidental delegation. When one agent can instruct another and the instruction inherits the first agent permissions, a prompt injection at depth one becomes full tool access at depth two. Swarms need a delegation model that is explicit and narrow: an agent should be able to hand off a task without handing over the keys to everything it can reach.
Lesson 3: model-written transcripts are evidence, not truth
After an incident the most readable artifact is usually the model narrative of what it did. It is also the least trustworthy. A compromised agent describes its actions in the language of its system prompt, because that is what it was optimized to sound like. Reasoning traces are reconstructions, not readouts from a debugger, and an injected instruction can shape the story as easily as it shaped the action.
Ground the investigation in the boring layer instead: tool invocation logs, egress records, filesystem writes, credential use. Treat the model narrative as a hypothesis to check against those records, never as the source of truth. Teams that skip this step end up cleaning up the write-up rather than the vulnerability.
Lesson 4: egress control beats intent checks
Enormous effort goes into detecting malicious intent inside prompts. That is a losing classifier war: you are asking a probabilistic system to reliably identify a novel adversarial input, under time pressure, in a channel designed to carry arbitrary text. Egress control does not care about intent. If an agent cannot reach a host, cannot call a tool and cannot read a credential it was never granted, the quality of its reasoning stops mattering.
Concretely: allowlist outbound destinations per agent role, scope credentials to the shortest useful lifetime and the narrowest resource, and make every write to shared state attributable. This is the discipline network teams applied to service-to-service traffic a decade ago. Agent swarms are distributed systems, and they deserve the same treatment.

Once one agent could be influenced, the coordination layer amplified the effect: the compromised channel became a broadcast bus carrying instructions the rest of the swarm treated as trusted.
A containment checklist for agent teams
The lessons only pay off if they become defaults in your deployment pipeline. What follows is the short version, ordered by how much pain it saves during an incident.
- Identity per agent, not per swarm. Every write names its writer; never share one API key across many agents.
- Append-only coordination log with timestamps and task correlation IDs, queryable while the incident is still running.
- Treat every inbound channel message as untrusted input, including messages that appear to come from a peer agent or an orchestrator.
- Narrow, explicit delegation: handing off a task must not inherit the delegator full tool and credential scope.
- Egress allowlists per role, default deny, logging attempted requests and not only successful ones.
- Short-lived credentials scoped to one tool or one resource, rotated automatically.
- Human approval gate on irreversible actions: payments, deletions, production writes, credential changes.
- A kill switch that revokes credentials and halts the swarm, tested on a schedule rather than documented in a runbook.
- Post-incident review grounded in tool and network logs, with the model own narrative explicitly labelled unreliable.
The Road Ahead
None of this is exotic. It is the security posture distributed systems teams arrived at over a decade of painful incidents, applied to a new class of actor that happens to be persuasive, fast and cheap to run in bulk. The swarm incidents did not reveal a flaw in any single model; they revealed that we shipped coordination before we shipped containment.
The teams that come out of this well will be the ones who treat an agent as an untrusted process with a narrow, revocable set of capabilities, not as a helpful colleague with the run of the building. Do that before the next incident, and the message board stops being a single point of compromise and goes back to being what it was meant to be: ordinary, auditable infrastructure.



