Policy checks
Developer Preview
Nava Guardian applies deterministic checks to the decoded action and the agent's active policy. This catalogue lists the checks available in the Developer Preview.
Available in the preview
Shared checks
These checks apply to Uniswap and Hyperliquid actions.
| Check | What it verifies |
|---|---|
| Venue | The active policy contains a configuration block for the proposed venue. |
| Network | The EVM chain or Hyperliquid network is allowed by the venue policy. |
| Asset | Every referenced token or resolved market belongs to the policy's asset universe. EVM identity is chain ID plus contract address; Hyperliquid indexes are resolved against the trusted venue catalogue. |
| Trade side | The proposed buy or sell side is allowed for the resolved asset when a side constraint is configured. |
| Sanctions | Referenced addresses do not appear on Nava Guardian's active sanctions dataset or the policy's additional denylist. |
| Per-transaction USD cap | The summed input notional of Uniswap swaps and Hyperliquid orders does not exceed perTxCapUsd. Hyperliquid uses the trusted mark conservatively with the order limit; missing or stale prices fail closed. |
| Rolling 24-hour outflow | The action keeps the agent's rolling outflow, including the proposed Uniswap swap or Hyperliquid order, within max24hOutflowUsd. Accounting is maintained per venue rather than as one cross-venue pool; missing state or price data fails closed. |
Guardian prefers the host-mounted sanctions dataset and can fall back to its
bundled copy. Verdict evidence records the selected list source, version, and
fetch time. If the active list is stale or unusable, the sanctions dependency
fails closed as data_unavailable.
asset_identity_unresolved is a cross-cutting decode result. It means Guardian
could not establish a trusted asset identity; it does not prove that a resolved
asset violated the configured universe.
Uniswap checks
| Check | What it verifies |
|---|---|
| Contract and function | For a target included in contractAllowlist, the decoded selector is allowed by that contract's entry. An unlisted target is not_checked, not rejected by this optional check. |
| Recipient | The effective recipient is allowed by the policy or is one of the agent's registered wallets. |
| Slippage protection | The decoded swap contains a non-zero minimum output or a finite maximum input. |
| Sink recipient | The effective recipient is not a known zero, burn, or dead address. |
Hyperliquid checks
| Check | What it verifies |
|---|---|
| Execution price bound | A Hyperliquid order carries a finite, positive limit price. |
| Leverage | A Hyperliquid updateLeverage action does not set leverage above maxUpdateLeverage. |
| Portfolio leverage | The proposed action keeps total Hyperliquid portfolio leverage within maxPortfolioLeverage. Missing or stale position state fails closed. |
| Protocol exposure | When configured, the proposed action keeps exposure for each protocol key within maxExposurePerProtocol. Missing or stale position state fails closed. |
Reading check results
| Status | Meaning |
|---|---|
passed | The check ran and the proposed action satisfied it. |
failed | The check ran and rejected the proposed action. |
not_checked | The check did not apply or the corresponding optional policy constraint was not configured. |
For the wire names returned in checks[], see the Nava Guardian API.
For failure-code definitions and builder recovery behavior, see
Failure modes and recovery.