February 26, 20260.1.16Jugg.ai
v0.1.16 — fix(auth): resolve MFA enforcement bypass for AMR-unaware providers (Google/GitHub)
Release v0.1.16: Fix MFA Enforcement Bypass for Google and GitHub OAuth
What Changed
- Fixed critical bug: Google and GitHub OAuth users were incorrectly blocked when
MFA_REQUIRED=truebecause these providers don't emitamr(Authentication Methods Reference) claims in their ID tokens - Provider-aware verification: Refactored MFA logic to distinguish between AMR-aware providers (Microsoft Entra ID, Okta) that emit
amrclaims and AMR-unaware providers (Google, GitHub) that enforce MFA at the provider level - New
MFA_REQUIRED_PROVIDERSenv var: Operators can now restrict OAuth sign-ins to specific providers when MFA is required - Clearer audit trail: Four distinct audit actions (
auth.mfa_verified,auth.mfa_not_used,auth.mfa_provider_trusted,auth.mfa_claim_absent) replace ambiguous logging
Why It Matters
Google and GitHub users with MFA enabled at their provider level can now sign in when the platform requires MFA. The fix maintains security by trusting provider-level enforcement while preserving the audit trail required for SOC 2 CC6.1 compliance.
Technical Notes
- New
resolveMfaVerified()function and exported provider classification sets (AMR_AWARE_PROVIDERS,AMR_UNAWARE_PROVIDERS) enable comprehensive unit testing - Breaking change: MFA status is now determined by provider type rather than token claim alone
- Operators using
MFA_REQUIRED=truewith Google or GitHub should verify MFA enforcement is enabled in those platforms' admin consoles
Release Notes
PR #425 ("fix(auth): resolve MFA enforcement bypass for AMR-unaware providers") was successfully reviewed, CI confirmed passing, and merged into main via squash merge (commit 0075cefc).
However, the GitHub release could NOT be created: tag v0.1.16 already exists in the repository. GitHub returned a validation error ("tag_name already_exists"). Operator action is required — either delete the existing v0.1.16 tag so it can be reused, or confirm using the next version (v0.1.17) instead.