← Back to blog
AiAbout 6 min read

NVIDIA's OpenShell Enforces Agent Policy in the Kernel

Published Oct 29, 2026
NVIDIA's OpenShell Enforces Agent Policy in the Kernel

NVIDIA's OpenShell picked up roughly 8,000 GitHub stars this month, which for an infrastructure project is a strange amount of attention. It is a runtime for autonomous agents, written in Rust, Apache 2.0, and it does something that is easy to describe and hard to build: it enforces what an agent can touch at the kernel level, and it formally verifies a policy change before letting it apply.

The problem it addresses is the one that shows up the first time you give an agent real credentials. An agent is only useful if it can read files, install packages, call APIs, and use secrets. It is also, at that point, a program with your keys and your network. Most teams handle this with a container and a prayer.

What the enforcement actually looks like

OpenShell runs each agent in an isolated sandbox and instruments the kernel to check policy on every file access, system call, and network connection at runtime. Connections are checked before they leave the sandbox. Credentials are not handed to the agent at all; OpenShell injects them into requests bound for approved endpoints, so a prompt injection that dumps the agent's environment returns nothing useful.

The more unusual feature is the policy prover. Before a policy change is approved, OpenShell uses formal verification to identify what new access that change would grant, such as reaching a new host with credentials or calling a new API method. Those changes wait for human review.

That is a real design decision, and it inverts the usual workflow. Most sandboxing tools ask you to write a policy up front and then discover, painfully, what you forgot. OpenShell lets the agent request access as it works, and shows you the diff before it takes effect. Whether that is better depends on how much you trust your own review process at 6pm on a Friday.

一个半透明的封闭立方体悬浮在暗场中,内部有细密网格与光路,边界清晰

Installing it

The quickstart is one line and one command:

curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh, then openshell sandbox create --name demo. The installer sets up the CLI and a local gateway.

Requirements are the first real obstacle: Linux, macOS on Apple Silicon, or Windows through WSL 2, which the project labels experimental. You also need Docker, Podman, or host virtualization available. If your team develops on Windows without WSL, this is not a five minute install. There is a separate native Windows path through Microsoft MXC documented in a side branch, with its own limitations, which is worth reading before you promise a Windows rollout.

The default sandbox image is a minimal Ubuntu with no agent installed. To run something real, the docs walk through running OpenCode against a free OpenRouter model, including the part where the agent hits a wall and you approve the new access it needs. That walkthrough is the most useful page in the repository, because it shows the approval loop rather than describing it.

There are SDKs if you want to drive it from code: Python through uv add openshell, TypeScript through a GitHub Packages install, plus Go and Rust. There are also agent skills, installable with npx skills add NVIDIA/OpenShell, that teach a coding agent to drive the CLI and write policies. That detail is more interesting than it sounds. The project expects the agent to help configure its own cage, which is either efficient or alarming depending on whether the approval loop in front of the policy prover is actually used.

The operational bill

Anything that instruments the kernel has a deployment story more complicated than a pip install, and OpenShell's is honest about it. There is a gateway, a supervisor, and the sandbox itself. For Kubernetes, you deploy the gateway with Helm and your CNI has to actually enforce NetworkPolicy, which is a sentence that has ruined many afternoons. If your cluster's network plugin ignores those rules, the sandbox boundary is a document rather than a control, and you will not find out until something goes wrong.

The version numbering tells you where it is. The 0.1.x line introduced a stable release cadence, new isolation primitives, and new APIs, which means the API surface is still moving. Teams adopting now should expect upgrade work.

Telemetry is on by default. NVIDIA says it is limited to operational categories and counts, and does not include sandbox names, hostnames, file paths, prompts, credentials, provider or model names, or user content. You can turn it off with OPENSHELL_TELEMETRY_ENABLED=false on the gateway, or server.telemetryEnabled=false for Helm installs. In an enterprise review, that switch is the first thing someone will ask about, so know where it is before the meeting.

Who needs this now

If you run one coding agent on your own laptop, you do not need OpenShell. The blast radius is your own machine, and you already accepted that risk when you installed the agent.

If you run a fleet of agents that touch production data, customer records, or a cloud account with a real bill attached, the calculus changes quickly. The failure mode that keeps security teams up is not a model saying something rude. It is an agent with a valid token doing exactly what it was told, in an environment where "what it was told" was influenced by a web page it read.

Between OpenShell and a plain Docker container, the difference is where the trust boundary sits. A container limits what an agent can see. OpenShell limits what it can do, checks the network at the edge, and keeps credentials out of the agent's reach. That is a meaningfully stronger position, and it costs you a gateway to operate, a policy file to maintain, and one more thing that can page you at night.

The thing to watch

The formal verification angle is the part I would watch. If policy changes can be checked before they apply, the interesting question becomes whether the check is useful in practice: does it catch the changes that matter, and does it stay quiet on the ones that do not. A prover that flags everything gets clicked through, and a prover that flags nothing is decoration.

NVIDIA has the credibility and the incentive to keep this maintained, and the agent-safety market is large enough that it will not be the only option. For now, if you are building the part of an agent product that decides what the agent is allowed to touch, this is the most concrete implementation available to read. Reading the policy model is worth an hour even if you never install it, because it forces you to answer a question most agent projects skip: what exactly is this thing allowed to do, and who decided that.

Related articles