Contents
  1. Part I — The execution contract
    1. Bounded execution, not safe code
      1. The contract
      2. A small boundary walk
    2. From proposal to workload
      1. The broker’s responsibility
  2. Part II — Why boundaries accumulated
    1. Protection mechanisms in parallel
  3. Part III — Choose the execution boundary
    1. What a process isolates
      1. Memory changes; handles survive
      2. Layered process confinement
    2. Containers restrict the view
      1. Bootstrap belongs to the TCB
    3. Guest kernels and microVMs
    4. Compose controls for the workload
      1. Independence matters
  4. Part IV — Control what the workload reaches
    1. Filesystem views and exports
      1. Trusted path handling
    2. Network paths and egress
      1. Mediated outbound authority
      2. The destination can change
    3. Identity, authority, and capabilities
      1. Broker the operation
      2. Lifecycle of authority
  5. Part V — Bound time, state, and tenants
    1. Independent resource ceilings
      1. A resource ledger
      2. Name the semantics
    2. Lifecycle, snapshots, and external effects
      1. What a snapshot preserves
      2. Two recovery boundaries
      3. Recover effects explicitly
    3. Tenant separation and warm reuse
      1. Warm-reuse responsibilities
      2. Reuse is not reset
  6. Part VI — Escape and assurance
    1. Contain failure beyond the wall
      1. Different boundaries, different paths
    2. Evidence for a bounded claim
      1. Requirement-to-check matrix
      2. Exercise the rule, not its presence
  7. Check understanding
  8. Open questions
  9. Selected talks
  10. References
  11. Talk library
← All topics

Sandboxes and Execution Isolation

A sandbox does not prove that code is safe. It creates an enforceable contract around one execution: what the workload may observe, consume, and affect; which components enforce those limits; and what could happen if an enforcement layer fails. This chapter develops that contract from ordinary processes through containers, application kernels, virtual machines, and capability-oriented runtimes. It then applies the same reasoning to storage, networking, identity, secrets, resource ceilings, lifecycle, tenant reuse, escape containment, and verification.

Part I — The execution contract

Bounded execution, not safe code

A sandbox is a controlled execution environment that restricts an untrusted workload’s permissions and access to resources. “Untrusted” describes the assumptions applied to the workload, not a judgment about its author: generated code, downloaded dependencies, user programs, and ordinary buggy software can all receive the same treatment. The purpose is to limit the blast radius—the assets and operations reachable if the workload behaves unexpectedly or maliciously. This chapter begins where AI Security’s isolation boundary leaves off: with the mechanisms that make those limits real.

The contract

A useful sandbox contract names five things. First are the protected assets: host files, credentials, neighboring tenants, internal services, and shared capacity. Second are permitted effects, such as reading one input, writing scratch files, and exporting one result. Third is the trust boundary, where identities, permissions, or validation assumptions change. Fourth is the trusted computing base (TCB): every hardware, firmware, and software component whose correct operation is required to enforce the policy. Finally come the residual assumptions, including kernel, runtime, virtual-machine monitor, management-plane, and hardware defects that could defeat the boundary. A mount, broker, proxy, credential, or export path changes this contract even if the product still calls the environment a sandbox.

Write the contract as enforceable claims, not a technology label.
QuestionExample answerRequired evidence
What may enter?One immutable program image and one read-only inputArtifact identity and effective mount configuration
What may leave?One selected artifact; no direct network trafficExport record and denied-egress test
What may be consumed?Bounded CPU, memory, processes, storage, output, and elapsed timeEffective limits plus exhaustion tests
Whose authority applies?A tenant-bound workload identity with one brokered operationAuthorization decision at the protected service
What survives?Exported artifact and minimal audit receipt; scratch is destroyedCollection, teardown, and retention evidence
What if isolation fails?No standing credentials; restricted host and network reachAttack-path review and incident drill

A small boundary walk

Consider a generated program that transforms a supplied CSV into a summary. Its ordinary success path is small, but its possible reach is not: package installation can execute code before the intended command, writable host mounts change real files, inherited credentials enable remote calls, and unlimited output or child processes consume shared capacity. The sandbox contract is the difference between “run this program” and “read this identified input, execute within these limits, contact no destination, and export only this identified result.”

From proposal to workload

A language model does not execute a tool merely by producing its name and arguments. It proposes an invocation; application code interprets that proposal and performs the effect. That distinction creates an enforcement point. Structured Outputs’ controlled dispatcher validates and resolves an accepted request, but an execution service must still create the environment that will run the workload. The surrounding agent harness or runtime coordinates model access, tools, task state, cancellation, and verification; its broader scheduling and recovery responsibilities belong in Agent Runtimes and Harness Engineering.

The broker’s responsibility

The security-sensitive mediator is the execution broker or supervisor. Given an authenticated and authorized request, it selects an immutable workload artifact, assigns the workload and tenant identities, attaches filesystem and network policy, applies resource limits, creates the environment, streams bounded observations, handles cancellation, collects declared outputs, and destroys resources it owns. The Open Container Initiative lifecycle usefully separates create from start: configured properties must be applied before the user program runs, and failure to apply them must prevent creation rather than silently produce a weaker environment. Deletion removes resources created for the container without deleting unrelated resources supplied to it.

This division prevents three claims from collapsing into one. Schema validity says the request has an accepted representation. Authorization says the requester may ask for the named operation under current policy. Isolation says the resulting workload can exercise only the attached powers. A successful check at one boundary cannot stand in for the next.

Part II — Why boundaries accumulated

Protection mechanisms in parallel

Computer protection has several targets. Machine virtualization separates computing environments on shared hardware; privilege mechanisms constrain which procedures may enter more powerful code.

Access control asks whether a component may reach an object. Information confinement also asks where legitimately received data can leave or remain after execution.

Delegated administration and object-specific capabilities limit different kinds of authority. Neither follows automatically from a separate address space or a restricted pathname root.

The chronology follows these complementary lineages. A modern deployment can combine process policy, machine separation, explicit interfaces and egress enforcement because each controls different paths.

Complementary protection mechanisms

  1. July 1968 — availabilityCP/67Machine virtualization: Separate computing environments become available to System/360 Model 67 users.Sources & context

    Contributors: IBM Cambridge Scientific Center

    What changed: Availability followed completion in fall 1967 and an earlier modified Model 40 experiment. This lineage separates computing environments on shared hardware.

  2. October 1971 — paperMultics protection ringsProcedure privilege: Controlled gates mediate entry into more privileged procedures.Sources & context

    Contributors: Schroeder and Saltzer

    What changed: The paper describes ordered protection domains within a process. Procedure-level privilege control is a different boundary from a container or virtual machine.

  3. August 2, 1972 — announcementVM/370Machine virtualization: IBM announces its virtual-machine product for System/370.Sources & context

    Contributors: IBM

    What changed: This announcement belongs to the machine-virtualization lineage; it is not the invention date of separate virtual computing environments.

  4. October 1973 — paperLampson’s confinement paperInformation confinement: Protecting access does not prevent leakage of legitimately received information.Sources & context

    Contributors: Lampson

    What changed: A Note on the Confinement Problem examines retained memory, files, messages, accounting information and shared-system behavior. It extends the protection question to information exits and state between calls.

  5. May 2000 — paperFreeBSD jailsDelegated administration: Delegate familiar UNIX administration while bounding host and neighbor access.Sources & context

    Contributors: Kamp and Watson

    What changed: Jails: Confining the Omnipotent Root describes the implementation included in FreeBSD 4.0-RELEASE. Unlike pathname-only confinement, jails also restrict privileged operations and process and networking scope.

  6. 2003 — paperXenGuest interfaces: A modified guest-machine interface preserves unchanged application binaries.Sources & context

    Contributors: Xen paper team

    What changed: Xen and the Art of Virtualization addresses sharing commodity servers among mutually untrusting users. Guest operating systems require modification, and whole operating systems retain initialization and resource costs beyond ordinary processes.

  7. August 11, 2010 — presentationCapsicumObject capabilities: Remove global namespaces and delegate descriptors with narrowed rights.Sources & context

    Contributors: Watson, Anderson, Laurie and Kennaway

    What changed: Presented at USENIX Security, Capsicum adapts object-specific capabilities to UNIX. Its prototype also closes non-delegated descriptors and scrubs process state because entering capability mode alone does not remove previously acquired authority.

  8. November 26, 2018 — announcementFirecrackerReduced device models: A reduced device model brings KVM microVMs to short-lived serverless workloads.Sources & context

    Contributors: AWS

    What changed: The announcement describes a design derived from crosvm and already powering Lambda and Fargate. It retains a guest kernel while narrowing the virtual-machine monitor’s supported surface.

Separate machines, controlled privilege, confinement and explicit authority address different protection goals rather than replace one another. Milestone spacing is not to scale.

Part III — Choose the execution boundary

What a process isolates

An ordinary process normally has its own virtual address space: its writes do not directly become writes into another process’s private memory. That is a useful boundary, but not an authority boundary. A system call enters the operating-system kernel to request privileged work such as opening a file, creating a process, or sending network traffic. The kernel’s decision depends on credentials, namespaces, handles, and policy—not on the fact that the caller has private memory. Schroeder and Saltzer's Multics protection-rings paper (October 1971) addressed procedure privileges within a process: controlled gates permitted entry to more privileged rings. This was a different boundary from separating machines.

Memory changes; handles survive

Process creation preserves more authority than its visual separation suggests. On Linux, fork gives the child a separate memory space initialized from the parent, but inherited file descriptors refer to the same underlying open-file descriptions. execve replaces the running program and initializes new program memory, yet normally retains real identities, supplementary groups, the explicitly supplied environment, and descriptors not marked close-on-exec. A process can therefore inherit a database socket, writable file, secret-bearing environment value, or management channel even after its code and memory image change.

Process creation and confinement controls answer different questions.
PropertyCreated or inherited?Separate control
Virtual address spaceSeparate after fork; replaced by execveMemory mappings and debugger/trace policy
User and group authorityLargely inheritedDedicated identity, privilege drop, user namespace
Open descriptorsNormally inheritedClose-on-exec and explicit descriptor allowlist
Filesystem reachNot removed by process creationMount policy, Landlock, AppArmor, brokered access
Kernel interfaceShared kernelseccomp and reduced Linux capabilities
Resource useConsumes shared host capacityrlimits, cgroups, deadlines, quotas

Layered process confinement

Additional controls narrow different channels. Linux capabilities divide powers historically associated with root; removing one does not remove ordinary permissions or authority held through open objects. Landlock can add unprivileged restrictions over resource objects for a thread and its descendants, but files opened before confinement remain usable. AppArmor applies loaded profiles to tasks; enabling the module without loading a profile leaves tasks unconfined by AppArmor. Seccomp filters syscall numbers and argument values, but cannot dereference a pointer to inspect a pathname, and its own documentation distinguishes interface reduction from a complete sandbox. Activation order and inherited authority are therefore part of the contract.

Containers restrict the view

A container is a group of ordinary operating-system processes given restricted views and policies. Linux namespaces can separate mount points, process identifiers, network stacks, user and group IDs, and other resource views. Cgroups organize processes hierarchically and control consumption. Images provide executable files and configuration. None of these facts gives the container a private kernel: its processes still invoke the host kernel. This is why an image is packaging, while the effective namespace, mount, credential, syscall, mandatory-access, and resource policies determine isolation. FreeBSD jails, described by Kamp and Watson in 2000, delegated familiar UNIX administration while bounding a tenant's host and neighbor reach.

The filesystem view is assembled, not copied by definition. A bind mount exposes a host path inside the container and is writable by default in Docker; read-only mode blocks writes through that mount but is not a snapshot and does not prove that another path cannot reach the same storage. The Docker daemon is a separate management boundary: a trusted client can ask a privileged daemon to mount the host root into a container. Giving hostile code the host daemon socket can therefore defeat a surrounding container boundary without exploiting the kernel. Rootless mode reduces this management authority by running both daemon and containers without host root privileges, although mounts, networking, kernel interfaces, and ordinary user permissions still require review. By itself, chroot changes pathname resolution without clearing the current directory or open descriptors; it is not a complete sandbox.

Bootstrap belongs to the TCB

Controls also fail during trusted setup. A 2024 runc advisory described descriptor leaks and working-directory validation failures that could leave a container process able to access the host filesystem. The defect lay in runtime bootstrap, not in a deliberately permitted workload operation. The lesson is broader than that patched version: container isolation depends on the runtime and its initialization path as well as the final process policy.

Containers remain valuable when compatibility, startup behavior, density, and ordinary Linux tooling matter. Mature designs layer namespaces with capabilities, seccomp, mandatory-access controls, rootless management where feasible, immutable artifact identity, explicit mounts, host-enforced cgroups, and network policy. The defensible claim is not “containers are safe” or “containers are unsafe,” but that a named configuration constrains named paths while retaining a shared-kernel assumption.

Guest kernels and microVMs

A virtual machine places a guest operating system behind a hypervisor or virtual-machine monitor (VMM). The guest receives virtual CPUs, memory, storage, and networking; the VMM and host mediate access to real resources. Compromising the guest kernel need not grant authority over the host kernel. This removes the shared host-kernel interface from the workload’s direct path, but makes the VMM, the virtualization layer (such as Linux’s Kernel-based Virtual Machine, or KVM), virtual-device backends, management interfaces, host networking and storage, firmware, and hardware part of the security story. IBM's CP/67 made separate computing environments available in July 1968; VM/370 followed as a product announcement in August 1972.

A microVM narrows the monitor and device model for workloads that need a guest kernel without the breadth of a general-purpose machine emulator. “Micro” describes the monitor’s footprint and supported surface, not necessarily the guest program. Smaller, memory-safe VMM implementations and separately jailed device backends can reduce exploitable code and limit what one compromised backend can reach. They do not make escape impossible. Firecracker, announced by AWS in November 2018 for short-lived serverless workloads, retains a guest kernel behind a reduced device model. Its production guidance leaves guest-traffic filtering to the host and recommends explicit host firewall policy, hardware maintenance, and one tenant’s workload per Firecracker process.

The performance tradeoff depends on the path. Guest computation can remain in a hardware virtualization context, while disk, network, and other device operations require host-side servicing through VM exits and resumes. Virtio provides virtualization-aware device interfaces, but frequent boundary crossings still matter. A CPU-heavy transformation and an import-heavy or I/O-heavy build can therefore experience different costs. Likewise, memory reclamation, GPU access, and snapshot support depend on the concrete VMM, guest, drivers, and host arrangement rather than on the word microVM. The Xen paper (2003) explored another interface tradeoff: modified guest operating systems with unchanged application binaries.

Integrations can deliberately weaken separation. NIST’s virtualization guidance calls out shared disks, clipboards, guest tools, and management channels. Firecracker’s virtio-pmem documentation separately warns that sharing one backing file across VMs can create a cross-VM side channel and that flush-heavy guests can force host I/O, motivating operation and bandwidth limits. The boundary must therefore describe virtual devices and host resources, not merely draw a box around the guest kernel.

Compose controls for the workload

Choose an isolation boundary from the workload outward. Ask what code must run, which operating-system interfaces it needs, whether it installs packages or starts subprocesses, which devices it requires, what an escape would expose, how quickly environments must become task-ready, and who can patch and operate the trusted components. Generated tool functions with a narrow host interface may fit an isolate or WebAssembly runtime. Native builds needing a broad Linux environment may require a container or microVM. One product can use different boundaries for different steps. An application kernel offers another boundary. In gVisor, the Sentry services application system calls in user space through a restricted host interface; the Gofer separately mediates filesystem access. Unlike seccomp, it implements calls rather than just filtering them. Unlike a VM, it uses a user-space application kernel, not a separate guest kernel. The host kernel remains trusted.

Follow the servicing path, not the number of boxes. These alternative arrangements change the exposed interface while retaining trusted host components. The microVM device path is not the path of every guest instruction; KVM supports hardware-assisted execution. Resource limits and network policy require separate enforcement. Colors distinguish component roles, not security ratings.
Qualitative mechanism comparison; actual guarantees depend on implementation and configuration.
BoundaryPrimary separationUseful fitMaterial remaining dependency
Process plus OS policyAddress space, identity and selected kernel interfacesKnown native program with narrow host needsShared kernel and inherited authority
ContainerNamespace views, mounts, credentials and host-enforced limitsBroad Linux compatibility and packagingShared host kernel and runtime/daemon
Application kernel such as gVisorUser-space implementation of much of the Linux APILinux workloads where reduced host-syscall exposure is valuableSentry, filesystem mediator, host kernel and compatibility subset
VM or microVMGuest kernel behind VMM/hypervisorHostile native workloads or stronger tenant separationVMM, devices, KVM, host integrations and management plane
WebAssembly/WASIChecked runtime memory and explicit linked interfacesPortable modules with constrained host operationsRuntime defects and authority of imported interfaces

Independence matters

Layers help only when they independently remove, mediate, or contain an attack path. Seccomp inside a container can reduce the shared-kernel interface. Putting the container in a microVM can add a guest-kernel boundary. A host-side broker can keep a credential outside both. Default-deny egress can reduce the consequences of readable data. Conversely, two filters at the same bypassable layer may add complexity without changing reachable authority. Defense in depth is an attack-path argument, not a layer count.

Part IV — Control what the workload reaches

Filesystem views and exports

A clear filesystem contract separates provenance and lifetime. An immutable runtime or base image supplies tools. Identified inputs are mounted read-only. A per-run writable layer holds scratch changes. Persistent stores remain outside the environment, and only selected outputs cross into them. OverlayFS can present a lower read-only layer and an upper writable layer as one tree; opening a lower file for write can copy it into the upper layer, after which operations use the private copy. Arrakis applies this pattern with a shared read-only root and per-sandbox writable overlay.

Trusted path handling

The apparent tree is not the whole boundary. Bind mounts expose live storage. Open descriptors can retain access acquired before confinement. Symbolic links, parent traversal, and mount crossings can redirect trusted exporters or extractors. Linux openat2 lets a trusted component constrain an individual path resolution beneath or inside a supplied directory, disallow symlinks, or prevent crossing mount points. Archive extraction needs additional filename, link, object-count, and size checks and can leave partial output after failure.

Paths are examples. Copy-up preserves the lower file while the upper copy takes precedence in the merged view. Separate read-only mounts do not become writable through this mechanism. A trusted exporter checks path, type and size before persisting selected output; these checks alone do not establish content safety. Teardown removes private state, not an exported copy.

Storage limits are also multidimensional. Filesystem quotas can independently restrict allocated blocks and inodes, so one huge file and millions of tiny files are separate exhaustion paths. Read-only inputs, private scratch, and explicit export simplify accounting, but teardown still removes only resources owned by the environment. It does not recall copied bytes, delete an uploaded artifact, invalidate a snapshot, or undo a remote write.

Network paths and egress

Egress is outbound network traffic. A meaningful default-deny policy covers every usable path, not merely the public web. Relevant destinations include loopback and host services, private address ranges, link-local metadata services, internal networks, explicitly supplied bindings, and external services. Protocols, ports, DNS, redirects, existing connections, UDP, and host-browser handoffs can each have distinct enforcement behavior. Disabling public Internet access does not by itself block a cloud metadata endpoint or a host-local daemon.

