Agent Code Containment Stacks Five Axes, Not One

Code that agents run on the eOS runtime platform -- their skills, their decision logic, their tool implementations -- sits inside five independent containment mechanisms that each carry a different bound: language constraint (the DSL cannot express dangerous operations), location constraint (agent code lives only in agent-owned objects, never in privileged runtime layers), invocation constraint (agent code is only entered through the event system, not by direct calls from arbitrary code), capability separation (what agent code can reach in the runtime is mediated by the privilege layer), and atomic rollback (any error in agent code reverts the entire operation). To break out, agent code would have to defeat all five mechanisms simultaneously; no single attack surface offers that, which is why the stack is substantially stronger than any single contemporary platform provides for user-supplied code in a multi-tenant runtime.

Why It Is Held

Each of the five axes is independently comparable to what a serious sandbox offers, and each addresses a different failure mode. The language constraint prevents agent code from expressing operations the DSL was not designed to express -- no raw memory access, no escape to the host language, no system call surface. The location constraint prevents agent code from running in privileged runtime layers; the kernel and system tiers are inaccessible to user-tier code regardless of what the language permits. The invocation constraint prevents agent code from being entered by arbitrary callers; only the event system can dispatch into agent objects, which means an attacker who has not subscribed to events cannot reach the code. The capability separation primitive ([[Capability Boundaries Are Runtime-Enforced, Not Policy-Checked]]) bounds what agent code can reach when it does run -- privileged objects, kernel-tier files, and resource-quota mutations are mediated by the privilege layer, not by trust in the agent. The atomic rollback primitive ([[Agent Operations Commit Wholly or Roll Back Wholly]]) ensures that even if agent code reaches a state mutation, an error in the operation reverts the entire operation; no partially-applied state changes survive, no manual cleanup is required.

The stacking is what makes the architecture distinctive. Single-axis sandboxes are common -- a process boundary, a language sandbox, a permission system -- but each protects against one class of failure and assumes the other axes are not under attack. Stacked containment changes the cost calculus for an attacker: defeating language constraint puts them in a location they cannot run from; defeating location puts them in front of an invocation constraint that prevents direct entry; defeating invocation puts them inside a capability layer that bounds what they can reach; defeating capability still leaves them inside an atomic envelope that rolls back any partial state. The five mechanisms are independent -- breaking one does not weaken another -- so an attack must succeed against all five rather than against the weakest.

The comparative-platform claim is load-bearing for this Conviction's stance. WebAssembly with WASI offers a process-like sandbox and capability separation -- two of the five. Lua embedded in game engines offers a sandbox (language constraint) -- one of the five. Erlang offers lightweight processes (location-like) and supervision-restart (recovery rather than rollback) -- a different two of the five. None of the contemporary platforms widely deployed for user-supplied code in multi-tenant runtimes stacks all five. The five-axis architecture is structurally distinctive, not stylistically preferred. This is the safety story for LLM-generated code specifically: LLMs make mistakes, and the runtime must contain the mistakes rather than relying on the LLM to be careful or on the developer to manually validate every generated artifact.

This Conviction is held because the safety story for agent code -- including LLM-generated agent code -- depends on independence of the containment mechanisms. A safety architecture that collapses two axes into one (e.g., a runtime that uses the same enforcement layer for capability and invocation) becomes single-axis under attack on that shared mechanism. The five-axis claim asks the project to defend the independence of each mechanism; weakening or merging them does not just reduce the count, it surrenders the structural property that makes the stack stronger than the sum of its parts.

What It Asks

Honoring this Conviction asks the project to defend each of the five axes as an independent layer rather than as a stylistic preference about safety architecture.

Drift Recognition

The Conviction has weakened when the project's outputs treat agent-code containment as a single-axis or two-axis property, or when proposed paths erode the independence of the axes.

Relations