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

# Blind signing

> Use app-owned review UI before Rhinestone requests passkey approval.

Blind signing hides Rhinestone's review UI. Your application shows the action, while Rhinestone prepares and verifies the payload before WebAuthn approval.

In the public `@rhinestone/1auth` `0.10.1` release, embedded wallets use blind signing by default for intent and batch flows. `signMessage()`, `signTypedData()`, and `signWithModal()` always show Rhinestone's review.

Start with the shared [client initialization](/wallets/embedded-wallets/accounts#initialize-the-client). No signing option is required on a flow that defaults to blind signing.

## Own the review

Before calling a signing method, show the user the information needed to make a decision:

* recipient and contract
* token and amount
* source and destination chains
* fees and funding policy
* permissions or risk introduced by the action

Then call the SDK from the approval action in your UI:

```ts theme={null}
const result = await oneAuth.sendIntent({
  accountAddress,
  targetChain: 8453,
  calls: [paymentCall],
});

if (!result.success) {
  throw new Error(result.error?.message ?? "Signing failed");
}
```

Your review and the browser approval are separate user decisions:

| Stage               | Owner                        | What the user approves                                                          |
| ------------------- | ---------------------------- | ------------------------------------------------------------------------------- |
| Action review       | Your application             | The human-readable recipient, amount, chain, fees, and risk context             |
| Payload preparation | Rhinestone                   | No visible review; it binds the exact prepared payload to the signing challenge |
| WebAuthn approval   | Browser and passkey provider | Use of the passkey for that bound challenge                                     |

The WebAuthn prompt is always shown. Nothing is signed without its user gesture. “Blind” describes the hidden Rhinestone review, not an absent passkey approval or an unbound payload.

## Review behavior by method

The `experimental_clear_signing` option selects visible review for intent and batch flows:

| Method                                 | Review behavior                              |
| -------------------------------------- | -------------------------------------------- |
| `sendIntent()` and `sendBatchIntent()` | Blind by default; `true` shows review        |
| `signMessage()` and `signTypedData()`  | Always reviewed; the option is not forwarded |
| `signWithModal()`                      | Always reviewed                              |

`navigator.credentials.get()` runs in your application's top-level page and uses its domain-bound passkey. See [Passkeys and domains](/wallets/embedded-wallets/passkeys-and-domains) for the credential and account namespace.

To add a Rhinestone-owned review to an intent or batch flow, use [clear signing](/wallets/embedded-wallets/clear-signing). This changes the review experience, not the passkey or account namespace.