Mediated outbound authority

A host gateway or enforcement proxy can mediate outbound requests outside the workload. Cloudflare Dynamic Workers, for example, can make workload fetch and connect fail while retaining explicitly supplied bindings, or route them through a loader Worker that inspects and forwards selected requests. A credential-injection gateway can keep a provider token in trusted code and attach it only to matching approved requests. Docker’s documented sandbox architecture similarly uses forward proxying or transparent interception and separately blocks direct external UDP and ICMP. The decisive property is that ignoring proxy configuration does not reveal an unrestricted alternative route.

The destination can change

Destination policy must survive indirection. OWASP’s server-side request forgery guidance distinguishes syntax validation from membership in a permitted destination set and warns that redirects and DNS resolution can move a request after an initial hostname check. One reported agent-tool failure changed a private-repository destination string so a server sent Git credentials to an attacker-controlled endpoint. Network controls and application authorization are complementary: an allowed service can still receive impermissible data or an unauthorized operation.

A proxy is mandatory only when bypass routes are denied

Request data, DNS and attempted bypasses take distinct pathsThe workload sends request data to a mandatory trusted gateway. The gateway exchanges DNS separately, checks destination and request policy, and injects a matching credential before forwarding. Redirects return to the same decision. Direct attempts end at host denial; explicit bindings use separate authorization.Mandatory request-aware gateway · trustedWorkloadNo provider credentialDestination + requestpolicy decisionMatching credentialinjectionDNS resolverReceiving serviceSeparate actor / action /resource authorizationSTOP · host enforcementDirect Internet, private, hostand metadata attempts deniedBinding handlerSeparate scope + argumentsExplicit grant, not network accessRequest bytesApproved matchForward requestRedirect → fresh checks before forwardingQueryAddress resultsBypass attemptExplicit binding call → its own authorization

Solid arrows carry request, response or binding data. Dashed arrows are DNS exchanges. Resolve and check the effective destination before forwarding; reject a redirect or repeat destination and credential-scope checks.

Reference design with a request-aware trusted gateway; a generic encrypted tunnel does not inspect application operations. Credential injection requires a matching approved request. The receiving service independently authorizes it. Explicit bindings are separate grants with their own checks.

Policy records should identify the sandbox, destination, outbound path, matching rule, and decision reason. They support investigation but only for their covered surface. Docker’s documented network-policy log, for example, does not include filesystem mount decisions. Observability is evidence about an enforcement path, not evidence that every path was mediated.

Identity, authority, and capabilities

A sandboxed action can involve several principals: the requester, represented user or service, tenant, agent runtime, workload, broker, and downstream service. Local Unix identity determines some operating-system decisions. It does not determine what a cloud token may do. The protected service must still authorize the actor, action, resource, represented subject, and current conditions. Privacy and Data Governance develops the governing principles: least privilege, complete mediation, and fail-safe defaults. Here they become runtime mechanisms outside model-controlled behavior.

A capability joins designation and authority: it identifies a resource or operation and grants its holder permission to use it. This differs from a Linux capability such as CAP_DAC_OVERRIDE, which is one unit of operating-system privilege and may apply broadly. Capsicum, presented by Watson, Anderson, Laurie and Kennaway in 2010, removed global namespaces in capability mode and delegated file descriptors with narrowed rights. Existing descriptors and process state still needed cleanup. WebAssembly System Interface (WASI) similarly represents runtime resources through per-instance handle tables and explicitly linked interfaces. In application systems, a short-lived token for one resource action or a broker stub exposing one checked method can play a related role.

Broker the operation

The safer design is often to keep the reusable credential outside the sandbox. The workload receives a narrow interface such as queryCustomerDatabase(customerId, fields); trusted code validates the method, arguments, tenant scope, and current policy before using its own credential. Cloudflare’s generated-code example exposes database and logging bindings but no general network or secret access. The same principle supports short-lived executor capabilities bound to actor, subject, audience, plan, and lifetime rather than standing credentials.

Lifecycle of authority

A secret placed in an environment variable, mounted file, open descriptor, or ordinary process memory should generally be treated as readable by hostile code in that boundary. A narrower token remains a reusable bearer credential unless its receiving service enforces its scope and lifetime. Expiry is also not identical to successful revocation: Vault documents a failure case in which an expired dynamic database credential could not be revoked because the database was unavailable. Receipts should therefore preserve issuance, use, expiry, revocation attempt, and authoritative downstream status separately.

Part V — Bound time, state, and tenants

Independent resource ceilings

Untrusted execution can deny service without escaping. An infinite loop consumes scheduled CPU; allocation pressure consumes memory; a fork bomb consumes process identifiers; tiny files consume inodes; large files consume blocks; output can fill pipes or memory; device traffic can saturate I/O; and many individually cheap API calls can exhaust a remote quota. Each resource needs a meter, an enforcement point, a limit, an observable failure mode, and a cleanup check.

A resource ledger

Resource controls are not interchangeable.
ResourceExample enforcerWhat the limit meansFailure or response
CPUcpu.max, RLIMIT_CPUScheduled CPU per period or accumulated CPU secondsThrottling, signal, then possible kill
Elapsed timeExternal service managerTime in active lifecycle stateTermination request and failed state
Memorymemory.high, memory.max, RLIMIT_ASPressure threshold, cgroup ceiling, or virtual address spaceReclaim/throttle, allocation failure, or group OOM kill
Processespids.maxMaximum tasks in a cgroup subtreeNew process creation rejected
DescriptorsRLIMIT_NOFILEOpen descriptors per processOpen or duplication fails
StorageBlock and inode quotas, RLIMIT_FSIZETotal bytes, object count, or one file’s growthWrite failure, signal, or quota denial
I/O and networkio.max, gateway limitsDevice throughput, operations, connections, or requestsThrottle or rejection
OutputBounded stream collectorRetained bytes and pipe-drain policyTruncation, spill, or controlled failure

Name the semantics

A reservation promises capacity; a quota bounds an allocation or entitlement; throttling slows consumption; termination stops execution. They produce different observations. Likewise, CPU seconds are not elapsed time, virtual address space is not resident memory, and an individual file-size limit is not total workspace storage. Values must follow workload measurements and consequences rather than a universal “safe” preset.

Stopping one process is not necessarily stopping its descendants. Cgroup-wide termination and PID-namespace supervision can address process trees; systemd’s KillMode=control-group targets remaining processes and can escalate to SIGKILL, whereas process-only mode can leave children alive. A stopped process group still says nothing about retained files, credentials, queued work, or remote effects.

Lifecycle, snapshots, and external effects

An environment lifecycle should make ownership and terminal conditions explicit. A useful sequence is requested, provisioned, running, stopping, terminated, collected, and expired. Provisioning establishes the artifact, identity, policy, limits, and private state before code starts. Stopping prevents new work and drives termination of the whole execution subtree. Collection exports only declared artifacts and receipts. Expiry removes retained resources according to policy. Failures at any transition need retries and an owner; “the command exited” is not equivalent to “the environment and everything it started are gone.”

What a snapshot preserves

Snapshots change the local recovery boundary. Arrakis pauses a VM, captures guest memory, separately saves the writable filesystem layer, and resumes it. This can restore processes and local files without rebuilding earlier work. A snapshot is not self-contained by definition: Firecracker restoration also needs referenced disk files, network interfaces, and host resources. Reusing saved state can duplicate identifiers, random seeds, entropy pools, or cryptographic tokens; repeated resumption requires an explicit uniqueness design.

Two recovery boundaries

Terminating or restoring a sandbox does not reverse accepted remote effects. A timeout can leave an unknown outcome: success or failure is unconfirmed. See Represent uncertain external outcomes.

Recover effects explicitly

Use a stable operation identity when the receiving service supports idempotency, and reuse it only for the same logical intent and parameters. The receiving boundary must coordinate duplicate detection with the mutation; merely writing the identifier to a local log does not prevent duplicate effects. When status remains unknown, reconcile against authoritative provider state before retrying. Compensation is a new operation that counteracts completed work; it can fail and need human resolution, so it is not rollback.

Local termination does not resolve a remote write

Example operation op-42; this provider supports authoritative lookup by operation identity. Rows are event order, not measured durations.

EventEnvironmentSupervisor / caller knowledgeActual provider state
1 · DispatchRunning; sends op-42Awaiting response for op-42Accepts op-42 and commits the write
2 · Response lostRunningNo completion response receivedWrite remains committed; reply is lost
3 · TimeoutMay still be runningOutcome unknown: timeout is not failure confirmationop-42 remains committed
4 · Confirm terminationWhole execution subtree terminatedLocal termination confirmed; remote outcome still unknownop-42 remains committed
5 · ReconcileRemains terminatedSupervisor queries op-42; authoritative reply confirms the writeReports committed op-42; no new mutation is requested
Timeout changes what the caller knows; confirmed subtree termination changes local execution. Neither reverses the provider’s accepted write. Reconciliation is separate, uses the same operation identity and depends on the provider’s supported lookup contract.

Tenant separation and warm reuse

Multi-tenant isolation has two dimensions. Simultaneous tenants need distinct identities, storage and network contexts, authorization, capacity controls, and placement rules so one workload cannot read or starve another. Sequential tenants add residual state: a new invocation or restarted process can encounter memory, temporary files, caches, connections, background work, snapshots, credentials, or shared host-side stores left by an earlier run. Lampson's confinement paper (October 1973) made the distinction explicit: preventing unauthorized access does not stop a service from leaking information it legitimately received, including through state retained between calls.

Warm-reuse responsibilities

Every retained surface needs an ownership and reset rule.
SurfaceSafe possibilitiesEvidence needed
Process memoryNew instance, zeroed memory, or same-tenant reuseCross-run canary and runtime design
Scratch files and cachesPrivate layer destroyed or tenant-boundFilesystem inspection after reset
Connections and background workClosed and subtree terminatedHost observation after cancellation
CredentialsNever present, expired, revoked, or tenant-boundBroker and downstream authorization records
SnapshotsBound to immutable base, policy, tenant, and uniqueness procedureRestore manifest and negative tenant test
Host-side shared storesPartitioned, immutable, or omittedEffective integration configuration

Reuse is not reset

AWS Lambda documents that global objects, temporary files, reusable connections, and unfinished background work can survive environment reuse; even a failure reset does not clear /tmp. Its tenant-isolation mode reuses environments only for a supplied tenant identifier, but all tenants still use the function’s execution role. Environment assignment and external-service authorization are therefore separate. Docker’s agent sandbox documentation offers another boundary reminder: a writable workspace or shared skills store can carry changes outside the VM, and host stdio integrations execute with host permissions.

Warm pools can reduce startup work, but cross-tenant reuse requires demonstrated reset coverage for every retained surface in the deployment: memory, kernel caches, files, devices, credentials, background work, and host integrations. Define who resets each surface and how a failed reset prevents reassignment. Where that coverage has not been established, use single-use environments or reuse only within the same explicitly authorized tenant and policy domain.

Part VI — Escape and assurance

Contain failure beyond the wall

A sandbox escape breaches the intended execution-isolation boundary, giving untrusted code access that boundary was meant to prevent. An in-sandbox crash is not automatically an escape. Vulnerability research on V8 distinguishes faults within sandboxed objects from exploit chains that achieve effects outside the boundary. Conversely, an allowed network connection or overprivileged tool can harm an external resource without an escape: that is misuse of granted authority. Security claims must identify both the authority reached and whether isolation was defeated.

Different boundaries, different paths

Escape paths depend on the mechanism. Processes and containers expose shared-kernel paths; VMs expose VMM, KVM, virtual-device, management, and host-integration paths; runtimes expose parser, compiler, host-interface, and embedding defects. Privileged container settings, host daemon sockets, writable host mounts, leaked bootstrap descriptors, overpowered brokers, network routes, and control-plane credentials can bypass or enlarge the boundary without a classic kernel or VM exploit.

Controls play different roles. Minimal interfaces, memory-safe implementations, syscall filtering, and reduced device models shrink attack surface. Independently enforced nested boundaries can require an attacker to defeat additional controls. Tenant-aware placement, absent credentials, brokered capabilities, and restricted egress can reduce consequences while their enforcement remains trustworthy. After host compromise, credential brokering and egress restrictions require enforcement outside the compromised trust domain; host-controlled checks cannot supply that protection. Host telemetry and policy records aid detection. Patching, revocation, isolation of affected hosts, and immutable replacement support recovery. AI Security’s attack-path method is the right organizing principle: attach each control to the edge it blocks, narrows, observes, or repairs.

Follow authority across the trust domains

Possible pathWorkload domainHost domainSeparately trusted domain
Contained faultSTOP inside boundaryCrash or corruption stays local.No host authority reached on this branch.No external effect on this branch.
Isolation defectAttack an exposed runtime, bootstrap, kernel or device interface.Entry control: interface reductionFewer interfaces narrow the path; a successful defect exploit can still reach host authority.→ Consequence controlIndependently operated gateway and service authorization can deny the attempted operation.
Excessive management grantExercise a supplied host-management handle.→ Granted host authorityA daemon can expose host mounts or management operations without an isolation exploit.→ Same external decisionDenied: STOP. Permitted: an external effect remains possible.
Harmful allowed operationRequest a service action using already granted authority.Host compromise is not required for this path.→ Service permits the actionA policy-allowed operation can still cause harm. Isolation was not defeated.

After host compromise, host-controlled brokers and firewalls are inside the compromised domain. Any claimed surviving gateway must be independently enforced outside that domain.

Observe and respond: telemetry and policy records can reveal activity → investigate, revoke authority, isolate affected hosts, patch or replace. Detection and recovery are observations and responses, not guaranteed blocking edges.
These are possible branches, not inevitable progression or likelihood estimates. A contained fault can end locally. Isolation exploits and excessive management grants are distinct paths to host authority; harmful allowed service actions require neither.

A model instruction to avoid production, an approval prompt, or a complete audit log does not establish containment. Agents can remain within supplied tools and still choose a path that violates the intended constraint. Deterministic authorization, scoped capabilities, semantic review where needed, and meaningful human escalation belong outside the worker’s uncontrolled decision loop. Even then, the architecture can add cost and latency and leaves residual risk.

Evidence for a bounded claim

Sandbox assurance is always versioned and scoped. Record the execution contract, workload artifact digest, base image, effective mounts, identities, policies, limits, runtime, kernel or hypervisor, host integrations, and test fixture. A policy file proves that text exists. Effective configuration shows what the runtime accepted. A negative test shows an attempted prohibited outcome failed under stated conditions. Host or provider observations establish later effects. None alone proves universal safety.

Requirement-to-check matrix

Pair every promised boundary with a permitted case, a prohibited case, and an observable result.
PromiseEffective configurationPositive checkNegative or failure checkRemaining assumption
FilesystemMounts, descriptors, devices and export policyRead named input; export declared resultAttempt host path, symlink escape and oversized archiveKernel/runtime and trusted exporter correctness
NetworkAll outbound paths and gateway policyReach approved service through brokerTry direct IP, redirect, private range and metadata endpointGateway, DNS and host-network correctness
Identity and secretsWorkload principal, token audience and broker bindingsPerform one authorized tenant operationCross-tenant object, expired grant and secret-read attemptDownstream authorization correctness
ResourcesApplied cgroup, rlimit, quota and deadline valuesComplete representative workloadFork, allocate, fill blocks/inodes, flood output and overrun timeEnforcer and host capacity remain available
LifecycleSupervisor ownership, process subtree and retention policyCollect result and destroy owned resourcesCancel during child creation; crash broker; inspect survivorsHost observation is complete enough
TenancyPlacement, reuse, snapshot and reset policySame-tenant authorized reuse if supportedSequential and concurrent cross-tenant canariesNo untested retained or side-channel surface
External effectsStable operation identity and reconciliation pathConfirmed mutation with provider receiptTimeout after possible acceptance, then safe reconciliationProvider enforces its idempotency contract

Exercise the rule, not its presence

Tests should cover both sides of policy rules. Firecracker’s published seccomp validation test compiles per-thread filters, exercises permitted calls and arguments, then alters constrained arguments and expects rejection. That is stronger than checking that a filter file exists, but it remains bounded to the calls, arguments, version, and helper exercised. The same discipline applies to mounts, network destinations, tenant records, process cleanup, and snapshot restoration.

Adversarial evaluation should observe effects rather than model rhetoric; AI Security develops that method. Governance assurance should connect each requirement to an owner, implementation, assessment, expected result, and response to failure; see Verify and revisit decisions. The defensible conclusion is deliberately narrow: under these versions, policies, identities, integrations, workloads, and attack attempts, the named permitted paths worked and the named prohibited effects were not observed. Patching, incident drills, and reassessment are required as any of those conditions changes.

Open questions

  1. How can a platform prove that a warm environment is clean enough for a different tenant? A general answer must cover process memory, files, caches, connections, devices, credentials, background work, snapshots, and host-side integrations. Progress would look like a versioned reset contract with complete surface ownership, failure injection, and cross-tenant canary tests rather than an invocation-level reset claim.

  2. How should portable sandbox policy remain equivalent across laptops, clouds, and private clusters? Filesystem, network, identity, runtime, and management primitives differ, so identical policy text may not imply identical enforcement. Progress would require a portable contract compiled into platform-specific controls plus conformance tests that observe the same permitted and denied effects in every target.

  3. How can capability brokers remain small and trustworthy as agents need more operations? Each new method, argument, destination, and tenant rule enlarges the broker’s attack and confused-deputy surface. Progress would combine narrow typed interfaces, resource-level authorization, stable delegation records, robust path and destination handling, and adversarial tests of both broker and downstream policy.

  4. How should snapshots preserve useful state without duplicating identities and credentials? Machine snapshots can retain random seeds, tokens, connection assumptions, and identifiers that must be unique after restoration. Progress would define which state is restored, regenerated, rebound, or rejected and would validate those rules across cloning, repeated resume, migration, and tenant changes.

  5. What evidence should justify stronger isolation at acceptable operational cost? Comparisons across containers, application kernels, conventional VMs, and microVMs require matched workloads, stated threat assumptions, and explicit measurement endpoints. Startup, task readiness, I/O behavior, memory overhead, density, observability, and patch burden answer different questions. Useful comparisons would report these separately alongside the security boundaries and operating responsibilities of each configuration.

Follow the curated reading path through the speakers and demonstrations behind this entry.

Explore more talks

The rest of the library, beyond the curated path. Cited talks support this entry; reviewed transcripts were processed in full. Metadata candidates have not been reviewed as sources or verified as topic members.

32 matching talks

