MFA is enforced before the session completes
Configured MFA policy is now enforced before an authentication session completes.
From the changelog: MFA enforcement during sign-in
Authdog Team

A second factor only matters if it runs before the session is usable. When MFA is configured for the environment, Authdog now enforces that policy before the authentication session completes, instead of issuing a normal session and hoping a later check catches up.
This is the longer note behind the May 27 changelog entry.
How it works
After primary authentication succeeds, hosted sign-in can defer access and refresh cookies. It keeps a pending authentication state and sends the user to a dedicated MFA challenge. Only a successful verification completes sign-in and issues the session.
The pending state is bound to the environment and holds the original continuation. A missing, expired, or wrong-environment state returns the user to sign-in. Outcomes are recorded for audit and event processing: failed codes as authentication failure activity, successful completion as MFA sign-in activity.
Do not call the hosted MFA verify route from your application. It is part of the hosted identity flow, not a public management API. Behavior is in MFA.
Set it up
In the Authdog console:
- Enable multi-factor authentication on the environment.
- Enroll at least one verified factor on a test user (TOTP, SMS, or push).
- Sign in on the hosted Account Portal and complete the MFA screen.
- Confirm the session is issued only after verification, and that a failed code does not complete sign-in.
Keep development and production settings separate. Enabling the environment gate does nothing for a user with no enrolled factor.
Trust boundaries
The MFA screen is a second-factor check on a pending sign-in. It is not phishing-resistant when the factor is TOTP, and it is not authorization for your APIs. Validate the final Authdog session on the backend.
Pending state lives in Authdog-managed cookies on the hosted flow. A copied access token from a completed session is not the pending challenge, and the pending challenge is not a session.
Try it
Enable MFA, enroll a test user, and complete a sign-in through the challenge. Details are in MFA. The original release note is in the changelog.