[BUG] Login authenticates but has_finished_claudeai_onboarding=false walls existing paid Max account behind new-account onboarding (web/desktop/setup-token) — 10th public report of this signature, first with the mechanism captured on the wire

Status Open
Reported on v2.1.206
Maintainer reply None cached
Activity 22 comments · opened Aug 3, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

An active, paid Max 20x subscription (active since 2026-01-26) cannot be signed into on any browser, desktop, or CLI surface. Every sign-in path completes email verification successfully — authentication and account resolution succeed server-side — and the post-auth routing layer then discards the successful login and lands on "Let's create your account", the new-account signup screen, as though no account exists for that email. There is no actionable error: no error banner, no "account not found," no surfaced HTTP error — the flow reports success and then misdirects the user toward the one action most likely to harm the account (see #51002).

This failure signature — successful sign-in routed to new-account onboarding — has been publicly reported at least nine times before (dated reports March–May 2026, still unfixed as of August 2026); this is the tenth report, and the first with the mechanism captured on the wire. The prior reports vary in surface and error presentation, and their backend causes are not publicly established; what they share is the user-visible signature:

| Prior report | Date | Same signature | Outcome |
|---|---|---|---|
| #36797 | Mar 2026 | auth redirect loops to onboarding, active sub | open in name only — labeled invalid, unassigned, dormant since Mar 20 |
| #39788 | Mar 2026 | OAuth → account creation instead of auth | closed, no staff response |
| #51002 | Apr 2026 | connector flow created a duplicate account on the same email, locking out the paid subscriber | closed, no staff response |
| #57164 | May 2026 | Google OAuth → onboarding; phone + CLI still authenticated | closed, no staff response |
| #58566 | May 2026 | web + Mac + Windows desktop locked out; iOS, Console, CLI token still worked | closed duplicate/stale, no staff response |
| #60022 | 2026 | magic-link → onboarding, self-identified 5th report | closed "invalid," no staff response |
| #19160 | 2026 | Claude Code OAuth → /onboarding pricing page | closed not planned — despite carrying Anthropic's own has repro label |
| #45886 / #30854 | Mar 2026 | entitlement variant: "account does not have access" | closed not-planned/duplicate |

(The table lists nine prior issues; one row bundles the two entitlement-variant reports.) Across all nine: no human-authored public staff comment appears on any of them — the sole staff action on record confirmed reproduction (#19160's has repro label) and closed the issue not planned anyway — and no fix or workaround has ever been publicly documented. In #45886 the user reproduced the failure on a brand-new laptop, ruling out client state. In #51002, clicking "Create account" produced a duplicate identity and made things worse — I have not clicked it.

Current state of my account, by surface:

| Surface | Status | Evidence class |
|---|---|---|
| claude.ai / claude.com (Google SSO and email code) | signup screen | reproduced repeatedly |
| Claude Desktop (macOS) | signup screen | reproduced repeatedly |
| claude setup-token / CLI re-auth (same OAuth flow) | signup screen | reproduced repeatedly |
| Claude Code, this machine | claude auth status{"loggedIn": false, "authMethod": "none"} | verbatim CLI output |
| Claude Code on a remote Linux server (separate pre-existing OAuth token) | worked until 2026-08-02; its refresh token hit hard expiry 03:22 UTC and Claude Code wrote back a cleared credential the same day (verified from the server's .credentials.json: both token fields empty, account/org/tier metadata intact). Cannot re-authenticate because re-auth IS the broken flow | credential file, verified |
| iOS app | still signed in and working — the only remaining access | verified today |
| console.anthropic.com (same email) | signs in normally | verified |

Timeline (evidence-anchored):

  • 2026-01-26 — Max subscription active since this date (subscription record).
  • 2026-06-13 — logout/login events with no onboarding redirect (browser history): sign-in still worked.
  • 2026-07-07 22:17:49 UTC — account in active use on claude.ai web (browser history). 22:18:01 — logout. 22:18:12 — the very next Google-SSO login lands on /onboarding. A magic-link attempt at 22:19:14 (URL fragment encodes this account's email — available privately) lands on /onboarding at 22:19:17. The account was broken no later than the first post-logout login; whether the state was already inconsistent before the logout or the logout's session-destruction processing itself flipped it is answerable from the flag's write history against the 22:18:01 timestamp (see engineer check 2). Onset is bracketed between 2026-06-13 (last verified working login) and 2026-07-07 22:18 UTC (first documented failure, captured minute by minute). Failed-login clusters repeat Jul 20, Jul 27, Aug 1, Aug 2.
  • 2026-07-10 22:34 UTC — last locally-documented healthy CLI OAuth session for this account's org (39894dd3…) in Claude Code telemetry, is_claude_ai_auth: true, CC 2.1.206 — a pre-breakage token still working.
  • 2026-07-20 10:46 UTC — Claude Desktop still operating on this org via a persisted session predating the breakage (desktop main log). Sessions created before the failure survive (iOS still does today); every new login fails. This cleanly separates session validation (works) from post-authentication login routing (broken).
  • 2026-08-02 03:22:26 UTC — the last surviving CLI refresh token hits its hard expiry on a remote Linux server (verified from that server's credential file: accountUuid 765bf686…, organizationUuid 39894dd3…, claude_max, default_claude_max_20x, both token fields now empty).
  • 2026-08-02 07:33:03 UTCthe last successful request on the account's final surviving desktop/CLI credential: request ID req_011CddXtgF98KYt1rKoxjarW (the access token briefly outlived the refresh expiry). From this moment, iOS is the only access to a Max 20x subscription: every new login attempt on every other surface fails.
  • Billing has continued throughout.

An open question for your auth team (explicitly not asserted as proven): this account's refresh tokens aged out to hard expiry on two machines (2026-07-29 18:27 UTC on the local machine's credential; 2026-08-02 03:22 UTC on the Linux server). A routine absolute maximum token lifetime would explain this, and I cannot rule that out client-side — I do not have the tokens' issued_at values. But if the refresh endpoint consults the same onboarding state that walls new logins, the wall would not just block the UI — it would end every surviving session at its next hard expiry, which is how CLI access died on both machines. Two observations would settle it: the issued_at→expiry deltas for those two tokens in your refresh logs (by client ID), and whether a healthy account's refresh expiry advances across sessions. On the second: my control account's CLI refresh-token expiry was observed advancing across sessions on 2026-08-03 (its credential store re-written the same morning with a later expiry), while the affected account's tokens aged to hard expiry on both machines — consistent with the question, not proof of the answer. If it is routine TTL asymmetry, I withdraw the point.

The failure is account-specific and server-side: a second Max 20x account (different email) signs in normally from the same machine, browser, session, and steps — VPN on and off. Cache clears, multiple browsers, full reinstall, and reboots change nothing. No hosts-file entries for Anthropic domains, no proxy.

Wire observation (2026-08-03, HAR available) — narrows the fault to post-authentication routing. I recorded the failing sign-in in Safari with full network capture. The result overturns the "identity doesn't resolve" hypothesis of all prior reports:

The login SUCCEEDS. POST /api/auth/verify_magic_link → 200 with success: true and my complete account object: uuid 765bf686…, both org memberships, capabilities: ["chat","claude_max"], billing_type: stripe_subscription. The returned uuid is a byte-for-byte match for the accountUuid in the surviving Linux credential file and in the subscription records — the account being walled IS the historically working, subscribed account. The authenticated session then successfully fetched 30 of my conversations (chat_conversations_v2 → 200) and a full feature grant (current_user_access: chat available, claude_code available). Nothing is orphaned; authentication and account resolution succeed. What fails is what happens next.

The account object also contains the defect:

has_started_claudeai_onboarding  = true
has_finished_claudeai_onboarding = false    ← on an account created 2024-04-25,
completed_verification_at        = 2024-04-25T00:44:59Z    verified, paid, in active use
visibility_status                = null     (not suspended)
api_disabled_reason              = null     (not disabled)
subscription_pause               = null     (not paused)

Every fresh sign-in is walled behind the new-account onboarding screen, and this flag pair is the only anomalous client-visible state in the account object — even direct navigation to /new in the authenticated session bounces to the wall (client-side route, not a server redirect: the HAR contains no /onboarding document fetch or 302; the SPA routes on state).

The client-side half of the mechanism is verified, not inferred. The route-guard predicate, read from the exact frontend bundle the failing session served (shared-0-NLgn1Ox9.js, preserved in the HAR):

({account: e, isClaudeDot: a}) =>
    a ? false === e.settings.has_finished_claudeai_onboarding
      : !e.full_name || !e.display_name

On claude.ai, "needs onboarding" is has_finished_claudeai_onboarding === false — a single flag, not a composite. (Pending legal-consent as an independent gate is weakened by the same capture: the account object's accepted_clickwrap_versions is populated.) What remains server-side and open is why the flag is false — and the shipped frontend itself suggests the answer's shape: an internal dev-tools action ("Onboarding restarted", bundle shared-14) writes {has_finished: false, has_started: false} and routes to /onboarding. A reset of that form, followed by the wall marking started=true on first landing, produces exactly this account's (started=true, finished=false) state — i.e., the state carries the signature of an onboarding reset (tooling, experiment, or migration side-effect), not of an account that never onboarded. Whether such a reset fired here is answerable only from your write history (check 2).

Healthy-account discriminator (captured 2026-08-03, second HAR available). I hold a second Max 20x account. Same plan, same rate-limit tier, same browser, same login flow, captured the same day:

| Account | has_started_claudeai_onboarding | has_finished_claudeai_onboarding | Login outcome |
|---|---|---|---|
| Affected | true | false | walled at "Let's create your account" |
| Control (2nd Max 20x) | true | true | signs in normally |

One bit differs between the two account objects' onboarding state, it is the exact bit the verified route-guard branches on, and the login outcomes differ accordingly.

A dated-versions observation (labeled hypothesis, not asserted): the affected account's accepted_clickwrap_versions contains all three document types (aup, privacy, consumer-terms) — so this is not an account that never accepted terms — but at older version UUIDs than the control's. If a consumer-terms version rollout triggers a server-side onboarding reset to force re-acceptance, that would explain the reset-shaped flag state, the wall rendering a terms checkbox, the March-onward trickle of public reports (progressive rollout), and the legacy-account skew. Check 2 below includes the correlation to run.

The blast pattern fits: sessions created before the breakage (iOS, desktop, CLI tokens) never re-run the post-auth gate and kept working; every new login on every surface hits the wall; Console signs in normally, which suggests its sign-in path does not evaluate this flag (inference, not verified).

Key request IDs from the captured (successful-but-walled) login, 2026-08-03 ~16:28 UTC: req_011Cdg8Wf3gYBpi4hLiWdzQk (verify_magic_link, returns the account), req_011Cdg8WkMfb41MQtsRdo7hE (current_user_access), and from the Google-SSO attempt minutes earlier: req_011Cdg8Ty2afEmT6gHAHW71u (verify_google, also 200).

The candidate repair: reconcile this account's onboarding state through the owning service — the flag, legal-document acceptance state, and org/entitlement invariants together — validated in staging before any production write, then retest fresh login and token refresh on every surface. Whether correcting the flag alone is sufficient, or it is one symptom of a deeper state inconsistency, is exactly what the checks below determine; what is certain is that no client-side action can resolve this. I have not clicked "Create account" / the terms checkbox — bundle analysis shows it submits PUT /api/account/accept_legal_docs plus get_or_create_chat_organization, which would probably resume the existing account, but issue #51002 documents a duplicate-account outcome from this screen and I am not gambling a two-year account on "probably."

What Should Happen?

After email verification succeeds, the existing paid account should load. Instead the flow silently falls through to new-account creation.

What I need from Anthropic, in this issue:

  1. A human. No prior report of this signature has a human-authored public staff response. My four support follow-ups (conversation IDs below) have had no human response. Please escalate to whoever owns the claude.ai account/onboarding service.
  2. Repair this account's onboarding state through the owning service (see "candidate repair" above) — validated in staging, then retested on fresh web, desktop, and setup-token logins.
  3. The class-level diagnostic (check 3 below): if the class is non-empty, backfilling it makes this entire issue category disappear.
  4. The diagnostic legwork is done — see the wire observation above. A sanitized HAR of the full captured login (cookies, auth headers, and one-time codes stripped; all API bodies intact) is ready to send through any private channel.

Billing has continued throughout; remediation of the account and billing is proceeding through support channels in parallel — this issue asks only for the engineering fix and the escalation path.

For the engineer who picks this up — five checks, phrased goal-first because I cannot know your schema (wherever onboarding state actually lives — table, event log, or derived view). No reproduction is needed; the account is in the failed state right now, and the first check is a single record read:

  1. Read this account's effective onboarding state (765bf686…): confirm has_finished_claudeai_onboarding = false alongside completed_verification_at = 2024-04-25 and an active claude_max subscription, and confirm whether the value is stored or derived. That contradiction is the bug. Also read the write history of the has_started/has_finished pair — started=true on an account that never clicked through the current flow is itself unexplained and may be the actual clue (a partial onboarding write?).
  2. Audit the flag's history against two timestamps: the 2026-06-13 → 2026-07-07 22:18 UTC onset bracket, and the 22:18:01 logout specifically (did session-destruction processing write account state?). Look specifically for a reset-shaped write(has_finished=false, has_started=false) in one operation, the same shape your own frontend's "Onboarding restarted" dev action produces — from any tooling, experiment, or migration in that window. Correlate with whatever shipped enforcement then — code deploy, config change, feature-flag or percentage rollout — and specifically with any consumer-terms/AUP version rollout: this account's accepted_clickwrap_versions are older than a healthy control account's, and a forced re-acceptance job that resets onboarding state would produce everything observed. A progressive rollout over a legacy cohort would also explain the March-onward trickle of public reports and the sharp per-account onset.
  3. Run the class query in your actual schema: accounts with onboarding started-but-not-finished state, an active paid subscription, and created_at before the current onboarding flow existed. Every row is another instance — the nine prior reports suggest the class is not empty.
  4. Check what get_or_create_chat_organization does when called from the onboarding wall by an account that already has a chat org. If any path creates rather than gets, that is the #51002 duplicate-account factory, and it is still armed.
  5. Answer the refresh-token question (framed as an open question above): pull this account's refresh logs by client ID and the two expired tokens' issued_at→expiry deltas. If the expiries were routine absolute TTL, say so and the point is withdrawn; if the refresh endpoint consults onboarding state, the wall is also ending surviving sessions at their next expiry.

Error Messages/Logs

There is no actionable error message — that is the bug. The flow reports success and then routes to account creation, misdirecting the user toward the very action most likely to harm them (#51002):

Email verified as <redacted>

followed immediately by:

Let's create your account

Current CLI state on the machine that held this account (verbatim):

$ claude auth status
{
  "loggedIn": false,
  "authMethod": "none",
  "apiProvider": "firstParty"
}

When a session is attempted on the Linux server that held the account's last token (transcript entry, 2026-08-03, model: <synthetic> — generated client-side, no API call made):

Login expired · Please run /login

The prescribed remedy is the defect: /login runs the OAuth flow that lands on the signup screen. The error message points at a door that doesn't open.

A useful server-side anchor: the last successful request on the account's final surviving desktop/CLI credential, 2026-08-02 07:33:03 UTC —

req_011CddXtgF98KYt1rKoxjarW

Look up that request; every desktop/CLI/new-login attempt after that timestamp is the failure in progress (the surviving iOS session continues to make successful calls, which is part of the diagnostic pattern, not a contradiction of it).

There is no client-side debug log to attach, and that is itself diagnostic: the failing sign-in happens on claude.ai's OAuth/verification endpoints before any client state is written. Two request IDs provably tied to this account's organization (from Claude Code telemetry stamped with org 39894dd3…, session 46253df0-ea73-421b-b9b3-962a4658c00b, 2026-07-10 — i.e., from when the account still worked):

req_011CcuAzWkTQgZYGHj9siUrU
req_011CcuB1eVoyafssK5sXjFGB

These identify the account server-side. The request IDs of the failing sign-in attempts exist only on Anthropic's auth endpoints; I can capture a sanitized HAR of the failure from browser DevTools and provide it through any private channel.

Steps to Reproduce

  1. Go to claude.ai (or claude.com, or open Claude Desktop) signed out.
  2. Enter the affected email address.
  3. Use either "Continue with Google" or the 6-digit email code — identical behavior.
  4. Verification succeeds ("Email verified as …").
  5. Observed: "Let's create your account" (new-account signup). Expected: the existing paid account loads.

Reproduces on every path: claude.com Google SSO, claude.com email code, claude.ai directly (both methods), Claude Desktop, and claude setup-token. Not affected by: cache/cookie clears, different browsers, reinstall, reboot, VPN on/off. Control: a different Max 20x account signs in normally from the same browser session.

I have not clicked "Create account" (see #51002 for why).

Claude Model

Not sure / Multiple models

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.220 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

Day-1 support ticket recovered: onset moves to Jul 6, trigger window identified
I located the full transcript of the earliest support conversation (215474970960965), opened via the logged-out "I can't login" flow within hours of the failure, containing a contemporaneous report with screenshots — written four weeks before any of the forensics above. It establishes four things (times below converted from US Central, CDT = UTC−5):

  1. Onset was the night of Jul 5→6, not Jul 7. Last confirmed signed-in web state: 2026-07-06 04:02 UTC (the account's usage pane visible in a signed-in session). First screenshot of the signup wall: 05:10 UTC; still failing at 05:49 UTC. The Jul 7 22:18 UTC capture in the timeline above remains the first minute-by-minute documentation, but it documents an already-broken account — the Jul 7 browser session was a surviving pre-breakage session; its logout merely ended it. This supersedes the "bracketed 2026-06-13 → 2026-07-07" line above, and answers check 2's Jul-7 question: the state was broken before that logout.
  1. The trigger window is ~68 minutes wide and contains specific, unusual activity (per the contemporaneous report): alternating logins on claude.ai in one browser between this account and a second Max account (email-code logins included), and at ~05:09 UTC — about one minute before the first failure screenshot — a Claude Code install was re-bound from this account to the second one via /logout + /login: a session-destruction event on the affected account immediately before the first failure evidence. Check 2's audit window is therefore 2026-07-06 04:00–05:10 UTC, with specific attention to account-switching and logout/session-destruction processing writing account state.
  1. Your support bot diagnosed this as backend on day one, then declined escalation. Verbatim, from the transcript: "there may be a backend lookup issue that needs investigation"; "This points to a backend account mapping issue that standard troubleshooting can't resolve." Asked directly "Could you send the ticket to an Anthropic engineer?", it replied that reporting in the conversation "is all that's needed," that "there isn't a separate ticketing system with tracking numbers," there is "no way to track the status of a fix," and "reaching out multiple times about the same issue won't expedite a fix."
  1. The first report is Anthropic-timestamped 2026-07-06 — same day as onset — and included the account email and full identifiers. Everything in this issue was in your support system, with a backend diagnosis from your own bot, four weeks before this filing.

-----------------------
Local machine: 2.1.220 (Claude Code), macOS 26.5.2
At last healthy session (2026-07-10, telemetry): 2.1.206
Claude Code is a victim, not the cause: claude setup-token runs the same broken OAuth flow, so the CLI cannot re-authenticate this account anywhere — including on a separate Linux server whose token hit hard expiry 2026-08-02 03:22 UTC.

-----------------------
Terminal Shell: VS Code and Terminal.app
-----------------------

Additional Information
Support history — no human dialogue. Multiple tickets over ~5 weeks, four written follow-ups, explicit escalation requests in each; no human-authored response received to any of them (verbatim transcripts of the automated replies available privately). One earlier ticket was auto-closed with ban boilerplate — a misdiagnosis; suspended accounts do not render a signup form, and the account record confirms visibility_status: null, api_disabled_reason: null. At one point I received a notice giving me one day to re-log in before losing app access — with re-login being exactly the broken flow. Conversation IDs, all without human-authored response: 215474970960965 (the earliest — opened 2026-07-06 via the logged-out "I can't login" flow, within hours of onset, with full identifiers; transcript recovered, see Addendum), 215475251588888, 215475322334218, 215475309512859.

Also relevant: I hold a working Max 20x on a second email and own a Team org on a third. If the affected identity was ever touched by an org add/remove/migration, that may be the trigger — several prior reports (#51002, #57164) involve multi-account or connector flows.

Available privately on request — the full untruncated values of the identifiers referenced above (account email, org UUID 39894dd3…, account UUID 765bf686…, API-platform org UUID 5ce80225…), plus billing receipts, signup-screen screenshot, support-ticket transcripts, and the sanitized HAR of the failing sign-in. Identifier prefixes are left in the public text deliberately, so backend tracing can start without waiting on the private channel.

Screenshot 2026-07-27 at 5.02.36 PM redacted.pdf

---

Appendix — Prior Reports: What Each User Tried, What Anthropic Did, and the Outcome

All nine issues individually verified 2026-08-03.

| Issue | What the user did | What Anthropic did | Outcome |
|---|---|---|---|
| #19160 (Max 5x, Windows) | Reported CLI OAuth → pricing page, with reproduction steps | Applied its own has repro label — then closed not planned | Locked out; no fix |
| #30854 (Max, macOS) | Repeated /login as the error itself instructed | Closed not planned, stale | Locked out; no fix |
| #36797 | Reported the redirect loop | Labeled invalid, never assigned; dormant since Mar 20 | Open in name only; no fix |
| #39788 (Max, £90/mo) | claude auth login --claudeai, documented redirect to account creation | Closed duplicate — of other unfixed issues | Locked out; no fix |
| #45886 (Max) | The most exhaustive self-help on record: re-logins, desktop re-auth, full uninstall, ~/.claude wipe, npm cache clear, billing verified, bought a brand-new laptop — identical failure on fresh hardware | Closed duplicate/stale | Proved it server-side at personal expense; no fix |
| #51002 (paid Max) | Followed the Drive-connector flow in good faith; clicked through the signup it presented | Closed not planned / invalid | Actively harmed: duplicate account created on his email, deepening the lockout |
| #57164 (Max, macOS) | Documented the surviving-sessions pattern (phone + CLI alive, browser dead) | Closed not planned, stale | Locked out; no fix |
| #58566 (Max, $106.60/mo) | Did everything Fin suggested (cache clears, reinstalls, logout cycles); explicitly requested human escalation; refused to click "Create account" | Fin never handed off; closed duplicate/stale | Locked out, still billed; no fix |
| #60022 (Max) | Documented the magic-link variant, cited the four prior reports, emailed support | 72+ hours of silence; Fin refused handoff; closed invalid ("not related to Claude Code") | Locked out; no fix |

The patterns:

  1. No self-help path has ever worked — up to and including new hardware — because the defect is server-side account state. Nothing client-side could ever have worked.
  2. Every support route dead-ended at the AI agent. No user reported reaching a human. Every closure state on record is mechanical: duplicate, stale, invalid, not-planned (staff interaction was limited to labels and closure state).
  3. The one user who engaged with the signup screen was made worse off (#51002).
  4. has repro + not planned on #19160: triage confirmed the bug reproduces, and closed it anyway.
  5. The invalid closures ("not related to Claude Code") are half-right and fully damning: the root cause lives in the claude.ai account service, for which no public tracker exists — so users report it in the only place available and get bounced. It remains a Claude Code bug regardless: claude setup-token is broken by it.

View original on GitHub ↗

10 Comments

VICTech-admin · 27 days ago

Support-track update (2026-08-03), for the record and for the prior reporters.

Through the Console's own "claude refund request" category I requested: a prorated refund from 2026-08-02 — the point all non-iOS access ended; I deliberately did not claim July, when a surviving CLI token still worked — and suspension of the upcoming renewal while the account remains walled.

The automated agent's initial response denied this in full: "Unfortunately, we're unable to issue compensation or refunds for degraded service, service disruptions, or account access issues like the one you've described."

After a rebuttal noting that (a) this is non-delivery caused by the account-state defect documented above, not "degraded service," and (b) the self-serve cancellation UI sits behind the same broken login, the agent replied: "I'm connecting you with someone who can review your case directly… We're transitioning your question to one of our human support agents." (Conversation 215475341348541.)

For completeness: similar "a human will respond" messages have been received several times since 2026-07-06, by chat and email, without a human response to date. This update will be amended if one arrives. The engineering ask in this issue is unchanged and remains the cheapest resolution for everyone: reconcile the account's onboarding state — repair moots the billing question entirely.

spaley · 27 days ago

Adding an independent reproduction of this failure class. An existing paid Max account began routing every fresh email and Google login to “Let’s create your account” around July 15. The behavior reproduced across Chrome, Safari, and iOS Safari; previously authenticated sessions initially continued working.

On August 3, I tested the workaround reported in #60022 using a fresh browser Guest session: email and Claude in separate tabs, one newly requested magic link, URL copied manually and pasted into a new tab rather than clicked. It still routed to “Let’s create your account.” I stopped without entering information, accepting terms, or submitting onboarding.

Multiple support contacts have received automated responses only; no human has responded. The failed clean-session test is consistent with an account-specific post-authentication onboarding-state problem rather than stale cookies, extensions, or ordinary email-link handling.

VICTech-admin · 27 days ago

Thank you — this is the first independent reproduction on this record, and your clean-session test adds real value: it eliminates client state for a second account. Three data points would make your case maximally useful to whoever picks this up:

  1. Approximate account creation date — the documented cases are legacy accounts (mine: April 2024); the reset/rollout hypothesis predicts a legacy-cohort skew.
  2. Does console.anthropic.com still log you in normally? (It does for me — the wall is specific to the claude.ai consumer surface.)
  3. Your support conversation IDs, if you have them — the automated-only response pattern is part of the record.

If you're comfortable with DevTools: a Network capture of your failing login shows your own account object in the verify_magic_link response — check has_finished_claudeai_onboarding. If yours is also false on an established account, that's a second independent confirmation of the mechanism, from hardware and accounts I've never touched.

Meanwhile: keep any surviving sessions signed in — they are irreplaceable until this is fixed — and, as you already did, never click "Create account" (#51002).

spaley · 27 days ago

Thanks — I checked all four points, and the network capture independently confirms the same mechanism.

  • The identity record returned by verify_magic_link was created May 30, 2025 and is verified. My billing records show the paid Pro subscription began Dec 3, 2025 ($20/month), then upgraded to Max ($200/month) on Mar 2, 2026.
  • Login to Claude Platform/Console with the same identity succeeds normally and opens my existing individual API organization. The failure is specific to the Claude consumer surface.
  • Support conversation IDs: 215475098407107, 215475141430794, and 215475226342793. I have still never received a human response from Anthropic.
  • A fresh isolated browser session with the email link manually copied/pasted still lands on “Let’s create your account.” I did not accept terms or click “Create account.”

Sanitized fields from the failing consumer verify_magic_link response:

account.is_verified: true
account.completed_verification_at: present (May 30, 2025)
account.settings.has_started_claudeai_onboarding: true
account.settings.has_finished_claudeai_onboarding: false
consumer organization capabilities: [chat]
consumer organization billing_type: none
claude_max capability: absent

The same response also contains the intact Platform/API membership (api, api_individual; prepaid), which is consistent with Platform working while the paid consumer identity mapping is lost. I no longer have a surviving paid consumer session; mobile now presents the account as Free.

No tokens, cookies, UUIDs, email address, or raw response/HAR are included here.

VICTech-admin · 27 days ago

Confirmed — second independent capture of the identical mechanism: has_started=true / has_finished=false on a verified, paid, pre-2026 account, Console/API membership intact while the consumer surface walls. Different hardware, networks, and account vintages (Apr 2024 / May 2025); same one-bit defect.

The difference between our captures matters diagnostically: my consumer org still shows capabilities: ["chat","claude_max"] with billing_type: stripe_subscription; yours shows [chat], billing_type: none, claude_max absent, and mobile now presenting Free. Your case appears to be a later stage of the same failure — the paid entitlement has detached from the consumer org, not just the login routing. If that progression is general, walled accounts don't merely stay locked out; they decay. This also answers, in the affirmative, the open question above about the wall eventually consuming surviving sessions.

Combined record for whoever picks this up: 2 accounts, 2 independent wire captures of the flag pair, 8 support conversations between us (215474970960965, 215475251588888, 215475322334218, 215475309512859, 215475341348541 / 215475098407107, 215475141430794, 215475226342793), zero human responses to either of us.

If any surviving surface still lets you: export your data now. And thank you for the disciplined sanitization.

spaley · 27 days ago

One important qualification on the entitlement difference between our captures: it should not yet be treated as evidence that walled accounts naturally “decay.”

I filed an Amex dispute only after I had been locked out for more than a week, had made repeated support attempts, and had received no response from a human being—only automated replies. The dispute was a last-resort response to being billed for an account I could not access; my stated preference was restoration of the existing account, not creation of a new account.

Before the dispute, the mobile app was still a surviving Max session and reported that the active subscription did not match the current claude.ai account. Roughly two days after the dispute was filed, mobile was downgraded to Free. The later billing_type: none, missing claude_max, and Free presentation are therefore plausibly—and perhaps likely—a consequence of the chargeback/dispute workflow.

The has_started_claudeai_onboarding=true / has_finished_claudeai_onboarding=false routing failure predates the dispute. My capture independently confirms that shared defect, but it does not independently establish that the auth wall spontaneously removes paid entitlements or consumes surviving sessions over time.

VICTech-admin · 27 days ago

Correction accepted and appreciated — this standard of rigor is exactly what this thread runs on. Reclassifying: the entitlement stripping and Free downgrade are plausibly consequences of the dispute workflow, not spontaneous decay. The shared defect — the flag-pair routing failure, which predates your dispute — stands doubly confirmed and unaffected.

Your sequence also documents something practically important for anyone else who lands here: filing a card dispute on a walled account resulted, within ~2 days, in revocation of the paid entitlement and downgrade of the surviving mobile session to Free. The one self-help lever that produces a response has a documented cost. Export your data first; dispute last. (I am holding my own dispute for exactly this reason while a promised human review is pending.)

One pre-dispute detail from your account belongs in the eventual engineer's audit: your mobile app reported the active subscription "did not match the current claude.ai account" before any dispute existed — an entitlement-to-account mapping mismatch surfaced by the client. That is consistent with the onboarding-state defect having a sibling on the subscription-mapping side (check 2's write-history audit should cover both).

spaley · 27 days ago

Two practical qualifications for the record:

First, the card dispute did not produce a human support response. I still have received only automated replies. The observable “response” was the apparent automated revocation of the paid entitlement and the surviving mobile session’s downgrade to Free.

Second, Anthropic’s documented full-data export cannot be initiated from the mobile app. It requires a signed-in web or desktop session, and the emailed download also requires the user to remain signed in. Because this defect had already walled both web and desktop access, my surviving mobile session could not be used to request an official export. At this stage, I can only manually preserve accessible conversations and files.

There is also a separate stranded-value issue: the affected consumer account held more than $520 in prepaid extra-usage credits. Those credits were purchased separately from the monthly Max subscription and are now inaccessible on every surface. I have no evidence that the balance was deleted, but Anthropic has not confirmed that it remains intact or provided any way to access it.

The Amex dispute concerns the $200 Max subscription charge plus $12 in associated tax—a $212 transaction in total—not the separately purchased prepaid credits. The $520+ in prepaid extra-usage credits was purchased too long ago to remain eligible for a card dispute. Unlike the recent $212 subscription transaction, that stranded balance has no available chargeback remedy; access restoration or direct remediation by Anthropic is the only apparent path to recovery.

So the practical warning is narrower: if any web or desktop session survives, export immediately. If only mobile survives, manually salvage critical conversations and files, and do not sign out, reinstall, clear app data, or switch accounts. A card dispute should remain the last resort because it may revoke the final paid session without producing human review.

VICTech-admin · 27 days ago

Both qualifications noted, and the first one changes my planning: the dispute produced no human review, only automated revocation. That makes a card dispute negative-yield while any repair path remains — it costs the final session and buys no escalation. I'm holding mine accordingly.

On export, one route may still be open to others in this thread: the walled page itself is an authenticated claude.ai session. With DevTools open on the "Let's create your account" screen, read-only GETs against the conversation-list and conversation-detail endpoints return full content — I recovered 116 conversations that way tonight. (POST /api/account/export_data returns 404 on the walled account even from claude.ai with a valid session — so the official export does appear blocked by the wall, consistent with your finding, which is itself worth an engineer's attention: the defect obstructs data access, not just login.)

The stranded prepaid credits are a separate and serious category — separately purchased, unusable, unconfirmed. If Anthropic's position is that no refund applies to service disruptions, that cannot extend to prepaid balances the user cannot reach. Worth stating explicitly in your dispute correspondence and any regulatory complaint, distinct from the $212 subscription charge.

Revised practical guidance for anyone landing here, incorporating your correction:

  1. If any web/desktop session survives — export immediately, official route first, DevTools GETs as fallback.
  2. If only mobile survives — manually salvage; do not sign out, reinstall, clear app data, or switch accounts.
  3. Check for prepaid credit balances and document them before considering any dispute.
  4. Card dispute last, understanding it may revoke your final session without producing human review.
spaley · 27 days ago

Independent validation of the authenticated-wall recovery method

Confirmed on this second account: although the UI remains stuck at “Let’s create your account,” the page is an authenticated claude.ai session and its read-only data endpoints remain usable.

Sanitized recovery results:

  • Conversation list returned 113 records.
  • Conversation-detail GETs recovered complete message data for 112 of 113 conversations.
  • The remaining conversation consistently returns HTTP 403 with permission_error, including after a fresh authenticated retry. This is a conversation-specific server authorization denial, not an expired-session or transient-fetch failure.
  • The recovered conversation records referenced 408 file records, deduplicating to 378 unique downloadable assets. All 378 assets were recovered and checksum-verified.
  • Legacy attachment records that exposed extracted content and metadata—but no independent binary-download URL—remain preserved inside the conversation JSON.

The process used authenticated read-only GETs only. I did not accept onboarding terms, click Create account, submit any POST, inspect or export cookies/tokens, or touch the surviving mobile session.

So this is now independently validated as an effective emergency data-recovery path for technically capable users already walled by this defect. It is not an account repair, and it does not replace the official export: it produces raw conversation JSON/files and can still encounter object-level permission failures, as the single 403 demonstrates.

Thank you for documenting this route—it recovered nearly the entire accessible account history when Anthropic’s normal export path was unavailable.

Showing cached comments. Read the full discussion on GitHub ↗