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

claude.ai (Claude, Anthropic)

Read landed first. Every pup_open_window / pup_navigate response carries landed:{url,title,loginPage,signedIn,_hint} (pup 2.0.642+). The shared adom-you profile keeps the claude.ai session for weeks, so the common case is signedIn:true and the page is already the user's chats. Do NOT toast "sign in once" in that case; it happened on 2026-09-19 and the user rightly called it dumb. Only a loginPage:true landing needs any of the steps below.

The sign-in page (https://claude.ai/login)

claude.ai has no password. Two routes:

  1. Continue with Google (preferred, fully automatable): the page shows a "Continue with Google" button. Click it with pup_click, then the Google chooser appears in the same window. Call pup_google_signin {account:"<the user's Claude account email>"} or {kind:"work"}; pup's Google session for that account is already in the profile in most cases, so it completes without the user. If pup does not know which account, pup_google_accounts lists them; ask the user ONCE which account is their Claude account and remember it in the vault as the username for claude.ai.
  2. Continue with email (one-time code): type the email, submit, then claude.ai emails a 6-digit code. Read it with the adom-google CLI (Gmail search from:claude.ai newer_than:1h "code"), type it with pup_type, submit. Only if the user's mail is not reachable does the user have to be involved, and then a single toast with focus:{hwnd} that names the code step.

After either route the page lands on /new; re-read landed to confirm signedIn:true before continuing.

Steps that pause in Auto mode

None on the Google route when the Google session exists. The email route pauses once, on typing the code (a new credential-like input), which is correct.

Do not

  • Toast before reading landed.
  • Open a second claude.ai window to "check": navigate the one you have.
  • Use an isolated window: the session would be thrown away and the user would sign in again next time.