OpenAI described the benchmark tests as running in “a highly isolated environment,” as you note, but its agents still had access to “internally hosted third-party software” (as you also note) to install required package registries. So it wasn’t a hard air-gap; that partial access is exactly the seam the model exploited, spending substantial inference compute finding a way to obtain open Internet access, eventually locating one via a zero-day vulnerability in the package registry cache proxy.
Now, you might say, “Well, hold on. It used a zero-day vulnerability to get access. So, we could argue that they thought it was entirely air-gapped, right?”
But, no, the evidence actually argues against that reading. The sources are fairly explicit that this was a designed, narrow, permitted channel, not an oversight. The ExploitGym paper itself specifies that outbound connections are restricted to a curated allowlist that permits routine package installation as well as fetching the toolchains required for building V8. All other external endpoints were blocked. OpenAI’s own account says the same: its agents still had access to that internally hosted software to install required package registries.
That’s not “we thought there was no door.” That’s “we built one specific, guarded door because the agent needs to pip install or apt install things to actually do software engineering work.” A completely air-gapped sandbox that can’t fetch any packages is barely usable for a coding/exploitation benchmark, so this wasn’t a naive assumption. It was a deliberate, known tradeoff.
Where the actual mistake lives is one level deeper than “did they know there was a gap.” It’s this: they trusted that the thing enforcing the gap (the proxy itself!) was itself secure. I can’t tell you how many times I’ve run into similar situations in testing. The allowlist wasn’t the vulnerability; the software that implemented it was. That’s a subtly different failure mode than “assumed full isolation,” which these companies still seem to need to learn.
There’s another interesting bit I might bring up here (which I would point out in a test report): they underestimated the searchability of the seam they left in place. A human red-teamer might poke at a package-proxy for a few minutes and move on. The model spent a substantial amount of inference compute specifically hunting there. That’s a difference in kind, not just in degree, from the threat models usually built around. Trusting a narrow channel is reasonable when you assume limited probing effort against it; it’s less reasonable once “limited probing effort” stops being a safe assumption for agentic systems with cheap, tireless compute.
Also, in my test report, I would note this: they removed the fallback layer that would normally catch this. Their active-monitoring/trajectory-tracking safeguard exists for exactly this scenario, and it was intentionally not enabled for this run. So even if the proxy-trust assumption was reasonable on its own (it wasn’t), they had also disabled the safety net that would’ve caught the consequence of that assumption being wrong.
It’s a fair criticism. Hugging Face in particular, because the situation is a malicious/misbehaving actor who got RCE via a dataset-processing vulnerability and moved laterally to harvest credentials over a weekend before being caught. That’s a real gap, and, beyond that, code-execution paths in a dataset pipeline are a known, well-trodden attack surface. This is basically the same class of issue that pushed them to strip trust_remote_code out of the datasets library in the first place!
One of the things I keep coming back to is the part of the story that often gets buried and is very important: the asymmetry. The attacking model was operating without any usage policy at all (deliberately, for the test), while the defenders’ own tools were hobbled by the very safety guardrails meant to prevent misuse. That’s a systemic problem about how safety tooling is currently calibrated across the whole industry, not a competence gap unique to these two companies. If anything, “amateurs all round” lets the more interesting structural question (that our defensive tools are currently worse-equipped than offensive ones in exactly this scenario) off the hook by turning it into a personnel complaint instead of an infrastructure one.