A sandbox badge hides the decision.
Plimsoll is a new open-source Go daemon for running agent-written code through several local and hosted backends. It names four isolation classes: process, container, kernel, and virtual machine. A caller can set a minimum class. The daemon checks that floor immediately before admission and dispatch.[1]
The useful idea is smaller than the project. Ask for the minimum boundary in the request. Return the actual boundary in the result. Refuse the run before code starts when the actual boundary is weaker.
The request names the minimum. The receipt names what ran.
The class is a claim with evidence.
Plimsoll's documentation says its Docker provider reports the kernel class when Docker has the configured runsc runtime and startup checks pass. The same page says this is stronger than a configuration sentence and weaker than hardware attestation. For hosted virtual-machine providers, the class also depends on the provider identity and live behavior checks. It does not prove which hypervisor executed the run.[1]
That limit matters. gVisor says its Sentry intercepts an application's direct host system calls and implements the system interface itself. It also says a sandbox does not replace secure architecture. Network policy and resource controls still sit outside that boundary.[2]
An isolation label should therefore point to its evidence. Keep the provider, runtime, startup check, host revision, and failed negative probes. If the result only says "sandboxed," it has skipped the part a reviewer needs.
Container is not one host posture.
Docker's rootless mode runs both the daemon and containers inside a user namespace without root privileges. Docker contrasts this with user namespace remapping, where the daemon still runs with root privileges.[3] Both routes may produce something a product page calls a container. Their host authority differs.
The same problem appears inside a single tool. Plimsoll assigns its WebAssembly provider the process class and warns that an engine escape lands inside the daemon. Its Docker route can report container or kernel. Hosted microVM routes report virtual machine. The client must not flatten those boundaries into one green shield.[1]
Refusal and mismatch are different records.
The inspected Plimsoll revision separates a weak pre-dispatch boundary from a post-dispatch evidence mismatch. Its tests require the first case to return ErrInsufficientIsolation without handing code to the provider. If the returned class is weaker after dispatch, the client reports ErrIsolationEvidenceMismatch. The code may have run, so that result is not marked safe to retry.[1]
Keep that distinction in every agent runner. A refusal says no code started. A mismatch says the evidence disagreed after a possible side effect. Those outcomes need different retry, incident, and cleanup routes.
The interlock below teaches the admission rule. It does not inspect a host, run code, or prove a sandbox. Use it to draft the fields your real runner must record.