Skip to content

Epic: Phase 3 — WebAuthn Approval/Unlock in Client-Server Mode #50

@helixclaw

Description

@helixclaw

Overview

Implement WebAuthn-based approval and unlock for client-server mode as specified in docs/encrypted-storage-spec.md (Section 6). This eliminates the server startup password ceremony by using passkeys/biometrics for human approval verification.

Depends on: Phase 2 (Client-Server Mode) — server API + signed grants

Goals

  • WebAuthn enrollment: Register passkeys/biometrics for server operators
  • WebAuthn assertion for approval: Approve grant requests via biometric verification instead of Discord reactions
  • Approval web UI: Minimal web page served by the 2kc server for approve/deny actions
  • Notification links: Discord/channel notifications include clickable approval URLs
  • Policy enforcement: Server can require WebAuthn-verified approval for grant issuance
  • No server startup password: WebAuthn replaces the password-on-startup ceremony for the approval/unlock gate

Key Design Decisions

  • Library: @simplewebauthn/server + @simplewebauthn/browser for FIDO2/WebAuthn
  • Web origin: Server hosts a minimal web UI at its existing HTTP endpoint (e.g., https://server.example/approve)
  • Credential storage: WebAuthn credentials stored in server config or a dedicated credentials file
  • Backward compatibility: Hard-coded password auth (Phase 2) remains available as fallback
  • Scope: WebAuthn is server-side only — local mode remains password-based (spec constraint)

Out of Scope

  • WebAuthn for local-only mode (explicitly excluded by spec)
  • Mobile-native biometric SDKs (web-only via browser)
  • Multi-tenant / multi-user credential management

Spec Reference

docs/encrypted-storage-spec.md — Section 6 (Variant C: WebAuthn Unlock)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions