Skip to content

Codex CLI login forces SMS phone OTP step-up on a security-key-only (Advanced Account Security) account; browser login honors AAS #25737

@Jesssullivan

Description

@Jesssullivan

What happens

On a fresh codex login (stock CLI, no wrappers or automation), the CLI opens the standard OpenAI browser OAuth flow. Primary authentication with my FIDO2/CTAP2 hardware security key succeeds, and the flow then redirects to https://auth.openai.com/phone-otp/select-channel and presents a "Verify your phone number" SMS/WhatsApp one-time-code dialog. That step-up cannot be satisfied with my enrolled hardware keys, so sign-in is blocked.

Crucially, normal browser sign-in to ChatGPT and to platform.openai.com on the same account — with the same security keys — resolves correctly and never prompts for a phone. Only the codex login CLI OAuth path forces the SMS step-up. This looks like a cross-surface authenticator-policy gap: the web sign-in enforces the account's policy; the Codex CLI path falls back to an SMS channel the policy is documented to disable.

Account configuration

  • OpenAI Advanced Account Security enabled
  • Two FIDO2/CTAP2 hardware security keys enrolled
  • No phone-based authentication factor configured
  • Per OpenAI's docs, Advanced Account Security disables SMS sign-in codes and SMS account recovery (help.openai.com/en/articles/20001221), relying on passkeys/security keys.

Expected behavior

On an Advanced Account Security / security-key-only account with no phone factor, step-up verification should use an enrolled factor (security key / passkey) — not an SMS/WhatsApp OTP that AAS is documented to disable.

Actual behavior

auth.openai.com/phone-otp/select-channel offers only SMS/WhatsApp OTP to a phone number that is not a currently-configured factor on the account. With AAS + security keys and no phone factor, there is no way to complete the step-up, so Codex sign-in is unusable — while browser sign-in on the same account works.

Steps to reproduce

  1. An account with Advanced Account Security + FIDO2 security keys and no phone factor.
  2. codex login (stock, macOS) → local callback server on http://localhost:1455 → genuine OpenAI OAuth at https://auth.openai.com/oauth/authorize (PKCE S256, scope openid profile email offline_access api.connectors.read api.connectors.invoke).
  3. Complete primary auth with the hardware security key.
  4. Flow redirects to auth.openai.com/phone-otp/select-channel demanding SMS/WhatsApp OTP → blocked.

Environment

  • Codex CLI (stock), macOS, June 2026.
  • Reproduced with raw codex login — no wrappers, proxies, or automation.

Impact

Users who deliberately hardened their account with Advanced Account Security + security keys (and intentionally have no phone factor) can be fully locked out of Codex by an SMS step-up they cannot complete, even though their browser sign-in on the same account succeeds.

Possibly related

#20161, #20320, #21189, and discussion #20868 — but those don't isolate the Advanced Account Security cross-surface angle (web honors AAS; the CLI path forces SMS).

Note

Account-specific details and the affected phone number have been reported to OpenAI privately and are intentionally omitted here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CLIIssues related to the Codex CLIauthIssues related to authentication and accountsbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions