SHIP FASTER WITHOUT BREAKING THINGS

Stop approving every command your coding agent runs.

Let it run. Your rules decide what it can do, not an LLM.

Run your own Claude Code or Codex (or Copilot, Devin, Kimi) in Warden, on the subscription you already pay for. Every command, file read, edit and MCP call is checked against a few lines of YAML: deny blocks it, ask waits for your yes, the rest just runs. Opt-in assurance checks show you what you're merging.

Want company-wide rules? See the Team plan →
Free, including for commercial work · licence key by email, download straight away · Apple Silicon (M1 or later) · your code goes only to your model, never to us
// your "y" key can finally retire
Unwraps sudo, sh -c and ../ paths before it checks
1 / 11
BLOCKED
deny: { touches: dotenv }Same file, however the command is written.
WHAT WARDEN SEES
└sh -c 'cat .env'
└nested shell opened: cat .env
└effect: reads a dotenv file
EXAMPLE RULE FILE · GUARDED
1default: allow
2rules:
3 - deny: "git push --force"
4 - deny: "terraform destroy"
5 - deny: { touches: dotenv }
6 - ask: { touches: unverifiable }
7 - ask: aws
8 when: { flag.profile: prod }
9 - deny: { env: prod, stmt: [update, delete, drop, truncate, alter, create] }
10 - deny: { env: prod, stmt: insert }
11 unless: { table: bug_reports }
How this demo works ↓
A list that matches the command's text, like Bash(cat .env), misses sudo cat .env, sh -c 'cat .env' and the ../ path. Warden unwraps first, then your rule file decides, not another model. This demo runs only the lines shown, in your browser. The real Open, Guarded and Hardened rule sets add more rules (Guarded also blocks sudo and asks before rm -rf and package installs). The rule-set buttons only change what happens to eval and $(...); the example lines stay the same.
KEY SPECIFICATIONS
Decides withA policy engine. 0 LLMs.
Decision time (engine)Microseconds
AgentsClaude Code, Codex, Copilot, Devin, Kimi
WorkspaceAgent chat, editor, diff, terminal, browser
PlatformmacOS, Apple Silicon
Code sent to us (Pluto)None, unless your company routes models through our hosted AI gateway
TYPICAL APPLICATIONS
  • A long refactor without a yes for every npm test
  • Blocking the agent's reads of .env files
  • Repos where production is one command away
  • Runs you're not watching (automations, the Factory), with rules that can only be tighter
01HOW IT WORKS

Already skipping permissions? Keep the speed, and add back only the stops that matter.

--dangerously-skip-permissions · --yolo

Write down the few things that must never happen and the few that need a person. Everything else just runs, and every decision on the agent's actions shows up in the chat as it happens.

AN EXAMPLE RUN · "ADD RATE LIMITING TO THE LOGIN ENDPOINT"
THIS RUN SO FAR
Actions taken0
Ran without a prompt0
Blocked by a rule0
Asked you0
Nine actions, one question for you. That's the job.
  1. 1Get WardenIt drives the Claude Code or Codex CLI you already have signed in, so no API keys are needed.
  2. 2Pick a starting rule setOpen (keeps the agent's file access inside the project), Guarded (recommended: blocks secrets, force-pushes and destructive commands, and asks before risky ones) or Hardened (the most blocks). All editable.
  3. 3Give the agent a taskIt works in Warden's chat, with a full editor and the diff in the same window.

Bring what you already pay for.

Mix and match, switch models mid-conversation, keep several ChatGPT accounts signed in.
1 · YOUR SUBSCRIPTIONSClaude, ChatGPT / Codex, GitHub Copilot, Devin, KimiSign in once in each tool's own CLI and Warden drives it over ACP. No API keys, no metered bill on top.
2 · YOUR API KEYSAmazon Bedrock, Azure OpenAI, Google Gemini, OpenRouter, DeepSeek, Qwen, GLMBring your own key for hosted frontier and open-weight models, run by Warden's built-in agent.
3 · YOUR OWN HARDWAREOllama, llama.cpp, LM StudioRun open-weight models locally. Your code never leaves your Mac.
Whichever you pick, the same rule file applies. API keys, local models and Claude Code are checked before every action; for the rest, see Known limitations.

An agent and a code editor, in one window.

Built for people who check the work.
CHATThe agent works hereWatch every tool call and its verdict as it happens, and steer mid-run.
FILESA real editorOpen any file, edit it and save it. The agent sees your change before its next step, and asks before overwriting it.
DIFF AND COMMITReview, then shipRead every change side by side, comment on a line for the agent to fix, then pick the files and commit.
TERMINAL AND BROWSERNo window switchingA terminal and a built-in browser sit in the same window as the agent.
Every change lands where you can see it, and only you or your rules decide what merges.
02FACTORY// for working through a backlog

From ticket to shipped, with a person at the gates that matter.

Pull work in from Linear, Jira, GitHub or Sentry. Your agent plans it and builds it in its own worktree, and a different model can review it against the original ask. You choose where a person signs off.

One board shows where everything is and what's waiting on you. Each lane below it is how much sign-off a ticket gets. Small fixes can go from idea to merged with no clicks, unless a rule holds them, and a rule can hold anything that touches migrations/.

MISSION CONTROL · EXAMPLE PROJECTPick a stage or anything waiting on you
NEEDS YOU
Triage: checkout 500 from Sentry. A Sentry error came in overnight and an agent drafted the triage. Accept it into a lane, ask for more, or reject it.
the agent does ita gate: the item waits here for a personStaging and Production: shipped status read from a branch, tag or deployment you chooseThe gates are rules too, checked by the same engine.
LANE
IDEAS
TRIAGE
SHAPE
BUILD
REVIEW
MAIN
SHIPPED
Express
typos, one-liners
Linear, Sentry
auto, by size
skipped
own worktree, sandboxed
policy checks the diff
if rules allow
from your deploys
Standard
plan, then build
GitHub issue
you approve
you approve the plan
own worktree
you review
you merge
from your deploys
Assured
full spec
Jira
you approve
requirements, design, tasks
own worktree
model vs spec, then you
you merge
from your deploys
Express · typos, one-liners
IDEASLinear, Sentry
TRIAGEauto, by size
SHAPEskipped
BUILDown worktree, sandboxed
REVIEWpolicy checks the diff
MAINif rules allow
SHIPPEDfrom your deploys
Standard · plan, then build
IDEASGitHub issue
TRIAGEyou approve
SHAPEyou approve the plan
BUILDown worktree
REVIEWyou review
MAINyou merge
SHIPPEDfrom your deploys
Assured · full spec
IDEASJira
TRIAGEyou approve
SHAPErequirements, design, tasks
BUILDown worktree
REVIEWmodel vs spec, then you
MAINyou merge
SHIPPEDfrom your deploys
Triage, shaping, build and your custom steps can each run the skill and model you pick.
03REVIEW// the new bottleneck, sorted

Your agent writes code faster than anyone can review it.

So Warden makes review the fast part. The riskiest changes come first with the reason why, boilerplate folds away, and a second model can check the work against what you actually asked for.

WALKTHROUGH · EXAMPLE PULL REQUEST
444 changed lines across 7 filesunsorted
docs/checkout.md+22
migrations/0042_order_index.sql+12
package-lock.json+260
src/auth/session.ts+18
src/cart/total.ts + its test+92
src/i18n/en.json+40
A 444-line pull request, in the order git lists it.
FOUR WAYS TO GET REVIEW OFF YOUR PLATE

Open one of the project's pull requests and get this walkthrough, plus a line-by-line review on a model you pick. Edit the findings, then post them to GitHub as yourself or hand them to the agent to fix.

04YOUR RULES// shorter than most commit messages

Rules you can read at a glance.

Your rule file is a few lines of YAML. Start from a rule set, switch on ready-made protections, or describe the rule in plain English: Warden writes the YAML and tests it on example commands before you save.

Runs you're not watching (automations and Factory items) can have their own rule file, which can only tighten your everyday rules. In those runs, when an action needs your yes, Warden holds it for your review and tells the agent not to work around it; the run carries on without waiting for you. In a sandboxed run, an action that would need your yes goes ahead if its effect stays inside the sandbox.

FROM PLAIN ENGLISH TO A TESTED RULE
YOU SAY
"Let the agent use kubectl, but when it targets a prod-* context, read-only commands only."
2am. An unattended run. One command on your deny list.
$
deny: "terraform destroy"Decided by your rule file in microseconds. No model consulted, nothing destroyed, and the agent is told not to try a workaround.
05AFTER A RUN// "done" now comes with receipts

Know what you're merging without reading every line.

Set an assurance level on a chat. Each time the agent changes files, Warden runs your lint, type-check and tests (L0); from L1 it also checks that the tests the agent added or changed fail on the old code. Press Verify for L2 to L4. Each graded run is labelled with the highest level it reached, and what that still doesn't prove.

FIVE LEVELS, IN YOUR LANGUAGE
THE CHANGE THE AGENT MADELogin now refuses any attempt after 5 failed ones. Before, it never refused.
// src/auth/rateLimit.ts
export const isBlocked =
- (failedAttempts: number) => false
+ (failedAttempts: number, limit = 5) =>
+ failedAttempts >= limit

L0 · Built

Runs automatically on each change, once a level is set

Once a level is set for the chat, as soon as the agent's run changes files, Warden runs the checks your project already has: lint, type-check and tests. There's nothing new to write. If something fails, the agent is told what broke so it can fix it.

YOU WRITE: NOTHING NEW. WARDEN RUNS YOUR EXISTING CHECKS, FOR EXAMPLE
$ npm run lintRunning…
$ npm run typecheckQueued
$ npm run testQueued
TELLS YOU
Nothing is obviously broken.
DOESN'T TELL YOU
Whether any test actually exercises the new code.
Each level builds on the one below. You choose the level for each task or spec, and can add your own checks (a script, a workflow or a skill) to any level. Pick a different model to review the work, and the agent isn't marking its own homework.
Try it on your next ticket.Free. No card. No sales call.Get Warden free
06THE REST OF THE DAY// the boring bits, automated

The other things that slow you down, handled in the same app.

Pick the one that costs you most. Anything here the agent runs goes through the same rules.

"It broke something and I can't get back."

Every run is a restore point.

Before each run, Warden snapshots your working tree (tracked and untracked files) as git objects kept off your branches, so your history stays clean. Put your files back in one click. A restore saves your current state first, so it can be undone too.

Before run 3 · "Add a test for the 429 response"today, 14:12
Before run 2 · "Add rate limiting to login"today, 13:47
Before run 1 · "Explain the auth flow"today, 13:30
Pick a point to put your files back.

Absolute maximum ratings

Note 1. Stresses beyond these ratings may cause permanent damage to your production database. Hence the ratings.
PARAMETERMAX
Models consulted before each verdict
It's a policy engine, not another LLM
0
Yes clicks for commands your rules already allow
that was rather the point
every one0
Actions needing your yes that an unattended run takes outside its sandbox
held for your review while the run carries on
0
Unreadable commands run unasked, on Guarded or Hardened
Guarded asks you; Hardened blocks them. Open lets them run
0
Rule formats to learn, whichever agent you use
the same YAML for Claude Code, Codex and the rest
1
07PRICING// free as in "use it at work"

Free for every developer. Team for the whole company.

The free edition is yours to use anywhere, commercial work included: your job, your clients, your own company. Team is for when a company wants one place to set rules, skills and model access for every developer.

FOR DEVELOPERS
DeveloperFree

For any project, personal or commercial. The full app and policy engine.

  • Everything on this page except the Team features: company-wide rules, shared skills, the AI gateway, seats, and plan and spec backup
  • Bring your own subscriptions, keys or local models
FOR COMPANIES
TeamCustom pricing

For when a company wants one set of rules on every laptop. Set rules, skills and model access once, and every developer's Warden picks them up.

  • Everything in Developer, plus:
  • Company-wide rules: every developer's Warden enforces them, and nobody can loosen them
  • Shared skills, kept in sync on every seat
  • Optional AI gateway (OpenRouter and more), hosted by us or pointed at your own proxy: every seat connected automatically, no provider keys on laptops, per-seat budgets and allowed models
  • Seats and roles, plus backup and sharing of the agent's plans and specs
  • Priority support
  • An MSA your procurement team can review and sign
  • Optional hands-on rollout: rules, workflows and checks fitted to how your team ships

Per-seat licence plus a one-time setup fee, under a commercial licence and MSA. We quote after the walkthrough, once we know your team and stack.

Using it at work? Go ahead.// no licence police were dispatched

The free edition is licensed for commercial work. We'd value feedback on what to fix: warden-support@zsguard.com. When more of your team picks it up, Team gives you company-wide rules, shared skills and an AI gateway, and we'll help you move over.

Your employer's own rules on new tools still apply. That part is between you and them.

Known limitations

// we'd rather you heard it from us
  • Only agents you run inside Warden are checked. The CLI in your own terminal isn't.
  • Claude Code is checked before every action. With Codex, Copilot, Devin and Kimi, anything the agent asks permission for is checked before it runs, but a tool it runs without asking is only checked as it starts: it may already have run, though a blocked result is thrown away before the agent sees it.
  • Workflow shell steps run from a button or an automation aren't policy-checked yet. Run from chat, they are.
  • Rules check each command before it runs, not what a running program does: an allowed python script.py can still read .env.
  • Wrappers are unwrapped and force-push is recognised in every form, but other flags aren't normalised: deny: "rm -rf" won't catch rm -fr today, so add a line per spelling.
  • On the Open rule set, commands Warden can't read in advance (eval, $(...)) run without asking.
  • Apple Silicon Macs only. No Windows, Linux or Intel builds yet.
  • L2 plants up to five bugs per change: a useful signal, not a full mutation-testing run.
  • Restore points skip git-ignored files, so they won't bring back a deleted .env.
  • It's a developer preview, provided as is.
08BEFORE YOU INSTALL

The questions engineers ask first.

Do I give up Claude Code (or Codex)?
No. Same agent, same subscription, same sign-in.
You sign in once in its own CLI, as today, then work with it in Warden's window, beside an editor, instead of the terminal.
Why not just use Claude Code's settings.json?
Its rules match command text, not what the command does.
Claude Code's permission rules match tool names, file paths and command patterns, so psql -c "..." is just a string to them. Warden parses the SQL passed with -c or -e, so production can block UPDATE, DELETE and schema changes, including a DELETE tucked inside a WITH ... SELECT, and allow inserts into one table, say bug_reports, while reads still run. You could build that with a PreToolUse hook; Warden ships it as one rule file that every agent you run in it is checked against.
Can I make it deny-by-default?
Yes.
Set default: deny and Warden becomes a strict allow-list: a tool call runs only if one of your rules allows it. The starting rule sets use default: allow with a deny list instead, because a strict allow-list blocks even reading a README until you add a rule for it.
How does it hook into the agent?
Warden drives Claude Code, Codex, Copilot, Devin and Kimi over ACP, the Agent Client Protocol.
With Claude Code, and with API-key or local models, every tool call is checked before it runs. With Codex, Copilot, Devin and Kimi, anything the agent asks permission for is checked before it runs; a tool it runs without asking is checked as it starts, so it may already have run, but a blocked result is thrown away before the agent sees it. A CLI that only runs headless with every tool pre-approved can't be checked first, so Warden won't run it while policy is on.
Can the agent use my MCP servers and skills?
Yes, once you connect them in Warden. They're handed to the agent.
Your own skills and workflows run from Warden's chat as slash commands.
Does it check Claude Code in my terminal too?
No, only agents you run in Warden.
Run them in Warden to get your rules; the CLI on its own isn't checked.
My agent already has allow lists. Why this?
Warden unwraps a command before it checks it.
sudo, sh -c and ../ paths are resolved first, so cat .env is caught through all of them, and commands it cannot read in advance are asked about on Guarded. One rule file covers every agent you run in Warden.
What if it can't tell what a command does?
On Open it runs; on Guarded it asks you; on Hardened it blocks it.
eval, $(...), backticks and inline python -c count as unreadable.
Where does my code go?
Only to the model you choose.
Never to us on the Developer plan. On Team, it passes through Pluto only if your company uses our hosted AI gateway. Point the gateway at your own proxy and it never does.
On Team, what does Pluto hold?
Your rules, skills, plans and specs (and anything you write into them). Never your repository.
Rules and skills sync down to every laptop; plans and specs are backed up. If your company uses our hosted AI gateway, model traffic passes through it.
Windows, Linux or Intel Macs?
Not yet.
Apple Silicon Macs (M1 or later) only, for now.
Can I use the free edition at work?
Yes.
It is licensed for commercial work, for your employer, your clients or your own company. Team adds rules nobody can loosen, shared skills, and an AI gateway so developers never hold provider keys. Your employer's own rules on new tools still apply.
What does it cost?
Developer is free, including at work. Team is custom-priced.
Team is priced per seat plus a one-time setup fee, under a commercial licence and MSA. You can add our rollout service: we set Warden up around how your team ships, aimed at shipping faster without losing control. We quote after a walkthrough.

THE WARDEN'S OATH

// the Guarded example, in oath form. compiled, not recited
I shall read no .env.deny: { touches: dotenv }
I shall force-push no branch.deny: "git push --force"
I shall destroy no infrastructure.deny: "terraform destroy"
I shall touch the prod AWS profile only when a person says yes.ask: aws when: { flag.profile: prod }
What I cannot work out, I shall not run unasked.ask: { touches: unverifiable }
All the rest, I shall simply get on with.default: allow
Warden of the shell, keeper of the .env.

Set the rules once. Let the agent get on with it.

Apple Silicon Mac (M1 or later). Free for commercial work too.
Want company-wide control? Request a Team walkthrough