[BUG] Claude in Chrome: sign-in is lost on every full Chrome restart (consent screen every time) — breaks unattended automation
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
- Open the Claude in Chrome side panel and sign in (Log in -> Approve on the consent page).
- Quit Chrome completely (menu -> Exit). Closing the window alone is not enough if another extension keeps Chrome running in the background.
- 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.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
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
chrome.storage.session, so they are gone after a full Chrome restart; recovery depends on the silent re-auth (launchWebAuthFlow,interactive: false,prompt: "none").startupReauthStatestays at{strikes: 1, until: <timestamp>}and never changes afteruntilhas passed, no matter how often the side panel is reopened.check_and_refresh_oauthto 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 (theawait or()line insidemr) and at theif (cr)check, neither fires when the side panel is reopened in the failing state.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
crwhen the 15 sPromise.racetimeout wins, not only inlaunchWebAuthFlow's ownfinally.Thanks for the detailed analysis. I can confirm it on my side (Windows 11, Chrome 153, extension 1.0.94).
So the workaround works here too. I hope the fix for the startup re-auth timeout gets picked up.
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/tokenExpiryare still routed tochrome.storage.session, so a full Chrome exit drops them.timeoutMsForNonInteractive: 15e3, outer race2e4), but that did not help.launchWebAuthFlowis still reset only in that call's own.finally(), not when the outer 20 s race timeout wins..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:
accountUuidis present inchrome.storage.local, andlastAuthFailureReasonis never written.claude.aistays logged in in a normal tab. There are no Chrome policies, no clear-on-exit setting and no cookie exceptions.