Regulated entities such as banks, insurers and payment providers keep asking us the same question: can we restrict which authenticators our customers use for passkeys, and what does it cost us if we do? Behind it sit three concerns. Compliance wants to name the approved providers, security wants to exclude implementations with weak user verification and product wants to know how many customers a restriction locks out.

Banking Passkeys Report. Practical guidance, rollout patterns and KPIs for passkey programs.
This guide answers eight questions:
The answers rest on data. We reviewed 13 credential providers (five first-party and eight third-party password managers), ran our own user verification tests on six browser extensions and combined the results with Corbado's aggregate credential intelligence data from CIAM deployments.
One limit up front: apart from the user verification tests, this is a source and documentation review, with no live conformance tests. Vendor behavior changes with every release, so treat each assessment as a starting point for your own build-pinned tests and not as a certification.
An AAGUID identifies the make and model of an authenticator, and the relying party (RP) receives it during registration. It works as a label for display, policy and telemetry. It does not prove which provider, build or configuration actually created the passkey, because without a valid attestation signature the value is self-asserted and can be manipulated.
As defined by the W3C WebAuthn Level 3 specification, the AAGUID is part of the attested credential data. Community registries such as the passkey-authenticator-aaguids repository map it to a provider name and logo, which is how we build the passkey list in our password manager guide. Microsoft's Entra passkey documentation treats AAGUID lists as policy guidance for the same reason. Four properties make the AAGUID a weak access control on its own:
The consequence: an AAGUID list is a good tool for policy, support and telemetry. As the only security barrier, it is weak. In practice nearly all credential managers report their AAGUID correctly, so a list reliably guides average consumers even though it is no hard security control. Whatever assurance you need beyond that has to come from required user verification, validated attestation where it exists and an independent control for sensitive actions.
Attestation covers four levels of evidence. None gives you a label only, self attestation proves possession of a key, trusted attestation lets you verify the authenticator model against the FIDO Metadata Service and enterprise attestation adds the identity of the individual device. Which level you receive decides what an AAGUID policy can enforce.
| Level | What the RP receives | What you can verify | Typical source |
|---|---|---|---|
| None | A statement in the "none" format. The AAGUID may be present, zeroed or spoofed. | Nothing about the model. The AAGUID is a label. | Consumer synced passkeys, most password managers |
| Self attestation | A statement signed with the credential's own key. | Possession of the new key only, no information about the model. | Some software and virtual authenticators |
| Trusted attestation | A statement signed by a manufacturer key with a certificate chain. | The chain validates to a trusted root, the model appears in the FIDO MDS with a current status and certification level. | Hardware security keys |
| Enterprise attestation | Trusted attestation plus uniquely identifying data such as a serial number. | Which individual device registered. Only works for RP IDs the authenticator or the device management allows. | Managed fleets such as workforce security keys and managed devices |
Trusted attestation answers "which model is this and is it certified". Enterprise attestation answers "which exact device is this" and needs an agreement between the RP and whoever manages the device, so it rarely fits a public CIAM deployment. NIST's appendix on syncable authenticators also discourages making attestation a barrier for public-facing services. For consumer providers, the realistic setup is an AAGUID used as a label, combined with required user verification.
A restriction on third-party managers and browser profiles touches roughly 1-2% of passkeys in Corbado's CIAM data, because first-party providers hold 92-98%. On desktop the exposure is higher, up to roughly 3-6%. Blocking first-party providers affects most of your customers. The shares count passkeys, not unique customers, and they are not a forecast of rejected enrollments.
| Category | Share of passkeys | Providers |
|---|---|---|
| First-party providers | 92-98% | iCloud Keychain, Google Password Manager, Windows Hello, Samsung Pass, Microsoft Password Manager |
| Third-party password managers | 1-2% | 1Password, Bitwarden, LastPass, Dashlane, Proton Pass, NordPass, Keeper, Kaspersky |
| Chrome and Edge profiles on Mac | under 1% | Chrome on Mac, Edge on Mac |
| No AAGUID reported | 0.5-1% | All-zero AAGUID |
| Other and unclassified | under 0.1% | Generic Chromium, smaller managers, virtual and test authenticators |
Two conclusions follow:
The dataset has no unique-customer counts, no OS mix per customer and no view of how many logins a restriction would affect. That is why section 9 recommends measuring in report-only mode before you enforce anything.
Platform providers store the large majority of new passkeys on every operating system. The exception is Windows, where the browser decides: Chrome defaults to Google Password Manager, Edge to Microsoft Password Manager and Firefox to Windows Hello. Third-party managers account for 1-2% of new passkeys overall and up to roughly 6% on desktop.
The per-platform split, the device-bound share and the shift from local to synced passkeys on Windows come from two CIAM deployments. On macOS most device-bound passkeys come from the outdated Chrome profile store. Request the platform data if you need the figures for your own business case.
A passkey follows the customer only as far as its provider reaches. A restriction that pushes customers from one provider to another changes where they can sign in without a detour, so check the reach before you shrink the allowlist.
| Passkey stored in | iPhone | Android | Mac Safari | Mac Chrome | Windows Chrome | Windows Edge |
|---|---|---|---|---|---|---|
| iCloud Keychain | Synced | QR only | Synced | Synced | QR only | QR only |
| Google Password Manager | Setup: Chrome as AutoFill | Synced | QR only | Synced | Synced | QR only |
| Microsoft Password Manager | No | No | QR only | QR only | Setup: Windows 11 plugin | Synced |
| Windows Hello | No | No | No | No | This PC only | This PC only |
| Samsung Pass | QR only | Galaxy only | QR only | QR only | QR only | QR only |
| 1Password, Bitwarden, Dashlane | App or extension | App or extension | App or extension | App or extension | App or extension | App or extension |
"QR only" means the customer needs the phone and the cross-device route and has no passkey on day one. "Setup" means the customer must enable a provider first.
Use three lanes: a consumer lane for synced passkeys that relies on required user verification and a qualified provider catalogue, a security-key lane that relies on validated attestation and the FIDO Metadata Service and an explicit unknown class for everything else. A single allowlist cannot express these different assurance levels.
The consumer lane applies the same server-side checks to every provider, first-party or not, and adds a catalogue that records which provider paths you accept. Treat the catalogue as a product-support and risk decision. Where you cannot verify the AAGUID, say so in the policy and do not present the allowlist as an enforcement guarantee.
A security key qualifies when its attestation chain validates and its model appears in the FIDO Metadata Service with a fresh, acceptable status. Required user verification must also be satisfied. Any vendor can qualify, and the bank decides the certification threshold, because MDS membership alone is not a quality bar.
UPDATE_AVAILABLE status does not prove that the registering device has updated.Create an explicit unknown class with a review route instead of a silent default. Some registrations never resolve to a provider: generic "Passkey" labels, a Chromium build, an SDK or the all-zero AAGUID, which accounts for roughly 0.5-1% of registrations in Corbado's data. These are not malicious by themselves, so do not label them insecure.
Route the class to an independent bank verification or a replacement path where you need stronger confidence, and never fold it silently into the security-key lane.
There are five options, from no list at all to a managed catalogue. The bank's rationale is usually to protect unsuspecting customers from bad storage, but fewer allowed providers do not make passkeys safer by default. In practice the question is whether the bank supports the top three or the top six password managers, and whether it accepts that the UV flag of some extensions can be unreliable, which is a valid concern for transactions (see the known issues on passkeys.dev).
Our recommendation is a managed allowlist that always allows first-party providers and attested security keys, with security deciding per provider on browser profiles and third-party managers.
Both need the same product changes: error handling after creation, an FAQ of supported providers and a process to maintain the list. Only an allowlist also excludes the long tail of virtual, unknown and generic AAGUIDs, so it is the stronger choice when you operate a managed catalogue.
| Criterion | No restriction | Managed allowlist |
|---|---|---|
| Security control | No control over virtual, unknown or generic authenticators | The bank decides which providers qualify |
| Customer choice | Customers keep the manager they chose | Vetoed managers are blocked, most visible on desktop |
| Product changes | None, standard passkey flow | Error message after creation, FAQ of supported providers |
| Friction | No refusals at passkey creation | Refused customers hit friction and may fall back |
| Maintenance | No AAGUID list to watch | List and MDS updates to monitor |
| Testing scope | Widest set of authenticators in scope | Smaller, assessed set |
Always allow the first-party providers and attested security keys, which together cover about 98% of registrations, and let security decide per provider on browser profiles and third-party managers. Third-party managers differ more by implementation than by brand, and an AAGUID rule alone cannot separate good paths from bad paths of the same vendor. Set a review date for every decision.
All five first-party providers sit in the always-allow group. They differ in theft protection, recovery and in what the bank can observe about the credential. Windows Hello is device bound, while the other four sync.
| Provider | Key points |
|---|---|
| iCloud Keychain | End-to-end encrypted sync. Stolen Device Protection helps on iPhone but must be active before theft. It does not apply to macOS. |
| Google Password Manager | Assess Android and desktop separately. Android Identity Check is not desktop protection, and desktop cloud-authenticator research needs a remediation review. |
| Windows Hello | Local, device-bound credentials. Residual risk is a known Hello PIN, and recovery needs a spare passkey. Hardware-TPM and software variants differ. |
| Samsung Pass | Resolve recovery, PIN fallback and the actual theft-protection coverage. |
| Microsoft Password Manager | Confidential-computing and HSM architecture is meaningful, but internal attestation is not provenance visible to the bank. |
We assessed eight third-party managers on six criteria: user verification, key protection, stolen-device behavior, recovery, sharing and export and the latest verified release. User verification is the criterion with the largest spread: in our tests four of six extensions report UV without verifying the user on an unlocked vault, because WebAuthn treats UV as a fresh check while password managers treat it as an open vault. The full assessment is available on request.
Three details matter more than the labels:
Request the full assessment if you want the per-provider results.
The AAGUIDs of all providers in this guide are published in one reference list. Use that list to build your allowlist and check each value against the community registry before deployment, because an AAGUID is self-reported for every provider except the Windows Hello entries, which carry an MDS record.
Our AAGUID glossary is the reference list. For single providers see iCloud Keychain, Google Password Manager, Windows Hello and Chrome on Mac. The passkey-authenticator-aaguids repository is the community source behind most of these values. Map the entries to three classes:
A provider should pass the same tests regardless of vendor: required user verification that fails closed, a clear behavior on an already-unlocked vault, a defined theft scenario, tested recovery and a known sync and export path. Run each test on every surface and pin the build, because a result on one surface does not transfer to another.
The most common surprise is user verification. WebAuthn treats it as a fresh check on every request, while password managers optimize for vault unlock and the vault often stays open. Like autofill of a password or TOTP code, a passkey request on an unlocked vault often triggers no new verification. Browser extensions also cannot trigger Secure Enclave or TPM operations, so verification and signing stay in software, whereas native apps that use the OS provider APIs can invoke OS user verification.
| Area | What to test |
|---|---|
| User verification | Request required, preferred and discouraged. Cancel and fail verification, then confirm that "required" never returns a successful assertion with UV=true. |
| Already-unlocked vault | Assert twice without locking. Check whether verification is repeated, cached with a bounded lifetime or skipped. |
| Fail-closed behavior | Quit the desktop app during extension use and make sure a UV-required request does not silently downgrade. |
| Stolen locked phone | Test without the passcode, then with the known device passcode, then with an already-unlocked vault. Compare identical attacker capabilities across providers. |
| Recovery and new device | Test account login, the decryption or recovery secret, lost-all-devices recovery and trusted-device enrollment. |
| Compromised endpoint | Review extraction from a decrypted vault, malicious extensions or native code and signature misuse. Hardware wrapping, cloud-enclave signing and nonexportable keys give different guarantees. |
| Sync, sharing, export | Test sync, sharing, export and import, credential ID continuity and bank-side revocation after a copy exists. |
Nothing is evaluated. The FIDO Alliance's Credential Exchange Protocol (CXP) and Credential Exchange Format (CXF) move a passkey between providers without a new registration ceremony, so your server never sees an AAGUID for the move. The credential keeps its ID and public key while your record still shows the provider from the original registration.
Support is arriving on the major platforms. Apple provides OS-mediated credential exchange, Google Play services documents phone import and export of passkeys and 1Password supports export on its mobile apps. For an AAGUID policy this matters a lot, because a transfer is not a registration.
| Scenario | What your server sees | Consequence for the policy |
|---|---|---|
| User registers in a blocked provider | A registration with a blocked AAGUID | The registration is rejected (but see section 8 for what remains on the client) |
| User registers in an accepted provider and exports to a blocked one | Nothing at transfer time. Later assertions arrive without an AAGUID. | Your record still says "accepted" while the signing surface is now a provider you block |
| User registers in a blocked provider elsewhere and imports into an accepted one | Nothing at transfer time. Assertions look like an accepted provider's. | A credential from a provider you would have rejected is now active under an accepted label |
| User moves a credential between two accepted providers | Nothing | Usually harmless, but the stored AAGUID no longer describes the current provider |
The credential ID, the public key and the RP binding survive the move, and your server never gets a ceremony in which it could evaluate the AAGUID. Three consequences follow:
If you suspect that a credential was copied, revoke it on the bank side. Removing it from the provider's vault or sharing group does not revoke the copy.
The main benefit is a documented, defensible list of accepted providers. The main cost is that a refused passkey is created on the client before your server can say no, so it stays on the device and keeps confusing customers. Weigh both against the small share of credentials a restriction actually touches.
Restricting authenticators gives you a documented, defensible list of accepted providers and lets you exclude implementations with demonstrated user verification failures. It also creates a measurable basis for fraud and support analysis. The benefits are real but modest, because the restriction only touches the small share of credentials outside the first-party providers.
The main cost of restricting authenticators is that the refusal comes too late. The passkey already exists on the user's device and keeps appearing in login prompts. Further costs are false confidence from unverifiable AAGUIDs, a gap through credential exchange, extra support contacts and list upkeep. Most of these costs land on customers and on the support team.
The restriction runs on your server after the user has already finished the ceremony. The credential manager has saved the passkey and confirmed success, and the server then refuses to store the public key because the AAGUID is not on the list. The passkey remains in the user's provider unless something deletes it.
At the next login the OS or browser still offers it.
Conditional UI and a
passkey button that sends an empty
allowCredentials list both surface the orphaned passkey, while a request with an
allowCredentials list does not. The effects reach beyond the first refusal:
Plan for this in your error messaging and fallback flows.
Apple and Google act on the WebAuthn Signal API, while most third-party managers do not yet. The API lets an RP tell the provider which credentials to remove, but a refused 1Password or Bitwarden passkey stays in autofill in our tests, and every call resolves silently.
| Credential manager | Chrome and Edge desktop | Chrome Android | Safari 26 and iOS 26 | Refused passkey in autofill |
|---|---|---|---|---|
| iCloud Keychain | No effect | Not applicable | Acts, with a known bug | Removed in Safari only |
| Google Password Manager | Acts | Acts | Not applicable | Removed after the signal |
| Samsung Pass | Not applicable | No effect | Not applicable | Still shown |
| Windows Hello | No effect | Not applicable | Not applicable | Still shown |
| Microsoft Password Manager | No effect | Not tested | Not applicable | Still shown |
| 1Password, Bitwarden, Keeper, Proton Pass, NordPass | No effect | Not tested | Not tested | Still shown |
| Dashlane | No effect | Not tested | Vendor-supported | Platform-dependent |
The results come from Corbado's own tests of Chrome 151 on macOS, Windows 11 and Android. Chrome documents the API for Chrome 132 and later and WebKit announced it for Safari 26.
The policy we find most defensible sits between the extremes: prefer first-party providers at onboarding, qualify the alternatives by implementation, restrict demonstrated failures and defer unresolved high-risk cases with a documented review path. Apply the same evidence standard to first-party providers. For background on assurance levels, see our guides on NIST and passkeys and device-bound versus synced passkeys.
Pilot in report-only mode, apply the policy to new registrations first, migrate existing credentials only after a replacement works and keep an independent control for the highest risk. Every targeted restriction needs an owner, evidence, a review date and a customer path to recover. Never mass-revoke credentials because of a registration-time AAGUID.
Report-only mode shows you the cost of a restriction before customers feel it. The inventory shares from section 3 will not predict it, and only measurement does. Track these five KPIs per credential manager and platform (OS and browser) for each tested cohort. They are default measures in Corbado Observe:
Add recovery, customer contacts and confirmed fraud to the same cohort view.
Treat new registration, ordinary login and sensitive-action authorization as three separate decisions, because each can carry a different rule. A provider you accept for login may still need an independent control for a high-value payment. Setting the rules separately avoids surprise lockouts and keeps the strictest checks where the risk is.
Let the customer enroll a replacement from an accepted provider, confirm it works and only then retire the old credential. Registration AAGUIDs are historical attribution, so do not mass-revoke. Where the browser supports it, call the WebAuthn Signal API to ask the provider to remove credentials your server rejected, and treat that as best effort.
You need one for payments and other sensitive actions where the provider cannot give runtime assurance. A same-vault TOTP is not an independent answer to a compromised vault. Use a separate trusted control such as transaction signing or a device-bound security key.
Igor Gjorgjioski
Senior Product Lead, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users, alongside their existing IDP.
Read the case studyCorbado Connect lets you allow or block authenticators by AAGUID, so the policy from section 4 runs in your enrollment flow and not in a spreadsheet. Corbado Observe, the authentication observability layer, shows what the restriction will cost before you enforce it.
See Authenticator Inventory in Corbado Observe →Subscribe to our Passkeys Substack for the latest news.
An AAGUID restriction is a useful tool when you treat it for what it is: a provider label that supports policy, support and telemetry. First-party providers carry 92-98% of passkeys in our CIAM data, so the practical question is rarely "which password managers do we block" and more often "which assurance do we require from every provider". Require user verification everywhere, validate attestation where it exists, qualify third parties by implementation, keep an independent control for sensitive actions and measure in report-only mode before you enforce.
Remember the scope of this review: it rests on documentation and source analysis of the current data we have and on our own user verification tests for six extensions, with no other live conformance tests. Pin versions, run the tests from section 6 and revisit the assessments as vendors ship.
Corbado is the Passkey Intelligence Platform for large-scale CIAM teams running consumer authentication. We help you see what IDP logs and generic analytics tools can't: where passkeys, passwords, OTP, social login and fallback journeys succeed, stall or fail, which devices and browsers create friction, and when an OS update silently breaks login. Two products: Corbado Observe layers process mining and observability across authentication journeys. Corbado Connect adds managed passkeys with analytics built in alongside your IDP. VicRoads runs passkeys for 5M+ users with Corbado (+80% passkey activation). Talk to a Passkey Expert →
Read the AAGUID from the registration response and compare it against an allowlist you maintain. A managed allowlist is stronger than a blocklist because it also excludes unknown and generic AAGUIDs. The control is only reliable with trusted attestation, which consumer synced passkeys such as iCloud Keychain and Google Password Manager do not deliver. Combine it with required user verification and an independent control for high-risk actions.
It stays on the user's device. The server rejects the registration after the user has already saved the passkey, so the credential manager keeps it. Conditional UI and passkey buttons without an allowCredentials list keep offering it and the login then fails. The WebAuthn Signal API can request deletion, but today mainly Google Password Manager and Apple's Safari act on it.
Only with trusted attestation, which means a statement signed by the manufacturer and validated against a trusted root. Without it the AAGUID is self-asserted and can be manipulated. It cannot prove the provider build, the signing surface or theft-protection settings. A credential that was later synced, exported or moved with the Credential Exchange Protocol can also be used from a different surface.
You can, but the evidence does not support a blanket block. NIST guidance allows appropriately configured syncable authenticators up to AAL2. A more defensible policy prefers first-party providers at onboarding, qualifies third-party providers by implementation, restricts proven failures and routes unresolved cases to an independent control.
In Corbado's aggregate data from CIAM deployments, first-party providers account for roughly 92-98% of passkeys. A hard block on all third-party password managers would touch roughly 1-2% of passkeys, up to 3-6% on desktop. Passkeys are not users and the share is not a forecast of rejected enrollments, so run a report-only pilot before enforcing.
Apply the policy to new registrations first. For existing credentials, let the user enroll a replacement from an accepted provider, confirm it works and only then retire the old one. Every targeted restriction needs an owner, evidence, a review date and a customer path to recover.
Nothing is evaluated. The Credential Exchange Protocol and Format move a passkey between providers without a new registration ceremony, so your server never sees an AAGUID for the move. The credential keeps its ID and public key, and your record still shows the provider from the original registration. Rely on required user verification, risk signals and an independent control for sensitive actions.
Related Articles
Table of Contents