All articles

Prismor OSS Ships Three Governance Modes for AI Coding Agents, and What Each One Gives Up

Prismor OSS now ships three governance modes for AI coding agents. Each names its coverage, its measured friction, and what it does not stop.

Prismor Research Team

September 7, 2026 · 6 min read

Three collectible cards for the Prismor OSS governance modes: dev-safe, trusted-workspace, and regulated-airgap.

Configuring Prismor OSS has meant setting six independent policy axes. Enforcement fallback, egress allowlist, tool access, tag rules, sandbox ring, and step-up gates each live in a different place. Each carries its own default. A developer who wants nothing more than a posture that is safe for daily work has to assemble it by hand from settings.default_mode, settings.egress, settings.tool_tags, settings.sandbox, per-rule overlays, and an agents.yaml tool list.

That is six chances to get something wrong, and the failure is quiet. A policy that looks configured but leaves egress.default: allow reads like one that does not. So Prismor OSS now ships three named modes: dev-safe, trusted-workspace, and regulated-airgap. You pick one at install time, and each one states what it trades away.

The cost of a flexible policy engine

Flexibility is why a policy engine is worth running. It is also why teams stall before they finish configuring one. Every axis a security tool exposes is a decision handed to somebody who was trying to do a different job, and the person holding it is a developer three tickets deep on a Tuesday afternoon.

Power users want those axes and should keep them. The rest of us want a default that somebody already thought about. prismor setup covered one axis of the six, which rules block, and left the rest to be discovered. There was no way to ask for a whole posture, and no way to compare postures before adopting one.

The three modes

Each mode compiles down into the primitives the engine already reads, so this stays a configuration-layer feature and the enforcement path is untouched. Five self-protection rules stay on in every mode, which means a mode can never become cover for switching Prismor off.

Collectible card for dev-safe mode showing a golden swift in a lightning storm, with the ability line i havent read this code and the tagline secure coding agents.Collectible card for trusted-workspace mode showing a violet feline creature, with the ability line i trust this workspace and the tagline full AI power with security.Collectible card for regulated-airgap mode showing an armored tortoise on grass, with the ability line nothing is trusted and the tagline max secure agent operations.
Three postures, each with its own assumption about how much the repository can be trusted.
  • dev-safe. Assumes the repository may be hostile. Known destinations only, and read-only commands do not prompt. Built for open source contribution and PR review, where the agent is reading code nobody on your team has read yet.
  • trusted-workspace. Assumes the repository is trusted, so the agent gets broad autonomy inside it. Hard stops stay on secret reads and package installs. Built for internal repositories and microservices.
  • regulated-airgap. Assumes nothing is trusted. No network, no shell, and every write goes through approval. Built for regulated data and review-only workflows.
ModeAssumesCoverageFrictionNeeds Docker
dev-saferepo may be hostile31% (25/80)9%Yes
trusted-workspacerepo is trusted34% (27/80)9%No
regulated-airgapnothing is trusted100% (80/80)90%No

That table is the summary. The full axis-by-axis defaults, egress allowlists included, are in the Prismor OSS docs alongside the rest of the CLI reference.

Why the friction numbers land where they do

Coverage and friction are both computed rather than asserted. Coverage comes from the live ruleset. Friction comes from running a corpus of ordinary developer commands through each compiled mode and counting what gets interrupted.

The two everyday modes both measure 9%. regulated-airgap measures 90%. That gap looks severe until you look at where agents spend their tool calls.

Tool calls by category
Share of 430,000 sampled tool calls
Shell and command execution76%
bash, exec, git, pytest, npm test, cargo
File edits and patching11%
FileEdit, Write, ApplyPatch, EditorSubagent
File system inspection and read9%
ReadFile, Grep, Glob, Find, ViewerSubagent
Interactive verification and logs2.5%
tap, screenshot, get_logs, execute_in_app
External web and sub-agent calls1.5%
WebSearch, WebFetch, Sub-agents, Ask user
Distribution across broad coding agent workflows including SWE-agent, OpenHands, and Claude Code. Drawn from University of Washington TraceLab telemetry over a sample of 430,000 tool calls gathered from various developers.

Shell and command execution is roughly three quarters of everything an agent does. The other four categories split the remaining quarter between them. That single fact sets the friction budget for any policy you can write.

A mode that touches the shell category is spending most of the budget it has. regulated-airgap denies Bash outright, so its 90% is close to arithmetic. The two everyday modes keep the shell and auto-approve read-only commands and non-mutating git, which is how they hold 25 blocking rules and still land at 9%. One caveat on that number. The friction index measures shell interruption and nothing else today, which is why the two everyday modes score the same. The axes where they differ, secret reads and sandbox confinement, are not in the corpus yet.

What each mode does not stop

Every mode ships with its residual risk. Prismor OSS prints it straight from prismor mode explain, the same command it runs at install time. This is the reason the feature exists rather than a disclaimer bolted onto it. A posture whose holes you cannot describe is a posture you cannot reason about.

  • dev-safe does not stop exfiltration through the channels it allows, and that list is wide. api.github.com is allowlisted by design, so a secret can still reach a public issue comment. It is a control on arbitrary destinations, and it says so.
  • trusted-workspace does not stop the code it lets the agent execute. A malicious build script in setup.py or an npm preinstall hook runs with the agent’s full reach. No destination allowlist sees that happen.
  • regulated-airgap does not stop its own friction. The realistic failure is somebody running prismor uninstall-hooks to get through an afternoon. Poisoned repository context needs no network either, so local logic manipulation survives the airgap.

One limit applies to all three. Keeping a secret out of the model’s context is a different job from keeping it out of a tool call, and it needs per-secret enrollment through prismor cloak add. No mode can do that for you.

What teams should do

A mode is a starting posture. Adopt one, then tighten it once you can see what your agents do.

  • Pick a mode at install time. Match it to how much you trust the repository in front of you, which is a question people can answer without reading six config files.
  • Start in observe. prismor mode apply dev-safe --observe compiles the same posture with nothing blocking, so you get a week of evidence before anything interrupts a developer.
  • Read the residual risk before adopting. prismor mode explain names the gaps. If a listed gap is the one your threat model cares about, that mode is the wrong starting point.
  • Check the runtime for dev-safe. Its sandbox enforces, so it needs Docker. Without a runtime the apply refuses rather than degrading into a weaker posture nobody would notice.
  • Re-check for drift. prismor mode show reports the active mode and how far the file has moved from it.

Any control with six independent axes has a configuration surface, and a configuration surface is somewhere a policy can be wrong while looking right. Named postures that publish their own trade-offs turn that surface into something you can audit in one command, which is the whole bet behind shipping this as part of Prismor OSS. So here is the question worth putting to any agent control plane you are weighing up: can it tell you, right now, what it is letting through?

Written by Prismor Research Team

Keep reading