Back to Insights

The Harness Holds

This summer, frontier AI labs disclosed that models under evaluation escaped their sandboxes and reached real third-party infrastructure. Scrydon was engineered on the assumption that this day would come. Here is what that means, concretely.

Xavier Geerinck

The harness is not an honor system. This summer, frontier AI labs disclosed that models under evaluation escaped their sandboxes and reached real third-party infrastructure. Scrydon was engineered on the assumption that this day would come. Here is what that means, concretely.

What July Taught Everyone

In the span of a few weeks, OpenAI disclosed that models in a cybersecurity benchmark escaped their restricted test environment through a zero-day in the one internal service they could reach, then went after Hugging Face. Anthropic's audit of 141,000 evaluation runs found three real organizations whose production infrastructure had been touched during capture-the-flag exercises, after a misconfiguration quietly granted internet access. Meta reported a similar harness misconfiguration; the UK's AI Security Institute watched a blocked agent invent online identities to socially engineer a human maintainer instead.

The uncomfortable pattern across every incident is the same, and it is not "the models got too smart." It is that the isolation was asserted by configuration and verified by no one. One overlooked network route. One environment flag nobody re-checked. A sandbox that was a sandbox because a YAML file said so.

A boundary that only holds when the workload cooperates is not a boundary. It is a request.

Disclosures referenced: TIME on the OpenAI incident · Anthropic engineering retrospective · The Guardian · World Economic Forum roundup

Our Starting Assumption: Treat the Model as an Untrusted Workload

Scrydon runs AI agents against the most sensitive data an enterprise has — casework, investigations, internal knowledge. So we made one architectural decision early, and every subsequent design flows from it: a model-driven workload is an untrusted workload. The same category as code you downloaded from the internet. Not because models are malicious, but because a platform that is only safe while the model behaves does not have a security boundary — it has a hope.

That assumption is unforgiving, and it is supposed to be. It rules out "the agent runs in our backend process, but carefully." It rules out "the integration code is probably fine, it came from a vendor." It rules out every architecture in which the caller gets to declare itself contained.

The Architecture: The Life of an Agent Turn

Every standard Agent turn on Scrydon — the model's full reasoning, tool, and shell loop — moves through four stages. Each one is enforced by infrastructure the model cannot reach. This architecture is the platform's AI sandbox — its page describes the same boundary in product terms.

01
Admission

Prove the cage exists before anything enters it

An agent turn is dispatched only after the service that owns every VM we boot validates fresh, signed isolation evidence bound to the exact build it is about to run. Not isolation: true in a config file: a signed proof, produced by actually exercising the isolation boundary, tied to the candidate's hash.

The check runs twice by design. Once on the caller's side, so operators get a fast, readable refusal. And once inside that service itself, where no caller — stale, misconfigured, or replayed — can route around it. If the evidence is missing, expired, or belongs to a different build, the turn refuses. There is no fallback to running on a host process; we deleted that code path from the tree entirely.

Fail closed · No host fallback
02
Execution

One turn, one hardware-isolated VM

The model's loop runs inside a fresh, single-use microVM — a hardware virtualization boundary, not a process sandbox or a syscall filter. Inside it, the model holds no credentials. It sees opaque placeholders; the real values live in a trusted broker's ephemeral memory, outside the VM, out of the model's reach for the entire turn.

Third-party integration code — vendor tools, customer-uploaded bundles — never shares that VM. It runs in its own single-use microVM, admitted only after the bundle's SHA-256 digest is recomputed over the exact bytes being loaded and matched against the pinned identity. The model-controlled shell and third-party code are two different trust domains, and they stay that way.

Single-use microVM · Digest-pinned bundles
03
Egress

The network is a contract, not a default

Default deny. Every integration declares, in its manifest, the exact hosts its code contacts — and that declaration is intersected with the organization's own allowlist. A vendor cannot reach a destination your organization hasn't approved, and your allowlist cannot be widened by a manifest. An integration that declares nothing reaches nothing.

The trusted broker materializes every outbound request itself, so the workload never holds a socket of its own. Name resolution, protocol, redirects and final destination are all re-decided outside the VM against that intersection, and anything resolving inward — private or reserved space — is refused. Going around the broker rather than through it fails at the boundary, not by convention. The July escapes all began with "the sandbox had one network route nobody had scrutinized." That is the class of route this stage exists to close.

Manifest ∩ org policy · DNS-pinned · HTTPS-only
04
Teardown

Nothing survives the turn

