Skip to content

feat: recovery codes #398

Closed

Description

@Bccorb

Why

Recovery today is admin-assisted device replacement only. A user who loses their only passkey on a small team has nowhere to go. Fear of lockout is the main objection to passwordless.

What

  • Generate a set of single-use codes, store them hashed, show them once
  • Sign in with a code, then force a new passkey enrollment
  • Regenerate (invalidates the old set), with step-up
  • Audit events for generate, use, regenerate; notify the user on use
  • System config to require codes at enrollment

Done when

A user can recover with a code, every step is audited, and codes are never stored in plain text.

Activity

  1. added this to the v0.20 milestone on Oct 13, 2026
  2. added theissue type on Oct 13, 2026
  3. added
    P1Security work outside the FIDO2 track
    safeServes the safe promise: no lockout, no lock-in, honest
    on Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Security work outside the FIDO2 tracksafeServes the safe promise: no lockout, no lock-in, honestv0.20Targets the v0.20 release

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions