> ## Documentation Index
> Fetch the complete documentation index at: https://darwin.so/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve best practices

> Bind each decision to exact reviewed terms and explicit user intent.

## Show the exact decision

Present the provider, scope, material terms, expiry, payload digest, and consequential values returned by the current Action. Do not replace them with a model-written summary when collecting authority.

## Require a bound choice

* Show controls only when `availableActions` contains `approve`.
* Submit the exact approval ID, expected revision, reviewed payload digest, and decision.
* Use a new mutation `requestId` for a different decision and reuse it only for an identical retry.
* Never preselect approval or infer it from conversation text, an account preference, or a previous approval.

## Invalidate changed terms

If the payload, price, merchant, cart, revision, digest, or expiry changes, discard the old review and ask again. An approval is single-use authority over the exact interaction that was shown.

## Recover from browser and network failures

A closed window, redirect, or successful HTTP request is not proof that the Action advanced. Re-read the same `actionId` and render the backend-confirmed state.

## Test the uncomfortable paths

Test expiry while the review is open, two clients deciding at once, a revision change before submission, duplicate requests, rejection, and provider failure after approval.
