Passkeys

A passkey is a WebAuthn credential held by the browser, the phone or a security key: Touch ID, Windows Hello, a YubiKey. Signing in with one asks for no username and no password.

The feature is partial. What follows says exactly which half is built, and you should read the gaps before you rely on it.

What works today

Passkeys are allowed by default, gateway-wide: Application > Security, Allow passkeys. There is no per-organisation setting - a passkey sign-in happens before the organisation is known.

Registering one is self-service, from /profile/passkeys, and it needs a finished session: you sign in the ordinary way first, then add a key. Keys are listed with a label read off the browser (Chrome - macOS), the date they were created and the date they were last used. The owner can delete any of them, and can still do so after an administrator turns passkeys off.

Signing in with one is a button on the sign-in page, drawn when the browser supports WebAuthn and at least one authority is enabled. It is usernameless: Meerkat asks for a discoverable credential, and the credential says which account it is. Discoverable keys are required at registration, which is what makes that possible.

The key lands you straight on your organisation, or on the chooser if you belong to several - exactly as a password sign-in would.

A passkey is both factors at once

This is the design, and it is the thing to understand before turning it on:

A passkey sign-in never asks for a second factor, even for an account where two-factor is required. It goes straight to organisation resolution. If your policy is "everybody must have two factors", a passkey satisfies it by assumption rather than by verification - see below.

Why the assumption is not airtight in the current build:

The hostname matters

The relying party is derived from the request: the host that served the page, with the port stripped, and the origin it was served on. Nothing configures it.

Two consequences:

What a directory adds

When the account is linked to a directory authority, a passkey sign-in asks that directory whether it still knows the person before letting them in. A clear "no such entry" revokes the sign-in; an unreachable server does not sign anyone out.

Identity providers reached by redirect - OIDC, GitHub - cannot be asked that question, so a passkey sign-in through them is never re-validated against the provider. And any linked, enabled authority may forbid passkeys outright for the accounts it knows (the authority's passkeys policy set to no), which blocks both registering and using one.

What is not there yet