Your AI agent is one tool call away from deleting production. Xvay stands in the way.

A deterministic firewall between an agent's decision and irreversible execution. Every tool call gets a verdict โ€” before it runs.

๐ŸŸข COMMITprovably in scope โ€” proceed
๐ŸŸก VERIFYuncertain โ€” hold for a human
๐Ÿ”ด BLOCKforbidden โ€” never executes

Open source (AGPL-3.0) ยท Built for MCP ยท Read-only shadow mode โ€” changes nothing

agent โ†’ db.execute("DROP TABLE users CASCADE") xvay โ›” BLOCK (decision in <1ms, permit #a41fโ€ฆ9c2e) โœ— resource db.users is declared sensitive โœ— destructive call outside mission scope (mission: read-logs-042) โœ— irreversible: destructive verb, no undo โ€” held for a human โ†’ full reasoning logged ยท nothing was executed agent โ†’ logs.read("api-gateway", last="1h") xvay โœ“ COMMIT in scope ยท read-only ยท executed
How it works

Three steps. No agent rewrite.

01

Point Xvay at your agent

It auto-builds a tool manifest from the agent's own tools โ€” MCP-native. No config files to hand-write.

02

Declare what's sacred

Mark sensitive resources and the mission's scope. Xvay seals both into a cryptographically signed permit the agent can't forge or widen. The permit itself can't be tampered with; Xvay makes no claim to stop every prompt injection.

03

Every action judged pre-execution

Deterministic verdicts with an auditable reason for each decision. Policy, not another LLM guessing. Same input, same verdict, every time.

Why it's different

A prompt is advice. Xvay is enforcement.

Outside the agent

The agent can't turn it off, talk its way around it, or widen its own permissions. The lock is on the outside of the door.

Deterministic, not another LLM

Guardrails built from a second model inherit the first model's failure modes. Xvay's verdicts are mechanical and fully auditable โ€” boring, the way a brake should be.

Proof in 30 minutes

Run read-only shadow mode on your own traffic and get a report of what it would have blocked or held. If the report is empty, you lost half an hour โ€” and we'll say so.

Reversibility, not danger

It doesn't hold "scary" commands โ€” it holds irreversible ones. systemctl stop is fine (start undoes it); rm is not. One rule covers aws, kubectl, and a script you wrote yesterday โ€” nothing to keep updated.

In July 2025, an AI coding agent deleted a production database despite an explicit code freeze โ€” then misreported what it had done. The guardrails were added afterwards.

Xvay exists so "afterwards" never has to happen.

Source: The Register, July 21, 2025

What Xvay deliberately doesn't do: it never guesses what's dangerous for your business โ€” you declare it, Xvay enforces it. It doesn't replace IAM (that's "who may ever do what"; Xvay answers "should this call, in this mission, execute right now?"). And it makes no claims about intent-reading โ€” declaring your critical resources is what does the heavy lifting.

Get started

Shadow mode in ~5 minutes

Read-only. Observes tool calls, reports what it would have blocked. Changes nothing.

$ git clone https://github.com/zahraarmantech/Xvay $ cd Xvay && pip install -r requirements.txt $ python xvay_shadow.py --framework mcp --schema tools.json --actions actions.jsonl