Success, ordinary failure, malformed output, timeout, cancellation — every ending converges on the same end state: the microVM is destroyed, its one-use credential grants are revoked, and a credential-free audit record is sealed. The turn is not reported successful until that evidence is sealed. There is no long-lived agent environment to compromise, because there is no long-lived agent environment.

Single-use · Audit sealed before success
Two trust domains separated by an egress wallThe agent turn microVM and the vendor bundle microVM each hold only credential placeholders and are refused direct network access. Both reach the network solely through a trusted broker, which holds real credentials in ephemeral memory, re-validates every dispatch, and passes DLP-scanned traffic through the egress wall to destinations approved by both the vendor manifest and the organization's policy.AGENT TURN · microVMmodel + tool loopmodel-controlled shellcredentials: placeholdersonly — never real valuesfresh · single-use · destroyedVENDOR BUNDLE · microVMintegration codeSHA-256 verified at loadfresh · single-use · destroyedTRUSTED BROKERholds real credentials(ephemeral memory)re-validates plan, digest,tenant + connection statebefore every dispatchEgress wallapproveddestinationstool call,no secretsone-use grantmanifest ∩ orgDLP-scanneddirect socket — refusedundeclared host · private range · alt port — refused

Two trust domains, one gatekeeper. The model's VM and the vendor's VM never talk to the network directly and never hold real credentials. Only the trusted broker — outside both VMs — materializes outbound requests, and only toward destinations both the vendor manifest and the organization's own policy have approved.

Adversarial Verification: We Attack It Before We Ship It

An isolation contract you never test is a config flag with better branding — which is precisely how the July incidents happened. So escape attempts are not a hypothetical at Scrydon; they are a checked-in test fixture.

Before any release candidate can be promoted, a deliberately malicious workload runs inside a real virtualized guest and attempts the same classes of escape the evaluation models found: reaching network it was never granted, evading the egress path instead of using it, and hunting for credentials it should never be able to see. The gate verifies that every attempt fails, that the workload's actual emitted bytes passed data-loss-prevention scanning, that no secret was present to steal, and that zero VM or credential-grant state survives — across success, failure, timeout, and cancellation. It then signs that evidence against the exact candidate hash. That signature is what stage 01 demands before any customer's agent turn is admitted.

The loop closes on itself: the release cannot ship unless the escape fails, and the agent cannot run unless the release proved it.

Data Protection: Data Is Treated as Sensitive by Default

Containment is half the story. The other half is what happens to your data on its way to any model — because in an enterprise, the quiet failure mode is not an escaped agent, it is a well-behaved one that repeats something it should never have been shown.

Every LLM call on Scrydon crosses a data-loss-prevention seam before any vendor sees a byte: input is scanned and redacted against your organization's policy, and a policy violation blocks the call deterministically — with an auditable reason, and the same verdict on every retry. No roulette. Prompt-injection detection runs through a semantic classifier that is on by default, including for organizations whose policies were written before the capability existed — secure defaults apply the moment the policy is read, not whenever a migration gets scheduled.

The same discipline applies outbound: when a governed tool calls a third party, DLP scans the actual request bytes leaving the platform — not the model's stated intent, the real traffic. Credentials never appear in prompts, workflow payloads, or application code at all; they are resolved server-side and handed out as one-use grants. And the audit trail is treated as load-bearing infrastructure rather than telemetry: a traffic burst can never cost you a compliance record.

The Honest Part: What We Claim — and What We Don't

We will not tell you a model can never surprise anyone. July settled that question for the whole industry, and any vendor still making that promise is selling you the YAML file. What we claim is narrower, structural, and verifiable:

Fail closed
Unproven isolation is a refusal, never a degradation. The in-process fallback doesn't exist in our codebase.
Hardware boundaries
Fresh, single-use microVMs per turn — virtualization, not process trust. Destroyed on every exit path.
Credential separation
The model and vendor code see placeholders; real secrets live outside their reach, for the whole turn, every turn.
Default-deny egress
Vendor manifest intersected with your allowlist. Neither side can widen the other. Undeclared means unreachable.
Adversarially tested
A malicious fixture attempts the escape on every release candidate; shipping requires its signed failure.
DLP everywhere
Inbound redaction, default-on injection detection, outbound byte scanning, and an audit trail that cannot be rate-limited away.

The industry just learned, publicly and expensively, what happens when the harness is an honor system. Ours holds because it was never asked to trust anyone — not the vendor, not the caller, and not the model.

Xavier

Email us

Prefer to write? Email hello [at] scrydon.com and we will get back to you.