Manage and selectively revoke enrolled passkeys #499

Closed
opened 2026-08-10 16:53:32 +00:00 by timmy · 0 comments
Owner

Problem

Passkeys remain valid after their originating session expires or signs out, but Active devices only shows live sessions. Operators can currently remove one only while its session is active, or revoke every passkey globally. This leaves durable credentials invisible and makes targeted recovery impossible.

User flow

Add an authenticated enrolled-passkey inventory to Active devices. Show safe metadata only, including whether each credential has an active session. Let the operator remove exactly one credential after fresh authorization; revoke its remote active session when applicable while preserving the initiating session and unrelated credentials.

Acceptance criteria

  • Authenticated, no-store passkey inventory exposes only management ID, bounded label, enrollment timestamp, and active/current-session state.
  • Credentials remain visible after their original session is signed out or expires.
  • Selective removal requires CSRF and a single-use, exact-target fresh authorization grant.
  • Removal excludes that credential from future sign-in while preserving unrelated passkeys.
  • Removing a remotely active credential also revokes that session; removing the current credential keeps the current session usable and explains recovery-token implications.
  • Mobile layout works at 320px with accessible controls and truthful loading/error states.
  • Behavioral backend/frontend tests and the full suite pass.

Non-duplication evidence

Historical issues/PRs cover active-session management (#325), global revocation (#287), fresh authorization (#341), enrollment and active-device coupling (#485), and security journaling (#493/#497). None inventories or selectively revokes a passkey after its session disappears.

## Problem Passkeys remain valid after their originating session expires or signs out, but Active devices only shows live sessions. Operators can currently remove one only while its session is active, or revoke every passkey globally. This leaves durable credentials invisible and makes targeted recovery impossible. ## User flow Add an authenticated enrolled-passkey inventory to Active devices. Show safe metadata only, including whether each credential has an active session. Let the operator remove exactly one credential after fresh authorization; revoke its remote active session when applicable while preserving the initiating session and unrelated credentials. ## Acceptance criteria - Authenticated, no-store passkey inventory exposes only management ID, bounded label, enrollment timestamp, and active/current-session state. - Credentials remain visible after their original session is signed out or expires. - Selective removal requires CSRF and a single-use, exact-target fresh authorization grant. - Removal excludes that credential from future sign-in while preserving unrelated passkeys. - Removing a remotely active credential also revokes that session; removing the current credential keeps the current session usable and explains recovery-token implications. - Mobile layout works at 320px with accessible controls and truthful loading/error states. - Behavioral backend/frontend tests and the full suite pass. ## Non-duplication evidence Historical issues/PRs cover active-session management (#325), global revocation (#287), fresh authorization (#341), enrollment and active-device coupling (#485), and security journaling (#493/#497). None inventories or selectively revokes a passkey after its session disappears.
timmy self-assigned this 2026-08-10 16:53:32 +00:00
timmy closed this issue 2026-08-10 17:08:36 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#499
No description provided.