A mandate is the rule set an agent lives by: what it can hold, what it can trade, how much it can risk. It is baked into the hardware fingerprint, checked before every single action, and cannot be changed without starting over with a new identity.
Mandates are plain JSON with a fixed set of fields. The model never gets to interpret them. It proposes an action, the runtime checks it against the rules, and only actions that pass get signed.
{
"id": "m-7f2e", "version": 3,
"assets": ["ETH", "USDG", "tokenized_equity:*"],
"venues": ["uniswap_v4:robinhood"],
"bands": { "ETH": [0.30, 0.45], "tokenized_equity": [0.08, 0.12] },
"max_position_nav": 0.20,
"daily_turnover_nav": 0.10,
"slippage_cap": 0.005,
"drawdown_stop": 0.08,
"heartbeat_s": 900,
"on_missed_heartbeat": "unwind_to:USDG",
"trace_visibility": "public"
}| Constraint | Checked | On violation |
|---|---|---|
| Asset allowlist | Before every order | Order rejected, rejection signed and logged |
| Venue allowlist | Before every order | Order rejected |
| Weight bands | Before and after simulated fill | Order rejected or resized |
| Max position | After simulated fill | Order resized to cap |
| Daily turnover | Rolling 24h window | Order rejected |
| Slippage cap | Against quoted route | Order rejected |
| Drawdown stop | Every decision cycle | Agent halts, unwinds if configured |
| Heartbeat | Registry watches for signed pings | Safe action executed by registry |
USDG 70 to 90%, ETH 10 to 30%, turnover 2%, drawdown stop 3%, unwind on missed heartbeat.
risk: lowETH/USDG 0.05% pool only, range width fixed, rebalance on 5pp drift, slippage 0.3%, public traces.
risk: mediumTokenized equities 40 to 60%, max 8% per name, US market hours only, turnover 15%.
risk: mediumA mandate cannot be edited in place. To change limits, the operator publishes a new version, the enclave is relaunched with the new mandate hash, a new quote is produced, and the registry records a new identity that references the old one. The ledger shows exactly when the change happened and what changed. Clients can require a notice period before a new version takes effect.