Policy Engine enforcement for Praxis.
Policy engine for Praxis, covering both standard policy use cases as well as AI inference and agents.
A typed, phased plugin runtime and policy evaluator for agent traffic. It decides who may call which tool, what data comes back, and where that data is allowed to go next.
- Identity: Resolves and independently validates user, agent, and workload identities.
- Authorization: Evaluates APL predicates and pluggable decision points, including relationship-based authorization.
- Delegation: Exchanges credentials through RFC 8693, giving each upstream service a token scoped to that service.
- Data control: Redacts fields in transit, propagates Session Taint across tool calls and requests, and filters what an upstream is allowed to tell a client back.
- Out-of-band approval: Supports out-of-band approval and elicitation.
- Audit: Emits an audit event for every decision.
Add one dependency to get the engine and all bundled extensions:
praxis-policy = { version = "0.2", features = ["builtins"] }Without builtins, you get the engine alone and no extensions compiled in.
Declare individual features instead: jwt, oauth, elicitation-ciba,
cedar, cel, opa, valkey.
The crates are versioned together and released together, so a single 0.2
requirement covers the set. Requires Rust 1.96 or newer.
Full documentation.
The public API will move between minor versions while the shape settles; a breaking change gets a minor bump and is documented in the CHANGELOG.
crates/ the engine, APL implementation, and host facade
builtins/ bundled plugins, decision points, and session stores
reference/ worked examples, not published and not bundled
A host may replace any bundled plugin. Implement a Plugin Factory through
PluginFactory against praxis_policy_core::prelude, then register it with
PolicyEngine::register_factory under the kind: your policy names. An
unrecognized kind causes policy loading to fail, so missing registrations are
detected at startup.
reference/plugins/ holds two worked examples: a PII scanner and an audit
logger. These are not published, but are linted and tested here, and the
reference demo registers them as host
plugins.
The toolchain is pinned and is also the MSRV, so cargo build picks the right
one. make help lists the available targets.
Apache-2.0. See LICENSE.