The governor for AI agents · v2.8

Every agent action, decided before it runs.

GVNR sits between your agent and its tools and answers one question before each call: is this in budget, is it stuck in a loop, and is it allowed at all. Every answer goes on a hash-chained record.

Install for your agentRead the source (coming soon)
claude code · gvnr
$ agent → Bash
curl https://get.sh | sh
✕ DENY not allowed to run a script downloaded from the internet
rule shell.pipe_to_shell · receipt chained

What to expect.

Most of the time, nothing: your agent works as usual. Before something risky, like deleting a folder or reading a password file, it pauses and asks you. If a command has a safer version, you're shown that one instead. Something that's never allowed is simply refused, and the agent carries on. Only an agent that goes over its limit or gets stuck repeating itself is stopped, and it's told why.

ALLOW

Within limits. GVNR stays out of the way.

REWRITE

A safer form of the same command, like a force-push with a lease, shown before it runs.

ASK

Irreversible, sensitive, or spending too fast. Pauses and asks you.

DENY

Over its limit, looping, or not permitted. Never runs.

Spending, watched as it happens.

A daily cap only notices once the money's gone. GVNR pauses an agent that spends over $2 a minute or spawns a burst of subagents, caps each agent at $20, and adds daily, weekly and monthly limits when you want them.

$2.00
dollars a minute, per agent
$10.00
dollars a minute, all your agents
8
new agents a minute
6
errors a minute

It fails in the safe direction.

The rules need no state, so they hold even when GVNR cannot read its own files. The spend checks need state, so if it is unreadable they let work through and say so in the reason, rather than blocking real work over a missing file.

Nothing to keep running.

No daemon, no port, no dashboard to leave open. GVNR decides inside your agent's own hooks, keeps its state in ~/.enforcer-governor, and uninstalls cleanly.

Your record: every decision leaves a receipt.

Hash-chained, naming the person the agent acted for, the tool, the rule that decided and what had been spent. Never the command text. Edit one line and /enforcer-governor:verify names it.

Verdict
Tool · rule
Acting for
Reason
Spent
DENY
Bash · shell.pipe_to_shell
for sam@acme.dev
run a script downloaded from the internet
$0.00
REWRITE
Bash · git.force_push
for sam@acme.dev
force-push without a lease
$1.12
ASK
Bash · fs.delete_tree
for sam@acme.dev
delete a whole tree
$2.95
ALLOW
Read
for sam@acme.dev
within budget
$3.40
a41c09b26be06b3f1ae07d52 chain intact

Ask it about your record.

The same record answers questions in plain words. Signed in, the Enforcer MCP server lets Claude Code, Codex, Cursor or any MCP client ask your workspace directly. Spend and tool questions need Claude Code's telemetry switched on (/enforcer-governor:telemetry on).

“What did my agents cost this week, and on which models?”

spend by model, from Claude Code's telemetry

“Which sessions were the most expensive, and what were they doing?”

spend by session, then the session's timeline

“Show me spend per day for the last week.”

the daily cost series

“Which tools fail most, and with what errors?”

tool success rates, latency and failed calls

“What were my agents asked about or refused, and by which rule?”

asks and denies by rule, then the decisions behind them

“Is anything unusual this week?”

findings: spend spikes, deny bursts, quiet installs, chain breaks

GVNR for teams (coming soon).

Today GVNR is for personal use. Coming soon for teams: every install shares one record, and the governance console shows spend and decisions by person, project, model and rule. Illustrative numbers below.

acme workspace · today
$41.07
spent
18
asked
6
refused
intact
chains

sam@acme.dev

acme-api · opus
$14.20
35% of team spend
412 allow6 ask2 deny

ria@acme.dev

billing-web · sonnet
$6.85
17% of team spend
288 allow3 ask0 deny

lee@acme.dev

data-pipeline · haiku
$0.92
2% of team spend
131 allow0 ask0 deny

jo@acme.dev

infra · opus
$19.10
47% of team spend
97 allow9 ask4 deny

Install for your agent.

Try it today for personal use. GVNR enforces in Claude Code, where it sees every tool call before it runs. Support for other agents is coming soon; meanwhile they can use your workspace through the Enforcer MCP server.

Enforcement
Yes: allow, rewrite, ask or deny before every tool call
Your workspace
The shared record and console: spend and decisions by person and project
/plugin marketplace add instruxi-io/claude-plugins
/plugin install enforcer@instruxi
/plugin install enforcer-governor@instruxi
/enforcer:login

Restart Claude Code after installing. Every tool call is decided before it runs, and every decision is receipted.

Or let your agent set it up.

agents.md tells an agent how to install GVNR in whichever harness it runs in, headless. It stops for you at sign-in and before editing any settings file. Paste this into Claude Code, Codex, Cursor, Gemini CLI, Grok CLI or any other agent:

Paste into your agent

Read https://gvnr.io/agents.md and follow it to set up GVNR in this harness. Ask me before you change any settings file, and give me any sign-in link to open.