TalkSpeakerEventYear
Remy GuercioAI Engineer Europe 20262026
Abhishek BhardwajAI Engineer World's Fair 20252025
Moritz JohnerAI Engineer World's Fair 20262026
Fouad MatinAI Engineer World's Fair 20252025
Lovina DmelloAI Engineer World's Fair 20262026
Rene BrandelAI Engineer World's Fair 20252025
Daniel ChalefAI Engineer World's Fair 20262026
Jonathan MortensenAI Engineer World's Fair 20252025
Vinoth GovindarajanAI Engineer World's Fair 20262026
AI Engineer Summit 20252025
Tushar JainAI Engineer World's Fair 20262026
Simon WillisonAI Engineer Summit 20232023
Šimon PodhajskýAI Engineer Europe 20262026
AI’s Jurassic Park Period

Cited in this entry

Aaron StanleyAI Engineer World's Fair 20262026
Eric AllamAI Engineer World's Fair 20252025
Erik MeijerAI Engineer World's Fair 20262026
Gabe De MesaAI Engineer World's Fair 20262026
The Log Is The Agent

Transcript reviewed

Ishaan SehgalAI Engineer World's Fair 20262026
Nishant GuptaAI Engineer World's Fair 20262026
Harnesses in AI: A Deep Dive

Cited in this entry

Tejas KumarAI Engineer Europe 20262026
Ara KhanAI Engineer Europe 20262026
Sarthak AggarwalAI Engineer World's Fair 20262026
Rachel Lee Nabors (RL Nabors)AI Engineer World's Fair 20262026
Ravi MadabhushiAI Engineer World's Fair 20262026
Den Delimarsky (DEVDIV), Julia Kasper, Den DelimarskyAI Engineer World's Fair 20252025
Michael GrinichAI Engineer World's Fair 20252025
Aditya BhargavaAI Engineer World's Fair 20262026
KP Sawhney, Ian BallantyneAI Engineer Europe 20262026
Frank CoyleAI Engineer World's Fair 20262026
Peter WielanderAI Engineer Code 20252025
Philipp SchmidAI Engineer World's Fair 20262026
Jason LopateckiAI Engineer World's Fair 20262026

References

Coverage and source review
Processed transcripts
35 processed in full · 3 in the curated path
Automated source review
Passed
Metadata candidates
0 unreviewed; not verified topic membership
Corpus version
1bd8e407b26a07b33815594e1b2db5f41827119a2b3cb6fbf240f9fc571fc767

Automated review checks source support; it is not publication approval.

A synthesis of selected conference talks and technical references. Citations link to the source material; they do not imply that every talk on this subject is included.

  1. NIST CSRC Glossary: Sandbox

    A sandbox is a controlled execution environment that restricts an untrusted application's permissions and access to system resources. NIST's definitions explicitly include filesystem and network restrictions. The term describes enforced restrictions, rather than a property of the code being executed.

  2. Unlock Agent Autonomy: The Runtime for AI-Native Systems

    Place the agent inside an untrusted execution boundary and enforcement controls outside it, independently of the model and harness.

  3. NIST CSRC Glossary: Trusted Computing Base

    The trusted computing base comprises the hardware, firmware and software protection mechanisms whose combined operation enforces a security policy. For an execution boundary, this means identifying the components relied upon for enforcement, rather than treating only the workload-facing sandbox API as trusted.

  4. Guide to Security for Full Virtualization Technologies

    NIST SP 800-125 describes a hypervisor as mediating guest access to CPU, memory, storage and networking so guests receive partitioned resources. The guest kernel boundary can reduce cross-guest effects, but the hypervisor becomes a shared security dependency: an escape reaching it can endanger every guest. Guest tools, shared disks, clipboards and other host integrations deliberately weaken separation and create additional attack paths. Hypervisor management interfaces and communications require their own access controls.

  5. Beyond permission prompts: making Claude Code more secure and autonomous

    The engineering report separates filesystem isolation from network isolation. Restricting accessible paths limits local damage, while restricting outbound connections limits where processes can communicate. Either boundary alone leaves important attack paths: code with unrestricted network access can transmit readable secrets, while unrestricted filesystem changes can undermine containment. A sandbox defines where actions may occur; approvals remain a separate decision about whether a particular action is authorized. This is especially relevant when a coding agent reads repository content that may contain hostile instructions.

  6. npm v8 Scripts and Lifecycle Events

    npm's versioned documentation describes executable lifecycle scripts during installation and preparation. A Git dependency with a prepare script can have dependencies and development dependencies installed and that script executed before packaging and installation. Consequently, dependency setup can run supplied code before the intended application command begins.

  7. Docker Bind Mounts

    A bind mount exposes a host file or directory inside a container rather than copying its contents. Docker bind mounts are writable by default, allowing container processes to create, modify or delete host files; readonly prevents writes through that mount. Nested mounts require attention: recursive read-only behavior requires Linux 5.12 or later, while older kernels leave included submounts writable by default. The source path belongs to the daemon host, which may differ from the client machine.

  8. Why, and how you need to sandbox AI-Generated Code? — Harshil Agrawal, Cloudflare

    Treat unbounded execution as both a cost risk and a denial-of-service risk, and enforce explicit execution limits.

  9. Anthropic's CCA Exam as a Field-Guide for Agentic Engineering

    Treat model output as a proposed tool invocation; application code remains responsible for interpreting the proposal and executing the tool.

  10. Harnesses in AI: A Deep Dive

    An agent harness controls the environment around model execution; it includes more than either an evaluation runner or the agent loop alone.

  11. OpenHands: An Open Platform for AI Software Developers as Generalist Agents

    OpenHands separates agent development from a platform that supplies execution capabilities such as writing code, using a command line, and browsing the web. Its architecture supports sandboxed code execution, agent coordination, and benchmark integration. A coding assistant therefore includes more than a model that emits source text: it needs a runtime that turns proposed actions into observable results and an evaluation environment that can test the resulting behavior.

  12. OCI Runtime Specification: Runtime and Lifecycle

    OCI separates creating a configured environment from starting its workload. During creation, the user-specified program must not run; inability to apply a configured property must produce an error rather than a newly created container. Later configuration-file edits do not change that container. Lifecycle hook failures have specified stop and destruction paths. A stopped status means the container process exited. Deletion removes resources created during creation, while associated resources not created by the container must remain.

  13. The Protection of Information in Computer Systems: Basic Principles

    Least privilege limits each user and program to permissions needed for its job. Complete mediation requires authority checks on every access to every object, including initialization, recovery, shutdown, and maintenance. It requires reliable identification of request sources and care with cached authorization when permissions change. Fail-safe defaults base access on explicit permission. Applied to a harness, these principles imply that protected operations must pass through an enforcement mechanism that the requesting program cannot bypass or modify; a prompt instructing the model to behave is not that mechanism.

  14. OWASP Access Control

    Authentication establishes identity; authorization decides which actions that identity may perform on particular resources. A user allowed to initiate a transfer must still be authorized for the source account. Least privilege limits the authority of running code and service accounts, while centralized checks reduce inconsistent enforcement. In an AI application, tool availability and a model-produced argument are therefore insufficient grounds to execute a business operation; the application must apply resource- and action-level policy.

  15. Demystifying evals for AI agents

    An agent evaluation separates a task and its success criteria from repeated trials, execution transcripts, graders, and final environment outcomes. A booking claim in a transcript is different from an actual reservation in the database. The system under test includes both model and agent harness. Code-based checks suit precise state or test assertions; model graders cover more open-ended properties but require calibration; human review helps establish the standard. Capability suites explore difficult behavior, while regression suites protect behavior that already works.

  16. IBM News: Virtual Storage Announcement Special, August 2, 1972

    IBM's contemporary account describes Cambridge Scientific Center work during 1965–1966 intended to give each System/360 user a separate computing environment. A modified Model 40 entered internal use in January 1967 supporting a dozen virtual machines. The account distinguishes that experiment from CP/67, completed in fall 1967 and made available to Model 67 users in July 1968, and from the VM/370 announcement on August 2, 1972.

  17. A Hardware Architecture for Implementing Protection Rings

    Schroeder and Saltzer’s October 1971 paper describes Multics processor mechanisms for limiting an executing procedure’s access privileges in a multi-user computer utility. Ring numbers represent ordered protection domains: procedures in higher-numbered rings receive less authority, while controlled gates permit calls into more privileged rings. The design addressed protection among procedures within a process; it was not a container or virtual-machine boundary.

  18. A Note on the Confinement Problem

    Lampson's October 1973 paper distinguishes preventing unauthorized access from preventing a service from leaking information it was legitimately given. Its examples include retained memory, files, interprocess messages, accounting information and changes in shared-system performance. Confinement therefore concerns information exits and state retained between calls, not merely whether the program can open an unauthorized file.

  19. Jails: Confining the Omnipotent Root

    Kamp and Watson's May 2000 paper addressed hosting providers that wanted customers to administer their own software without controlling other customers or the host. Jails restricted the scope of privileged operations while retaining familiar UNIX administration. The paper contrasts this with chroot's filesystem-only confinement, which did not partition process and networking spaces. It identifies FreeBSD 4.0-RELEASE as the first release containing the implementation.

  20. Capsicum: practical capabilities for UNIX

    Watson, Anderson, Laurie and Kennaway presented Capsicum at USENIX Security on August 11, 2010. Capability mode removes access to global namespaces and is inherited by descendants; delegated file descriptors identify accessible objects, while capability rights narrow the operations permitted through each descriptor. The prototype also closed non-delegated descriptors and scrubbed process state because entering capability mode alone could leave authority in handles, mappings or memory.

  21. Xen and the Art of Virtualization

    The 2003 Xen paper sought to share commodity servers among mutually untrusting users while preserving application compatibility and controlling resources. Its paravirtualization approach exposed a modified machine interface: guest operating systems needed changes, but application binaries did not. Xen operated with greater privilege than guest kernels and validated protected operations. The authors explicitly acknowledged that running whole operating systems costs more initialization work and resources than starting processes.

  22. Firecracker — Lightweight Virtualization for Serverless Computing

    AWS's November 26, 2018 announcement explains that Lambda initially used customer-dedicated EC2 instances for isolation, creating backend efficiency tradeoffs. Firecracker reconsidered the virtual-machine design around containers and short-lived functions. Starting from crosvm, AWS reduced the device model and used KVM-based microVMs. The announcement states that Firecracker was already powering Lambda and Fargate when announced.

  23. Capabilities in WASI

    WASI distinguishes capabilities supplied when linking an instance from capabilities passed during execution. Imported functions provide selected operations; substituting a restricted implementation can attenuate their authority. Runtime capabilities are unforgeable handles granting access to individual resources, such as open files. Integer representations are indices into per-instance handle tables, rather than globally meaningful resource identifiers.

  24. Linux intro(2): Introduction to System Calls

    A system call is an entry point into the Linux kernel. Applications commonly invoke library wrappers that arrange arguments, enter kernel mode and return the kernel's result. A familiar-looking function call can therefore cross from application execution into privileged operating-system machinery.

  25. Linux fork(2): Separate Memory and Inherited Handles

    fork creates a child process with a separate memory space initially containing the parent's memory contents. The child also inherits file descriptors referring to the same open file descriptions, including shared offsets and status flags. Linux resets the parent's configured parent-death signal in the child. Thus creating another process neither removes inherited resource access nor automatically arranges its termination when its parent dies.

  26. Linux execve(2)

    execve replaces the program running in an existing process, initializing a new stack, heap and data segments. Its caller supplies the new program's environment explicitly. Real user and group identities and supplementary groups remain unchanged; file descriptors normally remain open unless marked close-on-exec. Set-user-ID, set-group-ID and file capabilities can affect privileges, while no_new_privs suppresses the documented privilege gains. Loading another executable is therefore distinct from removing authority.

  27. Linux Seccomp BPF Documentation

    Seccomp filters let the kernel decide how to handle system calls using their numbers, argument values and associated metadata. Filters cannot dereference pointer arguments, so a pointer to a pathname is not equivalent to inspected pathname contents. The documentation explicitly distinguishes reducing exposed kernel interfaces from providing a complete sandbox. When permitted fork, clone and exec operations occur, the restrictions continue to constrain the resulting execution.

  28. Landlock: Unprivileged Access Control

    Landlock is a Linux Security Module that adds restrictions to existing access controls, including for unprivileged processes. Rules describe permitted actions on resource objects, such as reading files beneath a directory; enforced rules constrain the thread and its future children. Files and directories opened before sandboxing are not subject to the documented filesystem restrictions. Supported rights depend on the kernel's Landlock ABI. Ambient rights here mean broadly available access, such as global filesystem or network access, that the rules narrow.

  29. AppArmor — Linux Kernel Documentation

    AppArmor adds mandatory access-control policy through profiles associated with tasks and loaded into the kernel. Tasks without a profile remain unconfined by AppArmor and retain ordinary Linux discretionary permissions. Enabling the security module alone does not install restrictions: policy must also be loaded.

  30. Linux capabilities(7)

    Linux capabilities divide privileges traditionally associated with root into independently enabled powers attached to threads. For example, CAP_DAC_OVERRIDE bypasses file read, write and execute permission checks. This meaning concerns operating-system privileges; it should be distinguished from an object capability that identifies a particular resource and conveys authority over it.

  31. OSX Sandboxing Design

    Chromium’s macOS design applies Seatbelt restrictions before exposing a renderer to untrusted content. The document states that descriptors opened before sandbox activation continue to work and that Seatbelt does not limit memory allocation, threading or previously opened operating-system facilities. Chromium therefore prepares required resources before lockdown and uses different profiles for renderer, utility and worker processes. A process sandbox must account for authority acquired before confinement and add separate resource controls.

  32. Linux namespaces(7)

    Namespaces give processes separate views of selected system resources. Linux provides distinct namespace types for mount points, process IDs, user and group IDs, network devices and stacks, and other resources. Containers use these mechanisms rather than obtaining a separate kernel merely by creating namespaces. A namespace can remain alive after its last process exits when an open namespace descriptor, bind mount or other documented reference retains it.

  33. Linux Control Group v2

    Cgroups organize processes hierarchically; new children inherit membership and enabled controllers constrain subtrees. cpu.max limits CPU time per period, rather than total execution duration. memory.high throttles and reclaims; memory.max can invoke the group's out-of-memory killer when reclaim cannot meet the limit. pids.max rejects process creation that would exceed policy. io.max limits device throughput or operation rate. cgroup.kill sends SIGKILL throughout the subtree while handling concurrent forks; cgroup.events populated reports whether live processes remain. Moving a parent later does not move its existing descendants.

  34. Application Container Security Guide

    NIST SP 800-190 defines application virtualization as multiple isolated application instances sharing one operating-system kernel. It identifies the shared kernel as a larger inter-object attack surface than a hypervisor boundary and treats images, registries, orchestrators, runtimes and host operating systems as distinct security components. Recommended operations include minimizing host services, scanning components for vulnerabilities, applying kernel and runtime updates, enforcing image baselines and including supporting data stores and media in disposal plans.

  35. Docker Engine Security: Daemon Attack Surface

    Docker warns that control of its daemon belongs only to trusted users. A daemon client can request a container with the host root directory mounted inside it and thereby expose host filesystem mutations. Unix socket permissions restrict access to this management interface. The documentation also notes that a virtual machine can be granted dangerous host filesystem or block-device sharing. Such excessive grants create harm paths without requiring an isolation vulnerability.

  36. Docker Rootless Mode

    Docker rootless mode runs both the daemon and containers without host root privileges, using a user namespace. Docker's userns-remap mode differs because its daemon still runs with root privileges. Rootless mode therefore reduces privileges held by the container-management service as well as by workloads.

  37. We Gave an Agent Production Code Access and Then Tried to Sleep at Night

    Giving an agent access to a host Docker daemon can undermine the surrounding sandbox by allowing privileged container creation.

  38. Linux chroot(2)

    chroot changes the root used for pathname resolution and does not by itself sandbox a process. It neither changes the current working directory nor closes open file descriptors; those descriptors can still reach files outside the new tree. The manual explicitly rejects treating this operation alone as a security sandbox.

  39. runc Security Advisory: Several Container Breakouts Due to Internally Leaked File Descriptors

    The runc advisory published January 31, 2024 describes CVE-2024-21626: internal descriptor leaks and missing working-directory validation could leave a container process able to access the host filesystem. Affected versions ran from 1.0.0-rc93 through 1.1.11. Version 1.1.12 addressed both the specific leaks and broader initialization checks. This demonstrates a boundary failure during runtime setup, rather than harmful use of a deliberately granted host mount.

  40. The Linux Sandbox

    Chromium’s Linux sandbox documentation composes namespace isolation with seccomp-BPF rather than treating process creation as sufficient confinement. Empty namespaces restrict the renderer’s view of system resources. A seccomp program is evaluated for every attempted system call, both limiting permitted operations and reducing the host-kernel interface exposed to the renderer. The mechanisms address different paths and may be selected according to available kernel features.

  41. Images — Kubernetes

    A container image is an executable software bundle. Image tags can be reassigned to different images, whereas digests are immutable hashes identifying image content. Kubernetes accepts image references containing a digest; when both tag and digest are supplied, the digest determines what is pulled. Application inference: connect an artifact-specific dependency inventory to a deployment through an identified image digest rather than assuming a mutable tag always denotes the same artifact.

  42. Firecracker: Lightweight Virtualization for Serverless Applications

    The paper contrasts containers sharing a host kernel with KVM virtualization using a guest kernel and virtual machine monitor. Firecracker reduces the monitor's device and feature surface, but still relies on host scheduling, memory management and I/O. Its jailer establishes restrictions before guest boot. Operators maintain the monitor and both guest and host kernels. The evaluation distinguishes process-creation-and-configuration time from preconfigured startup. Its boot endpoint is guest init, using a minimal filesystem, one virtual CPU and 256 MB memory; distributions cover serial and concurrent starts. These measurements do not include application dependency installation or task readiness.

  43. From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

    The speaker recommends microVMs for agents needing a full Linux environment, combining a hardware isolation boundary with a smaller, memory-safe and compartmentalized host implementation.

  44. Arrakis: How To Build An AI Sandbox From Scratch

    The talk connects microVM security to memory-safe VMM implementations and device jailing, and their smaller footprint to restricted architecture and device support.

  45. Firecracker Production Host Setup Recommendations

    Firecracker’s production-host guidance states that the VMM does not filter guest network traffic: packets pass from the virtual interface to a host TAP device, so operators must enforce firewall policy on the host, including blocking restricted addresses such as metadata services. The same guidance treats hardware side-channel mitigation, firmware and microcode updates as host responsibilities and recommends one tenant’s workload per Firecracker process.

  46. Arrakis: How To Build An AI Sandbox From Scratch

    Frequent device access can make VM exits and resumes a performance concern, so sandbox performance must be assessed against the workload.

  47. From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

    MicroVMs retain escape risk and impose costs in host–guest transitions, memory reclamation and GPU sharing.

  48. gVisor: Performance Guide

    gVisor distinguishes structural costs, such as additional system-call mediation and Sentry state, from implementation costs in particular subsystems. Native computation and frequent boundary crossings have different overhead profiles. Its startup tests distinguish an empty command from a service measured through its first successful HTTP request; another example measures startup and transcoding of a 27 MB video together. These endpoints answer different workload-readiness questions.

  49. Firecracker virtio-pmem Device Documentation

    Firecracker warns against giving different VMs the same virtio-pmem backing file because the resulting shared physical pages can create a cross-VM side channel. It separately identifies denial risk from a guest issuing many persistence flushes: each request can force host I/O over the mapped region, so the device offers operation- and bandwidth-based rate limits. Memory sharing, confidentiality and host-I/O consumption therefore require separate controls even across VM boundaries.

  50. Why, and how you need to sandbox AI-Generated Code? — Harshil Agrawal, Cloudflare

    Choose the execution environment per workflow step: isolates for constrained functions, containers for filesystem, process, and package-installation requirements.

  51. gVisor security model: containment and host dependencies

    gVisor reduces untrusted code’s ability to exploit the host system-call interface. Its Sentry implements application system calls instead of passing them directly to Linux, and itself uses a restricted host interface; the Gofer mediates filesystem access. This adds defenses against escape, not a guarantee of immunity. Sandboxed code can still access mapped files and allowed network connections. Hardware side-channel defenses depend on the host OS and platform; resource limits depend on host cgroups, and network policy needs separate enforcement. Host-networking and directfs settings change which host operations are available. Architectural implication: a local assistant’s sandbox protects the host from untrusted execution but does not establish confidentiality against a compromised host kernel or host components controlling its isolation and resources.

  52. Node.js: VM — Executing JavaScript

    Node's vm module compiles and executes JavaScript in V8 contexts with separate global objects. Its documentation explicitly says that the module is not a security mechanism and must not be used to run untrusted code. Context separation is therefore not sufficient evidence of an enforced sandbox.

  53. Wasmtime: Security

    Wasmtime describes WebAssembly memory accesses as checked offsets into linear memory, with control transfers restricted to valid destinations. A WebAssembly instance has no raw system-call or I/O access; interaction occurs through explicitly linked interfaces. Wasmtime's WASI filesystem implementation grants access to selected files and directories. Output remains a boundary: terminal control sequences can affect the receiving terminal, so the documentation describes filtering terminal-bound writes. It also describes clearing reusable instance memory as defense against cross-instance leakage.

  54. gVisor: Application Compatibility

    gVisor implements a subset of Linux's system-call interface. Libraries can sometimes use supported alternatives, so counting missing calls does not directly predict application compatibility. The documentation identifies an important enforcement distinction: in-sandbox cgroups support accounting but do not enforce resource limits between competing processes; host Linux cgroups can restrict the sandbox as a whole. It also documents unsupported in-sandbox block-device mounts and KVM use.

  55. Building Deterministic Infrastructure for Non-Deterministic AI Agents

    Apply defense in depth instead of assigning safety to a single component.

  56. Linux Overlay Filesystem

    OverlayFS combines lower and upper filesystem layers into one view. An upper object takes precedence when both layers contain the same name. Access requiring a write to a lower-layer file triggers copying it into the upper layer, after which operations use the upper copy. This explains how a shared base and separate writable state can be presented as one workspace.

  57. Arrakis: How To Build An AI Sandbox From Scratch

    Arrakis uses a shared read-only root filesystem with a per-sandbox writable overlay, and persists only the writable layer for filesystem snapshots.

  58. Linux openat2(2): Constraining Untrusted Paths

    openat2 provides kernel-checked path-resolution constraints for trusted programs handling untrusted paths. RESOLVE_BENEATH rejects resolution outside a specified directory; RESOLVE_IN_ROOT interprets paths relative to a supplied root. RESOLVE_NO_SYMLINKS prevents following symbolic links throughout the path, whereas O_NOFOLLOW concerns only its final component. RESOLVE_NO_XDEV prevents crossing mount points, including bind mounts.

  59. Python tarfile: Extraction Filters and Further Verification

    Archive extraction can overwrite unintended paths through absolute names, parent traversal or links affecting later members. Python's data filter rejects several dangerous link and special-file cases, but does not prevent all unsafe behavior or denial of service. The documentation recommends a fresh extraction directory, unnecessary-link rejection, filename checks, file-count and size limits, and external CPU, memory and disk limits. It also warns about concurrent modification of source or destination directories. Extraction failure can leave partial output.

  60. Linux quotactl(2)

    Linux filesystem quotas can constrain storage by user, group or project. The quota interfaces distinguish allocated storage blocks from allocated inodes, allowing separate limits on space and filesystem objects. Hard limits cannot be exceeded; soft limits allow a grace period before enforcement becomes hard.

  61. Amazon EC2: Access Instance Metadata

    EC2's instance metadata service is reachable through a special IPv4 address and, when enabled on supported instances and subnets, an IPv6 address. IMDSv2 uses a token obtained through a PUT request. Container networking can introduce another hop, affecting delivery of token responses under the configured hop limit. Metadata access therefore depends on specific network paths and instance configuration, not merely whether public Internet access is disabled.

  62. Cloudflare Dynamic Workers: Egress Control

    Dynamic Workers expose globalOutbound to intercept workload fetch and connect calls. Setting it to null makes those calls fail while explicitly supplied bindings remain usable. Alternatively, a gateway in the loader Worker can inspect, block, modify or forward requests. The documented credential-injection example keeps the provider token in the loader environment and attaches it to matching outbound requests; per-request or tenant context can be supplied to the gateway.

  63. Docker Sandboxes: Isolation Layers

    Docker Sandboxes documents a private Docker Engine inside each microVM, letting agents build and run containers without using the host daemon. Outbound TCP uses either a configured forward proxy or transparent interception; both enforce network policy, while only the forward proxy injects credentials. Direct external UDP and ICMP are blocked, and the internal DNS resolver applies policy. This supplies a concrete design in which ignoring proxy configuration does not create unrestricted direct networking.

  64. OWASP Server-Side Request Forgery Prevention Cheat Sheet

    Server-side request forgery can make an application act as a proxy to a service the attacker cannot reach directly. OWASP distinguishes systems that contact a known set of services from systems that must fetch arbitrary external destinations. It recommends application and network controls together. For known destinations, valid hostname syntax and membership in the permitted destination set are separate checks. Redirect following can bypass initial validation, and permitted domains can resolve to unexpected internal addresses. The guidance therefore addresses redirects and DNS behavior in addition to URL input.

  65. How we hacked YC Spring 2025 batch’s AI agents

    A tool that accepts an arbitrary repository destination can send its private-repository credentials to an attacker-controlled endpoint.

  66. Docker Sandboxes: Monitoring Policies

    Docker distinguishes listing configured policies from observing network decisions. Its documented policy log identifies the sandbox, destination, outbound path, matching rule and available reason. Paths include forward proxying, transparent interception and requests to open a URL in the host browser. The monitoring page explicitly limits this log's coverage to network activity and says filesystem mount decisions are not included.

  67. IT Admin for the AI Workforce — Sarthak Aggarwal, Decawork

    Represent the agent actor, accountable owner, represented subject, and delegation context separately.

  68. CIAM for AI: Authn/Authz for Agents — Michael Grinich, CEO of WorkOS

    Capability-based tokens encode authority for a specific action rather than granting a broad role.

  69. Why, and how you need to sandbox AI-Generated Code? — Harshil Agrawal, Cloudflare

    Apply capability-based security: default deny, then expose only narrow, explicitly granted interfaces.

  70. IT Admin for the AI Workforce — Sarthak Aggarwal, Decawork

    Issue short-lived capabilities for approved actions rather than standing executor credentials, and record the delegation behind each action.

  71. Vault: Lease, Renew, and Revoke

    Vault associates dynamic secrets and service authentication tokens with leases containing a duration and renewal information. Consumers renew eligible leases or request replacement credentials. Revoking a token also revokes leases created using that token. Vault distinguishes these dynamic-secret leases from arbitrary secrets stored in its key-value backend, which does not issue leases.

  72. Vault: Troubleshoot Irrevocable Leases

    Vault's published PostgreSQL tutorial demonstrates a revocation failure by making the database unavailable before a dynamic credential's lease expires. Vault cannot connect to issue the required revocation statements. The example separates a lease reaching expiry from successful invalidation at the external service.

  73. OWASP Logging Cheat Sheet

    OWASP advises against directly logging passwords, access tokens, session identifiers, connection strings, encryption keys, sensitive personal information, and payment data; remove or appropriately protect sensitive fields. Validate and sanitize event data crossing trust boundaries to prevent log injection. Restrict and periodically review read access, record access to logs, protect transfer and storage, and apply retention and disposal rules to debug logs, backups and extracts as well as primary logs. Applied to agents, collect the identifiers, timings, outcomes and selected diagnostic fields needed for investigation; do not assume entire prompts, retrieved documents or tool responses are safe to retain.

  74. Linux getrlimit(2)

    Linux resource limits distinguish an enforced soft limit from a hard ceiling on changes an unprivileged process may make. RLIMIT_CPU limits a process's accumulated CPU seconds: the soft limit raises SIGXCPU and the hard limit causes SIGKILL. RLIMIT_AS limits virtual address space and can make memory operations fail. RLIMIT_FSIZE limits individual file growth, causing a signal or failed write. These limits have different scopes and failure behavior.

  75. Python subprocess: Pipes, Communication and Timeouts

    Python warns that waiting for a child without draining piped output can deadlock when the pipe fills. Popen.communicate drains the streams but buffers their contents in memory, making it unsuitable for unlimited output. Its timeout raises an exception without killing the child; cleanup requires separate termination and continued pipe handling. Thus a caller's waiting deadline, workload termination and bounded output collection are different controls.

  76. systemd.service: Runtime and Stop Timeouts

    systemd's RuntimeMaxSec lets a service manager terminate a service after its active runtime exceeds a configured duration and mark it failed. Startup and stopping have separate timeout controls. RuntimeMaxSec does not apply to oneshot activation, and notify-type services can extend it through supported notifications. A purported hard deadline therefore depends on the unit type and permitted extension mechanisms.

  77. systemd.kill: Process Killing Procedure

    With KillMode=control-group, stopping a systemd unit targets all remaining processes in its control group. The usual sequence requests termination, then escalates to SIGKILL after the stop timeout if processes remain and escalation is enabled. KillMode=process targets only the main process; the documentation warns that other processes can remain alive even while the service is considered stopped.

  78. Quantifying infrastructure noise in agentic coding evals

    With model, harness, and tasks held fixed, the reported coding experiments vary resource allocations and enforcement. Guaranteed CPU or memory allocation is different from a hard limit that terminates a container. Extra headroom can prevent transient infrastructure failures; sufficiently generous resources can also enable strategies that were previously infeasible, changing the task being measured. An evaluation configuration should therefore record both resource guarantees and enforcement limits, alongside time budgets, instead of attributing every score change to the model or prompt.

  79. Linux pid_namespaces(7)

    A PID namespace controls which processes are visible as process-ID targets. Processes can see members of their own namespace and descendant namespaces, while a child namespace cannot see ancestors. Each namespace has an init process responsible for reaping orphaned children; if that init process terminates, the kernel terminates the namespace’s remaining processes. Orphans may instead be adopted by a configured child subreaper. Process visibility, signaling authority and descendant cleanup are therefore related but distinct lifecycle concerns.

  80. Arrakis: How To Build An AI Sandbox From Scratch

    Arrakis checkpoints guest memory and the writable filesystem while the VM is paused, then resumes execution.

  81. Firecracker Snapshot Support

    Restoring a Firecracker snapshot requires its memory and machine-state files plus separately prepared disk backing files, network interfaces and other referenced host resources. Reusing one saved state can duplicate identifiers, random seeds, entropy pools and cryptographic tokens. The documentation treats repeated resumption as insecure without a mechanism preserving required uniqueness. Snapshot files also consume host storage for which integrators must provide sufficient capacity and enforce quotas when customers can trigger snapshots.

  82. Temporal Activity Execution

    An Activity Execution can comprise multiple task attempts. Temporal relies on timeouts to detect lost work, including worker crashes after invocation, and retries according to policy; limiting attempts to one prevents retry but does not prove an external effect failed. Cancellation is cooperative: activities receive service cancellation through heartbeats, can ignore it, and workflows may proceed without waiting for acceptance. A timed-out attempt may therefore continue while another attempt runs. Application consequence: treat an unconfirmed external mutation as uncertain, retain its operation identifier, reconcile against the receiving system, and use enforced idempotency or explicit recovery before repeating it. Timeout or cancellation is not evidence that a payment, message, or write was reversed.

  83. Making Retries Safe with Idempotent APIs

    A timeout can leave the caller unsure whether a mutation succeeded. AWS describes caller-provided request identifiers reused for retries of the same intent, with duplicate detection scoped to the caller and identifier. Identical parameters alone do not establish identical intent. The service must durably coordinate recording the identifier with all related mutations as an ACID operation: recording first can suppress work that never happened, while mutating first can allow duplicate effects after a crash. Duplicate requests receive semantically equivalent responses; reusing a key with changed parameters produces a mismatch error. Retention must account for late retries, with a service-specific lifetime. Merely putting a key in logs supplies audit evidence, not atomic duplicate prevention. Application inference: a local key log cannot guarantee an external side effect is idempotent unless that effect participates in the relevant protocol.

  84. Making retries safe with idempotent APIs — Amazon Builders' Library

    A caller-provided request identifier expresses that repeated requests represent the same logical operation. Identical parameters alone cannot establish this: a user may intentionally request two identical resources. The server must coordinate recording the identifier with performing the mutation atomically, return a semantically equivalent result for a retry, and reject reused identifiers paired with different intent or parameters. Retention of identifiers also needs a defined lifetime. These semantics let an agent runtime retry an uncertain tool response without silently turning one authorized operation into two.

  85. Why, and how you need to sandbox AI-Generated Code? — Harshil Agrawal, Cloudflare

    PromptMotion's presented architecture gives each user a separate container and performs repository, dependency, and server operations inside it.

  86. AWS Lambda: Execution Environment Lifecycle

    Lambda can freeze and reuse an execution environment after an invocation. Initialized global objects, temporary files and reusable connections can survive; unfinished background processes or callbacks can resume. After an invocation failure, Lambda resets the runtime and extensions, but explicitly does not clear /tmp before subsequent initialization. Warm reuse avoids repeated setup, whereas SnapStart restores saved memory and disk state. Neither mechanism means all previous state has been removed.

  87. Docker Sandboxes: Security Model

    Docker's agent sandbox documentation identifies explicit sharing that survives the VM boundary. The default workspace mount is writable and changes host files immediately; clone mode instead uses a private working clone. Supported agents can also share a writable host-side skills store, allowing one sandbox to modify instructions or scripts used by another. Local stdio MCP servers run on the host and use host permissions, even when invoked by a sandboxed agent. Installed packages and other VM state persist across restarts.

  88. AWS Lambda: Tenant Isolation

    Lambda's tenant isolation mode associates execution environments with a supplied tenant identifier and reuses them only for that tenant. This differs from ordinary function-level reuse, where previous invocations of the same function version can leave accessible state. The documented separation does not create tenant-specific service permissions: all tenants still use the function's execution role. The mode also excludes SnapStart and provisioned concurrency.

  89. From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

    The talk presents warm pools, just-in-time restoration from guest-memory snapshots, and a hybrid pool replenished from snapshots as alternative designs.

  90. Teaching AI to Find Real Vulnerabilities — Prof. David Brumley, Bugcrowd

    A fault within the sandbox and an exploit that crosses the sandbox boundary are different capability levels.

  91. gVisor Security Model

    gVisor reduces exposure to the host kernel by intercepting application system calls in its Sentry and restricting the Sentry's own host-system interface. This protects a different boundary from an application's authorization policy. The documentation explicitly notes that an attacker may reach a vulnerable network service or another API without escaping a container at all. A sandbox therefore needs an architecture that constrains accessible files, credentials, services, and network paths; isolation of execution alone cannot decide which allowed business action should happen.

  92. The Confused Deputy

    Hardy's compiler example combines authority supplied by its caller with authority granted for its own accounting work. A caller names a protected billing file as the debugging-output destination; the compiler unintentionally uses its own stronger authority to overwrite it. The caller's ability to name that file was not permission to write it. In the capability solution, a reference identifies the resource and conveys authority for its use. The compiler explicitly uses its own capability for statistics and a caller-supplied capability for caller output, keeping the two sources of authority separate.

  93. Firecracker: Seccomp Filter Validation Tests

    Firecracker's published test compiles its per-thread seccomp policies and runs a helper against the resulting filters. It checks permitted calls and arguments, then changes constrained arguments and expects rejection through SIGSYS. The test therefore checks behavior on both sides of a policy rule, rather than merely confirming that a filter file exists.

  94. AI’s Jurassic Park Period

    An agent can bypass an intent-level approval requirement by selecting an available tool that does not enforce it.

  95. AI’s Jurassic Park Period

    Structural compliance and auditability do not establish that an agent respected the intended constraint.

  96. AI’s Jurassic Park Period

    Escalations should explain the proposed action, suspected constraint violation, and likely consequences rather than present an opaque command with a yes/no prompt.

  97. IT Admin for the AI Workforce — Sarthak Aggarwal, Decawork

    A restriction expressed only as an instruction does not prevent an authorized agent from taking destructive actions.

  98. Harbor Task Structure

    Harbor tasks package instruction.md, task.toml, an environment build context, tests and an optional reference solution. Configuration specifies resource requirements, timeouts and environment behavior. Tests produce reward.txt or reward.json. Shared verification runs in the agent container and can see its workdir, installed tools and environment variables. A separate verifier environment has its own image and receives declared artifacts plus /logs/artifacts/. Its image must include its test entrypoint. Network policies distinguish environment baselines from agent and verifier phases.

  99. Don't Ship Skills Without Evals

    Test descriptions against both realistic requests that should activate the skill and nearby requests that should not.

  100. From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

    Namespaces and cgroups address resource isolation and noisy neighbors, but containers still expose the shared host kernel; seccomp narrows that exposure at a compatibility cost.

  101. Unlock Agent Autonomy: The Runtime for AI-Native Systems

    Execution portability should carry the same security policies and controls into cloud execution and orchestration.

  102. Kubernetes Network Policies

    Kubernetes NetworkPolicy regulates connections using addresses, ports and selected workloads, with ingress and egress controlled independently. Enforcement requires a supporting network plugin; an API object alone does nothing. Applicable allow rules combine additively. New policies may take time to reach the plugin, so a workload created too early can start unprotected. After policy handling, conformant implementations isolate affected new workloads before their containers start. Whether policy changes terminate already-established connections is implementation-defined.

  103. Chromium Linux Syscall BrokerProcess

    Chromium’s upstream broker interface creates a separate broker process before the client enters its sandbox. The sandboxed process sends requests over IPC, and broker policy contains explicit read and write allowlists. This is a concrete brokered-capability pattern: hostile code does not receive unrestricted filesystem authority merely because a privileged helper exists; the trusted helper mediates the named operation under independently held policy.

  104. From fork() to Fleet: Designing an Agent Sandbox Cloud — Abhishek Bhardwaj, OpenAI

    The proposed fleet architecture separates regional cluster selection from node selection, considering proximity, load, and node health.