Multi-device
Open an existing wallet on a new device by restoring its MasterDEK, with the enclave or a passkey.
A wallet's address is looked up in the registry by (userId, appId, chain, network),
so the same user on a new device lands on the same wallet.
On Starknet, Solana, and native Stellar, there is one account key, derived from the MasterDEK. A new device does not get a key of its own and there is no on-chain device list: it restores the MasterDEK (enclave or passkey) and derives the same key. Nothing is added on-chain.
Detecting a new device
When Cavos.connect runs on a device that cannot spend yet, it returns
status: "needs-device-approval": the registry has an address, but this device
holds no key.
const cavos = await Cavos.connect({ /* ... */ });
if (cavos.status === "needs-device-approval") {
// restore the MasterDEK: enclave login or a passkey
}In React, read walletStatus.needsDeviceApproval.
Restore with the enclave
With deviceApproval: "enclave", signing in again with the same Google, Apple,
or email identity unwraps the MasterDEK onto this device. See
Hardware-isolated recovery.
Restore with a passkey
If the user added a passkey after signup, they can restore this device with one prompt — no email round-trip, no second device:
const { approveDeviceWithPasskey, walletStatus } = useCavos();
if (walletStatus.needsDeviceApproval) {
await approveDeviceWithPasskey();
}The vault opens the passkey's encrypted copy of the MasterDEK (it usually asked already at sign-in). The same prompt works on every chain in the session.
Stellar grandfathered wallets
Grandfathered Stellar wallets that never enrolled still use Horizon signer
keys. Manage them on the wallet after narrowing on wallet.chain === "stellar":
const devices = await wallet.listDevices();
await wallet.removeDevice({ slotId });See Stellar → Manage devices. Starknet and native Solana/Stellar have one key, so there is nothing to list or remove.
Encourage a way back early. If a user only ever has one device and loses it, they need the enclave or a passkey to restore the MasterDEK. Offering a passkey at onboarding makes recovery effortless.
See Concepts → non-custodial model for the full security rationale.
Passkeys
Add a passkey after sign-up so a new device can open the wallet. It carries an encrypted copy of the wallet's key, on Starknet, Solana, and Stellar alike. Signing up never asks for one.
Recovery codes
A stored code that restores grandfathered Stellar wallets. Starknet, Solana, and native Stellar restore the MasterDEK instead.