Manifesto

Passwords are dead.
Authio is the auth platform that refuses to pretend otherwise.

For thirty years we have been treating credentials like a UX problem with a security tax. We were wrong. The password column is the breach class. We built Authio to retire it.

We have been pretending passwords work for 30 years.

The original sin of the modern web is the password field. It is the only authentication method we have ever shipped at scale that requires every single user to act as a competent security engineer. Pick a strong one. Do not reuse it. Rotate it after the breach. Memorize twenty of them. Trust your password manager. Trust your browser. Trust your enterprise SSO. Trust the recovery email — which is itself protected by another password.

The Verizon DBIR has consistently put credential abuse at the top of attack vectors year after year — around four out of five breaches involve a stolen, phished, or otherwise compromised credential. The IBM Cost of a Data Breach report puts the average breach at roughly USD 4 million. Most of that is not the dramatic stuff. It is reset emails, password lockouts, help desk tickets, lawyer hours, and lost trust. None of that shows up in your benchmarks, but it shows up in your runway.

We have known passwords were broken since at least the time the rainbow table became dinner-table conversation. The reason we still ship them is not technical. It is gravity. Every existing user has one. Every legacy system speaks them. Every customer contract says “reset password” somewhere. So we keep a column called password_hash in every users table on the internet, and we hope the rotation policy holds. It does not.

What replaces passwords. (Spoiler: we already have it.)

Passkeys. The technical case.

Passkeys are public-key credentials bound to a domain. They are phishing resistant by construction — there is no shared secret to spill. Even if your end user clicks the world’s most convincing lookalike URL, the FIDO2 protocol simply does not have an answer to give. The secret never leaves the device.

The technical maturity has finally caught up to the marketing. Every modern browser, every modern phone, and every modern OS ships platform passkeys. Cross-device flows over Bluetooth + QR code work. Synced passkeys (via iCloud Keychain, Google Password Manager, 1Password, Dashlane, Bitwarden, Windows Hello) close the recovery gap that early WebAuthn deployments stumbled on. If you have not implemented passkeys this year because it was too painful last year, look again.

Magic links. The UX case.

Magic links solve the cold-start problem. A user shows up on a new device or a borrowed laptop and they cannot or will not enroll a passkey. Magic links give you a single-use, short-TTL credential delivered to a channel they already control. They are not phishing resistant in the FIDO2 sense, but they are phishing resistant in the operational sense: an attacker would need to also compromise the inbox, which is itself increasingly protected by — wait for it — passkeys.

The honest tradeoff: a magic link is only as secure as the inbox it lands in. For B2B SaaS, that is usually a corporate email under enterprise SSO with MFA. For consumer products it is more variable. Authio defaults magic links to 10-minute TTLs, single-use, and bound to the requesting browser session.

Social. The acceptable federation.

Social login (Google, Microsoft, Apple, GitHub, Slack, etc.) is fundamentally a federation of trust. You are saying: I trust that Google has done the identity proofing and the credential management, and I will accept their assertion. For consumer and prosumer products this is almost always the right tradeoff. It shifts the credential burden off your users and off your ops team.

SSO. The enterprise federation.

SAML 2.0 and OIDC are the enterprise version of the same pattern. The customer’s IT team owns the identity. Your job is to honor the assertion, mint a session, and not duplicate any of their controls. SCIM 2.0 handles the deprovisioning side. This is table stakes for selling into companies with 100+ seats, and it has nothing to do with passwords.

Why your auth vendor is part of the problem.

Look at the schema your current auth provider exposes. Is there a password, password_hash, or passwordResetToken field? If yes, you are paying for a vendor whose primary obligation is to keep that column from leaking. Their incentives are not to retire it — it is their most heavily integrated surface. Most large auth vendors will tell you passwordless is optional. We think it should not be.

Authio does not have a password column. We never accept a password. We never hash a password. There is no password reset flow because there is no password to reset. The entire breach class is gone. Not deprecated. Gone.

This is uncomfortable for some teams to swallow. We get it. The first question is always “but what about my users who…” and the honest answer is: they will be fine. They have done a password reset before. They will do a passkey enrollment now. It takes about the same number of clicks. The difference is the next year of their account life does not involve any of them.

What you give up.

We owe you the honest version of this.

Migration cost. Existing users need to enroll a passkey or accept a magic link the first time they sign in on Authio. We do not import password hashes from your old vendor — we cannot, because we have no place to put them. Instead, we offer progressive migration: the first sign-in after switch-over triggers a magic-link enrollment, and the user is encouraged (not forced) to add a passkey at that point. The Authio CLI ships authio import auth0, authio import clerk, authio import cognito, authio import firebase, and authio import supabase sub-commands that handle the user record migration. Sessions invalidate. Email-bound identity continuity is preserved.

One device that has nothing on it. A user on a Windows 7 box with no phone and no synced passwords cannot enroll a passkey. They can still use a magic link to their email. That is the floor. If even email is unavailable, no auth system can help them — at that point you are in a recovery flow, and our recovery flow is built around backup codes and an admin-attestation workflow.

Some compliance teams need translation. “You do not store passwords” sometimes gets read as “you do not authenticate” by an insufficiently-curious auditor. We supply the SOC 2 evidence and architecture diagrams that explain how passkey/WebAuthn replaces the password control entirely. This usually takes one call.

The honest summary.

We do not think passwords will be gone from the web in five years. We think they will be gone from products that take their users’ security seriously. Authio is the auth platform for those products. If you ship one of them, we would love to talk.

Stop shipping a password store.

The Authio SDK takes about five minutes to drop into a Next.js app. We will help you migrate the rest.