Overview
The raxit CLI verb family at a glance.
raxit is a single binary with three verb families: a Terraform-shaped policy loop
(scan → generate → tune → preview → apply), execution commands that actually run or serve
a governed agent, and observation/lifecycle commands for inspecting decisions and managing
the workspace.
Default workflow
This is the exact banner printed by a bare raxit (or raxit --help):
raxit governs AI agent tool calls with generated Cedar policy.
Start with the default workflow (Terraform for agent permissions):
raxit init # scan -> generate .raxit/security.yaml
$EDITOR .raxit/security.yaml # tune the generated rules
raxit plan # preview the decision changes
raxit apply # make them live (validate -> tests -> enforce)
raxit report --audit .raxit/var/dev-audit.jsonl --out .raxit/var/compliance-report.htmlFive commands take a fresh repo to a governed, evidenced agent: init scans your code and
writes .raxit/security.yaml; you edit that file by hand; plan shows the decision-level diff
before anything changes; apply validates, runs the policy's own tests, and pushes the result
live; report turns the audit trail into compliance evidence.
Verb families
| Family | Commands | Purpose |
|---|---|---|
| Policy loop (Terraform-shaped) | init, plan, apply, test, validate, add, rollback | scan, preview, and commit changes to security.yaml |
| Execution | run, dev, serve | actually run or host a governed agent |
| Observation | explain, audit, approvals, status | inspect decisions, the audit chain, and pending defers |
| Lifecycle | demo, uninstall, agent, keys, schema | try it without a project, tear it down, manage agent identities and keys |
Each page in this section covers one command (or a closely related pair, like dev/serve or
test/validate).
Experimental subcommands
The binary also ships mcp-proxy, http-proxy, a2a-gateway, and ext-authz — alternate
interception tiers alongside the SDK shim. They're present and runnable, but experimental and
unannounced: no stability contract, no dedicated docs yet. See Limitations
for what's known to work and what isn't.
Two version axes
Two independent version strings show up across these docs — don't conflate them:
- SDK package version — the
raxitpackage on PyPI/npm (e.g.raxit==0.0.4). This is whatpip install raxit/npm install @raxitlabs/raxitpins. - Engine version — the Go binary's own build string, shown by
raxit version/raxit version --json:
$ raxit version
raxit v0.0.4-0.20260717003701-2ce01ad59caf+dirty
$ raxit version --json
{"engine":"raxit","module":"github.com/raxitlabs/runtime-security-core","version":"v0.0.4-0.20260717003701-2ce01ad59caf+dirty"}The engine version is a go build VCS stamp (commit + dirty flag), not the package version —
they change on independent release cadences. Commands and behaviors described in this section
(plan, apply, .mjs scanning, deny.principal_mismatch, the approvals token file) are all
included in the published raxit v0.0.4 package; where a described behavior is genuinely ahead
of the last publish, the page says so with a callout.

