master
John Lauer login recipes: claude.ai, chatgpt.com; read landed before any sign-in talk 5a7c77d 1mo ago

chatgpt.com / Codex (OpenAI)

Read landed first (see claude.ai.md): signedIn:true means the shared profile already has the OpenAI session; say nothing to the user. https://chatgpt.com/codex is a marketing page with a "Log in" link when signed out; the signed-in surface is https://chatgpt.com/codex/ with the task list, or https://chatgpt.com/c/….

The sign-in page (https://auth.openai.com/…)

Routes, in order of preference:

  1. Continue with Google: pup_click the button, then pup_google_signin {account:"<the user's OpenAI account email>"}. Same account-choice rule as claude.ai: ask once, store the username for chatgpt.com in the vault.
  2. Email + password: pup_credentials may already hold it (pup captures on the ext lane too). pup_login {submit:true, submitReason:"auth.openai.com is OpenAI's sign-in host"}.
  3. Email + one-time code: as for claude.ai, read the code from Gmail with adom-google.

OpenAI sometimes adds a device verification or a Cloudflare interaction; reload once, wait, and only then a pup_assisted_click. Never hammer-reload.

After sign-in, re-read landed on https://chatgpt.com/codex/ and confirm signedIn:true.