Approval/Risk Policy Guide
This guide is for operators and product builders who need to decide which QTG movements can be automatic and which ones must remain manual. The short rule:Auto-approve only when the target, amount, budget, and cost are all bounded and explainable.
The current release records policy trace evidence and supports trusted EVM target preview. It does not yet expose a full policy-editor UI or customer-authored rule DSL. Treat DB-seeded trusted targets and existing Free/Pro auto-approve settings as the active configuration surfaces.
The mental model
Think of every movement as passing through four operator questions:1
Is this structurally safe?
Does the route have a valid destination, signer/source alignment, executor coverage, and address allowlist coverage? If not, QTG denies or blocks before funds move.
2
Is this target merely allowed or also trusted?
Allowed means the destination may receive funds. Trusted means it may be considered for auto-approval under additional bounds.
3
Is the amount inside an explicit budget?
Per-request caps, rolling windows, Agent Wallet envelopes, and Pro budget ledgers decide whether automation has remaining capacity.
4
Are route costs acceptable and fresh?
Fees, bridge quotes, gas, slippage, and venue limits can force manual review or a refresh before approval.
Policy building blocks
Recommended policy patterns
Pattern 1: Manual by default
Use this for new strategies, new destinations, new chains, new bridge routes, or anything with weak evidence.Pattern 2: Trusted target plus small budget
Use this for repeated, low-risk operational transfers to a known wallet.Pattern 3: Trusted target with refresh gate
Use this when the destination is safe but route economics change quickly.Pattern 4: Allowed target with manual cost review
Use this for larger transfers where the address is correct but automation should not decide economic risk.Pattern 5: Agent Wallet top-up envelope
Agent Wallet Top-Up should remain envelope-bound:Policies to avoid
User-facing predictability checklist
Before enabling auto-approval for a route, you should be able to answer these questions in plain language:- Which subject, strategy, or agent can request it?
- Which exact template or route can it use?
- Which exact destination tuple is trusted?
- Which asset key is trusted?
- What is the maximum amount per request?
- What is the rolling budget window?
- What happens when fee data is missing or stale?
- What happens when the target is allowed but not trusted?
- What event or API response explains the decision after creation?
Reading a policy trace
A movement’s persistedauto_approve_result.policy_trace explains the preview evidence used at creation.
Look at:
Example interpretations:
Example policy decisions
Current implementation notes
- Trusted targets are stored in the network-scoped
approval_policy_targetstable. - EVM target values are normalized to lowercase where appropriate.
- Legacy allowlist rows with
chain_id = NULLare treated consistently with current creation-time allowlist behavior. - CEX-only and other non-EVM movements do not get denied by EVM target policy.
- The trace is persisted as evidence. It is not yet the sole authority for final auto-approval.
Change management
When adding a new policy idea, classify it first:
Do not implement it as a broad high-priority override unless it belongs inside a bounded leaf layer and cannot weaken upstream safety.