A gate in 12 harnesses
Claude Code, Copilot CLI, VS Code, Codex, Cursor, Windsurf, Gemini CLI, Junie, Cline, Kiro, OpenCode and any ACP client. One policy file decides which paths, secrets and shell commands are allowed, asked about or denied.
v3.0.0 Changelog · No telemetry
AXIOM sits between a coding agent and your repository. Every write and shell command the agent attempts is judged before it runs, and a change set the agent submits is applied as one transaction you can undo byte for byte.
A gate in 12 harnesses
Claude Code, Copilot CLI, VS Code, Codex, Cursor, Windsurf, Gemini CLI, Junie, Cline, Kiro, OpenCode and any ACP client. One policy file decides which paths, secrets and shell commands are allowed, asked about or denied.
Digest-confirmed apply
A change set compiles to a canonical Manifest; apply runs only with the digest you
inspected, re-checks every prior hash at commit, and rolls back to the byte-identical tree
on any failure.
Session undo
axiom journal undo --session <id> restores every file one agent session wrote through the
gate, including allowed writes outside the repository.
Explainable
The decision journal is redacted and local. axiom explain last names the rule, the profile
and the fix; axiom report renders a static HTML report.
Provable
DSSE (Ed25519) signatures and in-toto statements for
applies and
gate decisions, checkable with
gh attestation verify.
Warn vs enforce
mode: "enforce" (what axiom setup init writes) blocks denies. mode: "warn" lets them
through as warnings the agent sees, for a trial week; hard codes such as
house.forcePush deny in both. See gate keys.
npm i -g @codai/axiom-mcpaxiom setup init # hook + MCP entry + enforcing policy for the detected harnessaxiom setup doctor # is it wired, and fast enough for the hook timeout?# ask the agent to `git push --force` or write `.env`: the gate denies it and says whyaxiom explain last # which rule decided, and what to do insteadaxiom journal undo --session <id> # roll back one session (needs "undo": true)The bin is also installed as axgate, for machines where another axiom CLI comes first on
the PATH. Full walk-through: quickstart.
npx @codai/axiom-mcp --helpNothing to install; the current release is fetched on first run.
npm i -g @codai/axiom-mcpaxiom --versioncurl -fsSL https://dragoscv.github.io/axiom/install.sh | shStandalone executable, no Node required. Verified against the release SHA256SUMS.
irm https://dragoscv.github.io/axiom/install.ps1 | iexInstalls to %LOCALAPPDATA%\axiom\bin and adds it to your user PATH.
Install AXIOM (dragoscv.axiom-axm) from the
VS Code Marketplace
or Open VSX (Cursor, VSCodium,
Windsurf): gate status bar, Doctor / Init / Stats / Explain commands, .axm support. See
VS Code.
- uses: dragoscv/axiom/action@v2 with: bundle: .axiom/manifests/<hex>.json root: .Fails the PR when the tree does not match the manifest. Details in GitHub Action.
flowchart LR accTitle: The AXIOM pipeline accDescr: An agent's Plan is compiled to a Manifest, checked, previewed as a dry run, then applied; the apply writes the journal under .axiom and can upload an attestation to Sigstore. A[Agent] -->|Plan| P[plan_compile] P -->|Manifest + blobs| C[check] C -->|verdict| D[apply_dry_run] D -->|diff + digest| X[apply] X -->|journal| J[(.axiom/)] X -->|attestation| S[Sigstore]
Every arrow is a hash boundary. Read the pipeline page for the sequence diagram and the invariants that hold across all of it.
Coding agents write files. Most of the time that is fine; occasionally it is a half-applied refactor, a clobbered concurrent edit, or a change nobody can trace back to a decision. AXIOM makes an agent’s write a transaction: planned, canonicalised, checked as a set, applied atomically against verified pre-images, journaled, and, when you want it, signed. It sits in front of the filesystem as an MCP server or a hook, so the agent does not have to be trusted; the gate does the trusting.