[BUG] Claude in Chrome: sign-in is lost on every full Chrome restart (consent screen every time) — breaks unattended automation

Status Open
Reported on v2.1.147
Maintainer reply None cached
Activity 4 comments · opened Sep 26, 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?

Since the update to v1.0.90 (2026-08-31), the Claude in Chrome extension loses its sign-in every time Chrome is fully restarted. The side panel shows the "Log in" screen, and clicking it opens the OAuth consent page ("Claude for Chrome wants to connect to your Claude chat account") every single time. The claude.ai website itself stays logged in.

This makes the extension unusable for unattended automation: a Claude Code scheduled task that drives Chrome via the claude-in-chrome MCP cannot run in the morning until a human signs in again. It will affect every user who restarts Chrome or their PC daily.

What Should Happen?

The extension should stay signed in across Chrome restarts (or silently re-authenticate), the same way claude.ai stays logged in.

Error Messages/Logs

Steps to Reproduce

  1. Open the Claude in Chrome side panel and sign in (Log in -> Approve on the consent page).
  2. Quit Chrome completely (menu -> Exit). Closing the window alone is not enough if another extension keeps Chrome running in the background.
  3. Relaunch Chrome and open the side panel.

Result: the "Log in" screen is shown again, and clicking it shows the consent page again. Reproduces 100% of the time.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Claude in Chrome extension before v1.0.90 (worked until 2026-08-30)

Claude Code Version

2.1.147 (Claude Code) / Claude in Chrome 1.0.94

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Environment: Windows 11 Pro (build 26200), Chrome 153.0.8010.53, Claude in Chrome 1.0.94 (started on 1.0.90, still present on 1.0.91 and 1.0.94), used with the Claude desktop app (Code tab).

What I have ruled out:

  • Cookies are NOT being cleared: the claude.ai sessionKey cookie is still present after restart, and claude.ai tabs stay logged in.
  • No "clear cookies/site data on exit" setting or session-only cookie exceptions.
  • Reinstalling the extension: no change.
  • Timing/network: happens in the middle of the day with the network fully ready, not only right after PC boot. Also happens after the PC resumes from sleep.
  • Before 2026-08-31 the sign-in survived restarts.

Related: #87993 describes the same failure mode and its likely cause (tokens kept in chrome.storage.session, which is wiped on every full Chrome restart; a single silent re-auth failure latches startupReauthState to terminal with no retry). It was auto-closed as stale / not planned without a response.

In my case the consent page appears on every sign-in, which suggests the silent re-auth receives consent_required and latches terminal immediately, so it can never succeed on its own.

Please reopen or fix this. For anyone using Claude in Chrome with Claude Code for scheduled or unattended work, it is a blocking issue.

View original on GitHub ↗

3 Comments

joyshan1986 · 16 days ago

Same issue here on Windows 11 with extension v1.0.94. I dug into the extension's shipped code and have some findings that may help narrow it down.

What happens

  • Tokens live in chrome.storage.session, so they are gone after a full Chrome restart; recovery depends on the silent re-auth (launchWebAuthFlow, interactive: false, prompt: "none").
  • In the failing case, startupReauthState stays at {strikes: 1, until: <timestamp>} and never changes after until has passed, no matter how often the side panel is reopened.
  • The side panel does send check_and_refresh_oauth to the service worker on every open (verified from the side panel console on a working session). But with logpoints at the entry of the token-check function (the await or() line inside mr) and at the if (cr) check, neither fires when the side panel is reopened in the failing state.
  • So the function body is never re-entered: mr = () => dr || (dr = ...) keeps returning an in-flight promise from an earlier call that never settles. Every later retry just awaits that stuck promise for the lifetime of the service worker.

Why it looks random

Sometimes the first attempt succeeds, sometimes it fails cleanly and a retry 30 s later works, and sometimes it gets stuck as above and nothing helps until the service worker is replaced.

Workaround

Toggle the extension off and on in chrome://extensions. This gives a fresh service worker and clears session storage, and it signs in silently right away, with no consent screen or workspace picker. Changing any extension permission, such as "Allow in Incognito", has the same effect because it reloads the extension.

Ruled out

Other extensions (removed everything except Bitwarden, still reproduces), proxy extensions, and network latency to claude.ai.

Suggestion

Put an overall timeout on the startup re-auth path, so the memoized promise always settles. Also reset cr when the 15 s Promise.race timeout wins, not only in launchWebAuthFlow's own finally.

itssunnytoday1030 · 15 days ago

Thanks for the detailed analysis. I can confirm it on my side (Windows 11, Chrome 153, extension 1.0.94).

  • After a full Chrome exit (menu -> Exit), the first time the extension stayed signed in, and the second time it was signed out. This matches the "looks random" behavior you described.
  • In the signed-out state, toggling the extension off and on in chrome://extensions signed it back in silently, with no consent screen.

So the workaround works here too. I hope the fix for the startup re-auth timeout gets picked up.

gmantova · 14 days ago

Still reproduces on extension 1.0.97 (Chrome 154.0.8037.58, Windows 10 Pro 22H2), so none of the updates since 1.0.94 fixed it.

Checked in the shipped 1.0.97 bundle (read-only):

  • accessToken / refreshToken / tokenExpiry are still routed to chrome.storage.session, so a full Chrome exit drops them.
  • The silent re-auth timeouts were raised compared with the 1.0.91 figures quoted in #92335 (timeoutMsForNonInteractive: 15e3, outer race 2e4), but that did not help.
  • The busy flag guarding launchWebAuthFlow is still reset only in that call's own .finally(), not when the outer 20 s race timeout wins.
  • The memoized startup token-check promise is still cleared only in its own .finally(), with no overall timeout, so an await that never settles pins it for the lifetime of the service worker. This matches the analysis in the comment above.

State after the failure: accountUuid is present in chrome.storage.local, and lastAuthFailureReason is never written. claude.ai stays logged in in a normal tab. There are no Chrome policies, no clear-on-exit setting and no cookie exceptions.

Showing cached comments. Read the full discussion on GitHub ↗