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

# Passkeys

> Sign Starknet transactions with Touch ID, Face ID, or Windows Hello. The user's private key never leaves their device, and they never type a password.

The `@chipi-stack/chipi-passkey` package handles the browser side of passkey authentication for Chipi wallets. The user authenticates with biometrics — Touch ID, Face ID, Windows Hello, Android biometrics — and the wallet's private key stays on their device.

## What you build with this

* **Sign-up without a password.** The user taps Touch ID once; you get back a public key + credential id and create their wallet.
* **Sign every transaction with biometrics.** No PIN prompt, no password modal, no copy-pasted seed phrase.
* **Recover lost passkeys.** The platform syncs the passkey to the user's other devices; a second passkey on a different device, or an optional PIN backup, also keep the wallet recoverable.

## Install

```bash theme={null}
npm install @chipi-stack/chipi-passkey
# or pnpm / yarn
```

Browser-only. The package depends on `navigator.credentials` and `crypto.subtle`; it does not run on Node or Bun server entry points.

## Pick your path

There are two passkey paths — the SDK supports both, but the entry point differs.

> **[Default SHHH wallet (STARK signer, PRF)](/sdk/guides/passkeys)**
>
> Use `useCreateWallet({ usePasskey: true })` (or `createWalletPasskey` + `getWalletEncryptKey`). The WebAuthn PRF extension derives, on the device, the key that unlocks the wallet's STARK key. This is the default wallet, and the one that supports session keys (agents). Also covers legacy CHIPI v29. Passkey-only, no PIN required.

> **[SHHH with a passkey signer (WEBAUTHN\_P256)](/sdk/passkeys/quickstart)**
>
> Use `createShhhPasskey` + `signShhhMessage`. The P-256 key itself is the signer and stays inside the platform authenticator. No PIN. SDK session keys need a STARK or ED25519 signer, so this path can't host an agent session.

## Browser support

The platform authenticator must be available — that's iOS 15+ Safari, modern Chrome / Edge, Firefox 122+ on macOS / Windows, Android 9+ Chrome. The package exposes `isWebAuthnSupported()` so you can branch your UI:

```ts theme={null}
import { isWebAuthnSupported } from "@chipi-stack/chipi-passkey";

if (!isWebAuthnSupported()) {
  // Render the PIN fallback flow instead of a "Sign up with passkey" button.
}
```

## Related

* [Quickstart](/sdk/passkeys/quickstart) — register a passkey and sign a transaction, end to end
* [API reference](/sdk/passkeys/api) — every exported function
* [When passkeys fail](/sdk/passkeys/when-passkeys-fail) — what to do when the browser changes, the user loses their device, or biometrics break


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.