Skip to main content

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.
If any answer is ambiguous, the system should not silently auto-approve.

Policy building blocks

Pattern 1: Manual by default

Use this for new strategies, new destinations, new chains, new bridge routes, or anything with weak evidence.
This lets QTG execute after operator approval while preventing accidental automation.

Pattern 2: Trusted target plus small budget

Use this for repeated, low-risk operational transfers to a known wallet.
Example:

Pattern 3: Trusted target with refresh gate

Use this when the destination is safe but route economics change quickly.
The operator or caller refreshes quote evidence, then previews again.

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.
This is a good default for new bridge lanes, volatile gas conditions, and exchange-maintenance periods.

Pattern 5: Agent Wallet top-up envelope

Agent Wallet Top-Up should remain envelope-bound:
Never let the agent provide source address, token, signer selector, or treasury authority. The agent proposes a top-up; QTG resolves the funding envelope.

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?
If an operator cannot answer those questions, keep the route manual.

Reading a policy trace

A movement’s persisted auto_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_targets table.
  • EVM target values are normalized to lowercase where appropriate.
  • Legacy allowlist rows with chain_id = NULL are 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.