Policy & Readiness
Policies in OAW are backend-enforced objects, not UI settings. A venue action must pass all relevant policies, and readiness is a precise, inspectable state.
Policy layers
| Layer | Governs |
|---|---|
| Wallet / provider policy | per-wallet spend caps, allowed methods, allowlists (e.g. Privy agent-wallet policy) |
| Venue policy | per-venue permissions: max order size, per-market exposure, categories, leverage |
| Global spend policy | daily caps, reservations, autonomy mode, confirmation thresholds |
A live action must satisfy all layers. Policy is configurable from chat/mobile — e.g. "change my Polymarket daily cap to $250" calls a real backend policy tool, never a fake local setting.
interface AgentPolicy {
dailyCapUsd: number;
perActionCapUsd: number;
blockedCategories: string[];
autonomyMode: "manual" | "confirm" | "auto";
}
Readiness — what "live-ready" requires
agent authority (Mode A or verified Mode B)
→ venue binding via the pre-bind gate
→ funding present on the venue's settlement chain
→ venue policy + global caps pass
→ live-execution flag on + approval (where required)
→ a production adapter wired (not the reference stub)
Miss any one and OAW returns a precise status — agent_wallet_required,
funding_required, ready_but_live_locked, requires_approval,
virtuals_signer_required, … — never a generic "failed".
When a human is required
Human confirmation is required only for: first policy authorization, policy changes, actions above limits, ambiguous venue/action/market, restricted categories, compliance/region blocks, unsupported funding routes, owner/signature handoffs, new withdrawal destinations, and risk breaches.
If policy allows the action, the user authorized it, the live flags permit it, and wallet/venue authority is ready — the agent executes. Ambiguity routes to a clarifier, not a guess. See the Intent classifier.