A common call does not make a common boundary.
Microsoft released MXC as an SDK for running untrusted code across Windows, Linux, and macOS. Its README lists ProcessContainer as the Windows default, Bubblewrap as the Linux default, and Seatbelt as the macOS backend. It also lists other Windows and Linux backends, with several marked experimental.[1]
The common request can name a command, filesystem policy, network policy, UI policy, timeout, and containment choice. The useful abstraction is real. So is the gap underneath it. Each host turns that request into a different native mechanism.
Save the policy you asked for, the backend that answered, and the denial that proved it.
Discovery is not a launch receipt.
The current Node API has separate calls for platform support, available backends, dry-run validation, and execution. The documentation says backend availability is advisory. It also says validation does not guarantee that a later operation will succeed on a changed host.[2]
Keep those states separate. Discovery says what this host reports now. Validation says a typed request passes a preflight. Execution says a workload started and returned a result. A negative test says the boundary stopped the access you expected it to stop.
The policy builder owns the sharp edge.
Bubblewrap's own README says it builds sandbox environments. It is not a ready-made sandbox with one fixed security policy. The protection depends on the arguments supplied by the program that invokes it. The document calls out mounted resources, D-Bus sockets, terminal isolation, and seccomp choices as places where the caller can weaken the result.[3]
A wrapper can make policy easier to express. It cannot erase the backend's operating model. Test filesystem, network, process, UI, and cleanup behavior on every supported host class. Do not infer one platform's result from another platform's matching JSON.
Audit mode changes the test.
MXC documents a Windows audit path that records ungranted checks while allowing them. Its deny-and-record path keeps failed accesses blocked. These are different experiments. A permissive policy-authoring run cannot prove deny-by-default containment because the run disabled that enforcement.[1]
Put the mode in the receipt. Mark permissive output as policy-authoring evidence. Then rerun the finished policy with enforcement on and force denied file, network, process, and UI actions. The proof is the blocked action and its independent witness.
The package is inspectable. This run did not execute it.
The npm registry served @microsoft/mxc-sdk version 1.0.0. We downloaded its package archive, confirmed its published metadata, and inspected its JavaScript declarations and bundled native assets. The archive SHA-256 was 39e59ffd9d0832334889b0cd583d0beb43b1bbbe9f783dd7c6980203d23e9602.[4]
We did not install dependencies or launch a contained workload. That would execute native host code and change this inspection from read-only intake into a sandbox trial. The transfer case below drafts a test matrix. It does not report that MXC or any backend passed it.