demo · v136

Auto Passkey upgrade

Complete a backend password sign-in, then trigger Conditional Create — the browser quietly creates a passkey under the same RP ID without a modal when the platform can upgrade the saved password.

Probing…

backend password sign-in

then: conditional passkey create

isConditionalMediationAvailable
conditional create result
credential id (b64u)

If your password manager already has a matching password for example.com, Chrome 136 silently upgrades it to a passkey on the next conditional create. Otherwise the call rejects with no UI.

the code

// On successful backend password login:
const options = await fetch("/api/login", { method: "POST" }).then(r => r.json());
const cma = await PublicKeyCredential.isConditionalMediationAvailable();
if (cma) {
  try {
    await navigator.credentials.create({
      publicKey: options.publicKey,
      mediation: "conditional",        // 136+: silent upgrade
    });
  } catch (e) {
    // Silent failure is expected when no password to upgrade.
  }
}

see also