Approvals

High-risk actions wait for the owner wallet's sign-off.

When an action crosses a policy threshold — a spend cap, a manual_approval route — Warden holds it and waits for the owner to approve. Nothing proceeds until then.

Methods

Set via config.approval.method:

  • owner-wallet-onchain (alias owner-wallet) — an on-chain ApprovalRequest, approved by a wallet tx.
  • owner-wallet-offchain — a wallet signature over the action (no gas, no chain), verified against the signed-config owner.
  • telegram — approve over chat.

Guarantees

  • Action-bound — the approval is tied to sha256(chain ‖ tx), so a signature can't be replayed against a different action.
  • Fail-closed — each hold has a timeout (approval.timeout_secs, default 300s). Past it, even a valid signature is refused.

Approvals surface in the warden-ui console, where the owner signs from their wallet.