Instant Sign-Out
Sessions are held by the server, so a sign-out ends a session at its next request, in every app the person reached.
Argon2id Passwords
New passwords are hashed with Argon2id. Imported bcrypt, PBKDF2 and Argon2id hashes keep working.
Sealed Secrets
Authenticator secrets are sealed with AES-256-GCM. Recovery codes are stored as SHA-256 digests only.
No Account Probing
A password reset request answers the same whether or not the address has an account.
Attempt Limits
Five wrong codes spend a sign-in challenge. Five in a row lock recovery and MFA changes for 15 minutes.
Tamper-Evident Audit Trail
Every key, setting and rule change is recorded in a chain of digests you can verify end to end.
Keys Shown Once
An account key is shown when it is made and stored as a digest. Revoke one and it stops at once.
Second Factor
Authenticator codes on any account, required of every member when the account says so.
Per-Key Limits
Each key can carry its own requests per minute and a lifetime budget, refused with 429 past either.
Erasure on Request
A person can erase their own account and its sign-in records with one call.
Verified Email Gate
A route marked verified refuses a person whose address is unproven, with 403 EMAIL_VERIFICATION_REQUIRED.
Password Change Ends Sessions
A password change ends every other session of the person. A reset ends all of them.