Skip to main content
The policy envelope is the multisig-governed permission boundary every agent operates inside. Issued at install time, attached to every grant JWT, evaluated server-side on every tool invocation.

Canonical URL

https://glide.co/schemas/agent-banking/v1/agent-policy-envelope.json

14 axes

The envelope captures three categories of constraint:

Amount ceilings (3 axes)

Counterparty + chain (4 axes)

Velocity + time (3 axes)

Approval (3 axes)

Branch A’ (Privy spike result)

Per the Headless v1 Privy spike (docs/designs/privy-policy-spike.md):
  • EVM: all 14 axes enforce on Privy programmable signing policy NATIVELY. per_tx_max, counterparty_allowlist, time_window, daily_cap, velocity_caps all native.
  • Solana: per_tx_max, counterparty_allowlist, time_window enforce natively. Stateful aggregation (daily_cap, velocity_caps) lives in the router Redis layer.
The @glideco/policy-engine is chain-agnostic — evaluate() is pure-function and returns ALLOW/DENY with reason codes. The caller (Privy native or router Redis) chooses where to enforce.

Example

policy_version

Every envelope carries a monotonic policy_version counter. Mid-flight policy changes (signer rotation, tier change) advance it; in-flight tool calls compare against current and raise PolicyStaleError on mismatch (F5 IRON RULE).

Relation to skill policy templates

SkillManifest ships a policyTemplate that’s a strict subset of AgentPolicyEnvelope. Skills only specify the axes that make sense for their flow (e.g. an x402 skill specifies per_call + daily_cap; an AP skill specifies per_tx_max + counterparty_allowlist + daily_cap). The principal can tighten any axis at install time. Loosening above the package default requires editing the policy template + a fresh install.

Reading list