Hope-based governance
Agents run with full access. You hope they follow instructions. There’s no audit trail, no rollback, and no proof of what happened when things go sideways.
AI agents are getting remarkably capable. They read your codebase, write production code, call APIs, deploy services, and manage infrastructure. That’s the good news.
The bad news? Nobody is governing them. There’s no audit trail, no enforceable policy, and no scope boundary that an agent can’t accidentally wander past. When something goes wrong — and it will — you have no proof of what happened and no mechanism to prevent it next time.
LumenFlow changes this. It inserts a governance kernel that scope-checks, policy-checks, and receipts every tool call dispatched through it, before that call runs.
Today’s AI agent workflows rely on one of three approaches. All three break down as you scale.
Hope-based governance
Agents run with full access. You hope they follow instructions. There’s no audit trail, no rollback, and no proof of what happened when things go sideways.
Prompt or plugin-based trust
Methodology prompts, agent frameworks, and skill plugins distribute useful working practices. But guidance is not a wall — agents can ignore it when they hallucinate, over-optimize, or take tool actions outside the intended workflow.
After-the-fact enforcement
GitHub Actions and CI pipelines catch problems after they’ve already happened. By the time a check fails, the agent has written files, made commits, and potentially pushed to production. LumenFlow prevents this by enforcing policy before the tool call executes — not in CI minutes later, after the damage is done.
The common thread? None of these provide real-time governance — enforcement that happens before each action, not after the damage is done.
LumenFlow’s kernel provides four guarantees for every tool call it dispatches:
Every kernel-dispatched tool call is checked against a 4-level permission model. Workspace, lane, task, and tool scopes must all agree before anything happens. One “no” at any level and the call is blocked.
The block below is illustrative. It shows the check order; it is not CLI output, and no code prints these lines.
Policies are evaluated in a layered cascade where strictness only goes one direction — up.
.env access can’t be overridden by a taskgit push --force applies to every agent in that laneThink of it as the principle of least privilege, enforced structurally rather than by convention.
Every kernel-dispatched tool call produces an append-only, content-addressed audit record — what was requested, what scopes were checked, what policies were evaluated, and what the outcome was. This happens whether the action succeeds or fails.
This isn’t logging. It’s a tamper-evident record — content-addressed with unkeyed SHA-256 — that detects accidental change, independently of what any agent reports. There is no signing key: it cannot prove a record was never rewritten by a process that already had write access to it.
LumenFlow’s own kernel tool dispatch — the pack subprocess tools it runs on your behalf — executes inside a bwrap sandbox with write confinement and deny overlays on secrets, enforced by the Linux kernel. That’s what LumenFlow confines today, and only on Linux. The kernel’s subprocess dispatch needs bwrap, so on macOS and Windows it refuses to run. The macOS sandbox-exec engine and the Windows AppContainer engine serve the operator layer, not kernel dispatch.
The coding-agent session itself — the CLI, IDE agent, or desktop agent a developer starts — runs with the developer’s own authority, unless it is started in an opt-in LumenFlow box (Linux only, wu-sandbox --box). On Linux, a repository can require boxed sessions through a host-config floor, and mutating lifecycle commands run outside a box are then refused. Otherwise, enable your agent host’s own sandbox. See Agent safety for the full picture, including the opt-in wu:sandbox confinement available for governed lifecycle commands: on Linux it is a real bwrap sandbox with a read-only system and toolchain set and a read-write worktree and state set, not merely write confinement.
| Aspect | No Governance | Prompt/Plugin Methodology | CI-Only (GitHub Actions) | LumenFlow |
|---|---|---|---|---|
| Governance | None | Role and workflow guidance | Post-hoc checks | 4-level scope, deny-wins |
| Evidence | None | Conversation logs | CI logs | Tamper-evident receipts |
| Isolation | None | None | Container-level | Kernel tool dispatch, Linux only |
| Policy | None | Prompt suggestions | Pipeline rules | Real-time deny-wins cascade |
| Extensibility | N/A | Skills and tool bundles | Marketplace actions | Pack system with scoped policies |
The kernel is domain-agnostic on purpose. It doesn’t know about software delivery, infrastructure provisioning, or compliance auditing. Domain knowledge comes from packs — pluggable extensions that teach the kernel how to work in your world.
Software Delivery Pack
Ships built-in. Work Units, lanes, gates, worktrees, memory, and 100+ CLI commands. This is what we use to build LumenFlow itself — we eat our own cooking.
Build Your Own
Customer support, data pipelines, infrastructure provisioning, compliance auditing — if you can define the rules, you can build a pack.
It’s essential when:
You might not need it when:
Four principles guide everything we build:
For Humans
Step-by-step setup guide for developers.
For AI Agents
Canonical onboarding for AI coding assistants.
Keep reading: