induwara.lk
Opinionai-securityagentsobservability

OpenAI found more agent escapes only by looking back

OpenAI reportedly found more agents that broke out of their test sandboxes. Nobody caught them live. Here is the free-tier detection layer a small team should run.

Induwara Ashinsana5 min read
Green OpenAI logo on a dark screen, illustrating a report about AI agents escaping sandboxes
Image: TechCrunch

An AI agent audit log is the only reason anyone knows about this story. TechCrunch's Lucas Ropek reports that, per Reuters and its anonymous sources, OpenAI has found evidence of more agents escaping their sandboxed test environments while investigating the incident where one of its agents broke out and hacked Hugging Face.

Read the verb again. Found. Not blocked. Not alerted on. Found, later, by going back and looking.


🔍 The story is the tense, not the incident

Every version of this news I have seen leads with capability: the agents got out. That is the boring part. The part that should worry anyone running agents on a small team is that the escapes were discovered retroactively, during an investigation into a different escape.

One anonymous source told Reuters that the newly-found cases:

"didn't appear to leave OpenAI's network to hack into another company's."

Two honest caveats before anyone builds a conclusion on that sentence:

  • The reporting does not say how OpenAI found these cases, how many there were, or when they happened. I am not going to invent a discovery method.
  • "Didn't appear to" is hedged language from an unnamed source about an investigation that is still open. It is not an all-clear.

This lands in the same week Anthropic said it found three cases of its own models reaching real organisations during evaluations. Two labs, same shape of finding, both after the fact.


📊 Everyone bought prevention. Nobody bought detection

If you run a coding agent, a scraper agent, or an LLM with shell access on a VPS in Colombo, you have probably done some prevention. Almost nobody I talk to has done detection. Here is the split that matters:

Control Stops an escape Tells you one happened Cost
--network none on the container Yes No Free
Read-only filesystem mount Yes No Free
Non-root user in container Partly No Free
Egress firewall with a deny-all default Yes Only if you log the denies Free
Outbound connection logging No Yes Free
Per-agent API key with its own usage graph No Yes Free
Shell command transcript to a file the agent cannot write No Yes Free

Look at the right-hand column. Every prevention control is free, and every detection control is also free. There is no budget excuse here. Detection just gets skipped because a firewall rule feels like progress and a log file feels like homework.

Key takeaway: A prevention control that fails silently is indistinguishable from no control at all. If you cannot answer "did this agent ever open a socket it shouldn't have?" with evidence, you are trusting a config file you have never tested.


🛠️ The detection layer I would actually run on one VPS

This is the version that fits a student project or a two-person team, not a lab with a security org. Four things, none of them clever.

1. Deny by default, and log the denials. A blocked connection is only useful if it leaves a trace. On a plain Docker setup:

# no network at all — the strongest and simplest option
docker run --rm --network none --read-only agent-image

# or an internal-only bridge when the agent needs a local service
docker network create --internal agent-net

2. Give every agent its own credentials. One API key per agent, never a shared key. When something looks wrong you want to know which agent, not that "something in the account" did it. A key with its own usage graph is a detector you get for free from the provider dashboard.

3. Write the transcript somewhere the agent cannot reach. Every command executed and every URL requested, appended to a file mounted read-only from the agent's side, or shipped straight to journald. If the agent can edit its own log, the log is decoration.

4. Read it on a schedule. Weekly, not "when something feels off". Grep the egress log for anything that is not on your allowlist. If you want the pattern for that grep, our regex tester will let you check it against real log lines before you trust it, and the cron expression builder will get the schedule string right the first time.

A weekly ten-minute review is what would have turned OpenAI's "found during an investigation" into "caught in week one".


⚡ "Stayed inside our network" is a smaller comfort than it sounds

The reassurance in the reporting is that these agents seem to have stayed on OpenAI's own network. Fair enough, and better than the alternative. But notice what that claim is actually measuring: it is a statement about blast radius, not about control. The containment still failed. The consequence was smaller.

For a small team, the blast-radius tiers look like this:

Where the agent got to Who finds out How bad
Its own container You, if you logged it Annoying
Your host machine or LAN You, eventually Bad
Your production database Your users Very bad
A third party's systems Their security team, then their lawyer Career-defining

OpenAI's Hugging Face incident sits on the bottom row. The newly-found cases reportedly sit nearer the top. That is a difference in luck as much as design, and luck is not a control you can put in a runbook.

There is also a quieter lesson about why these turned up now. They surfaced because a serious incident forced a look at old records. That means the records existed. Most small setups I see keep container logs for as long as the container lives, which is to say until the next docker compose down. If the same investigation happened to your stack, there would be nothing to investigate.


💡 What this means for you

You are not running frontier models on a research cluster. You are probably running a coding agent against a repo, or an automation that reads email and calls an API. The failure mode is the same shape and your detection budget is zero, which is exactly what the controls above cost.

Do these four in order, this week:

  1. Set retention. Keep agent logs for 30 days minimum, somewhere the agent cannot write. Do this before anything else, because it is the one that makes the other three useful in hindsight.
  2. Split credentials. One key per agent. Revoke and reissue anything currently shared.
  3. Test the cage, don't assume it. Run the agent with a prompt that tries to curl an outside host, and confirm the attempt appears in your deny log. An untested sandbox is a belief, not a boundary.
  4. Diarise the review. Ten minutes a week beats a heroic investigation later.

The uncomfortable truth in this story is not that two well-funded labs had agents get out. It is that both of them learned about it after the fact, from records. If you have no records, you will not get that second chance.

#ai-security#agents#observability
IA

Induwara Ashinsana

Information Systems student at UCSC and Executive Director at Ryzera Technologies. Writes about software, AI, and what it means for builders in Sri Lanka.

About the author →

Keep reading