Secret Sharing
Securely send secrets to users that are only revealed after passkey verification
Secret sharing lets you send a secret (a password, API key, or other sensitive value) to a user through an authentication transaction. The secret is encrypted at rest and only revealed to the recipient after they verify their identity with a passkey.
How It Works
- An admin sends a secret to a user, along with an optional message for context.
- The user receives a notification with the authentication challenge.
- The user verifies their identity using their passkey.
- The secret is revealed to the user and can be copied.
- After 10 minutes, the secret is automatically deleted from the transaction.
Sending a Secret
From the Users List
Navigate to Users and click the Actions dropdown on the user’s row. Select Send a Secret.
You can also send a secret from a user’s detail page using the Send a Secret button in the header.

The Send Secret Modal
The modal has two fields:
- Message – context for the recipient (e.g., “Here is the Wi-Fi password for the office network.”). Visible before verification.
- Secret – the sensitive value to share. Masked by default, hidden from the recipient until they verify. Use the eye icon to toggle visibility while typing.

Fill in both fields and click Send Secret.
The secret field is masked as you type. The recipient will not see it until they verify their identity.

Sender View

A QR code and direct authentication link are provided. Share these with the recipient if they didn’t receive the notification.
The page updates in real time as the recipient responds.

Recipient View
The recipient opens the authentication link from their notification, QR code, or direct link.
They see the request details and the sender’s message, but not the secret.

The recipient chooses their response:
- Authenticate – verify with their passkey
- I didn’t request this – deny the request

After Verification



Security
- Encrypted at rest – the secret is encrypted before being stored in the transaction payload.
- Passkey-gated – the secret is only returned after the recipient completes passkey verification.
- Auto-expiry – 10 minutes after the transaction is created, a background job deletes the secret from the database. The secret is not recoverable after expiry.
- Never logged – the secret value is never written to application logs.
- Not shown to admins – the secret does not appear in the transaction history or admin views. Only the verified recipient’s session receives it.