[BUG] [SECURITY] Claude for Chrome OAuth grant remains authenticated after global logout and is invisible to session controls

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 14 comments · opened Jul 28, 2026

Preflight Checklist

  • [x] I have searched existing issues and found related reports (#43801 and #34198), but not this Claude for Chrome-specific revocation and visibility gap
  • [x] This is a single security bug report: an OAuth grant remains usable after the account-wide logout controls that users reasonably expect to revoke it
  • [x] The findings below were checked against the current official Claude for Chrome extension and independently reproduced

What's Wrong?

Summary

This issue is an important correction and extension of my original report. The evidence does not yet prove that a stolen Claude Code token caused the unauthorized usage. A stronger credential hypothesis has now emerged: the official Claude for Chrome extension can remain authenticated after Log out of all devices, while its OAuth grant is not shown in the Claude Code token list or the normal active-session inventory.

Official extension ID:

fcoeoabgfenejglbffodgkkbkcdhcgfn

This creates a containment gap: a user can change passwords, globally log out, revoke every visible Claude Code authorization, remove connectors and delete visible sessions, yet an extension OAuth grant may remain valid and invisible.

Independently reproduced behavior

A separate GitHub user reproduced the following sequence:

  1. The Claude web session was logged out.
  2. Claude Code required authentication again.
  3. Windows and Android Claude apps were logged out.
  4. Claude for Chrome remained authenticated and usable.

Relevant investigation comments:

Static evidence from the official extension

I reviewed the packaged code of official Claude for Chrome versions 1.0.81 and 1.0.84. The reviewed code indicates that the extension:

  • requests OAuth scopes user:profile user:inference user:chat;
  • stores accessToken, refreshToken and tokenExpiry in persistent chrome.storage.local;
  • refreshes through https://platform.claude.com/v1/oauth/token;
  • requests a duration of 31536000 seconds during authorization/refresh (the server may cap the effective lifetime);
  • uses bearer-token authorization for Claude requests;
  • on extension logout, removes local/session extension storage;
  • does not make an observable OAuth revocation request in the reviewed logout path;
  • does not show an observable sender-constrained/DPoP mechanism in the reviewed bundle.

These observations do not disclose any token or private credential. They show why deleting local extension data is not equivalent to revoking the server-side OAuth grant or its refresh-token family.

Real-world incident that exposed the gap

My account experienced continuing unauthorized quota consumption after a suspected credential-theft incident. Before observing the following window, I had changed passwords, repeatedly used Log out of all devices, revoked/deleted all visible Claude Code sessions and authorizations, removed local Claude clients and extensions, checked connectors and scheduled tasks, and monitored the local machines for Claude processes and network activity.

On 28 July 2026 (Europe/Madrid), with no message intentionally sent:

  • 15:40 CEST — new five-hour window at 0%
  • 15:41 — 6%
  • 15:43 — 10%
  • 15:46 — 24%
  • 16:03 — 89%
  • 16:13 — 100%

The Max-plan window was exhausted in approximately 34 minutes. Timestamped screenshots, hashes and forensic notes have been preserved. Sensitive identifiers and full evidence can be supplied privately.

Attribution: fact versus hypothesis

The following is established:

  • quota increased rapidly without intentional user prompts;
  • every user-visible revocation and logout measure had been applied;
  • the Claude for Chrome authorization is not represented by the visible Claude Code authorization list;
  • independent reproduction shows that Claude for Chrome can remain authenticated after global logout;
  • the official extension maintains a refreshable OAuth credential locally.

The following remains a hypothesis, not a proven fact:

  • that a copied Claude for Chrome OAuth artifact was the credential used during my incident.

Only Anthropic can confirm attribution by correlating inference requests with OAuth client/grant identifiers, token-family issuance, source IP, user agent and metering records. A backend metering or orphaned-worker defect remains an alternative explanation. The extension revocation gap is independently reproducible regardless of which explanation caused my usage incident.

This is related to #43801 and #34198, but adds a distinct affected client and control gap: Claude for Chrome can survive account-wide logout while remaining absent from the authorization surfaces the user is told to inspect.

What Should Happen?

  1. Log out of all devices must revoke all access-token and refresh-token families for Claude web, apps, Claude Code and Claude for Chrome—not only terminate visible web/app sessions.
  2. Claude for Chrome grants must appear in an account-level authorization inventory with issue time, last use, client type and an effective server-side Revoke action.
  3. Removing or logging out of the extension should revoke its server-side grant, not only delete local browser storage.
  4. Password reset and security-driven global logout should terminate pre-existing OAuth grants, or clearly warn the user if any grant is excluded.
  5. Revocation must also stop any already-running remote inference/job associated with that credential.
  6. Anthropic should be able to identify the OAuth client/grant that generated each metered request and provide that information during an account-compromise investigation.

Revocation should follow the security properties described by RFC 7009 and current OAuth security best practices:

Error Messages/Logs

No client-side error is displayed. The failure is silent: other Claude clients are logged out or require reauthentication, while Claude for Chrome can remain authenticated. In the incident window, the usage meter rose from 0% to 100% without an intentional message being sent.

Full forensic material is being preserved and will not be posted publicly because it contains account and incident metadata.

Steps to Reproduce

Use a dedicated test account and the official extension; no credential theft is required.

  1. Install the official Claude for Chrome extension (fcoeoabgfenejglbffodgkkbkcdhcgfn) and authenticate it.
  2. Confirm that the extension can access Claude.
  3. In claude.ai, use Log out of all devices.
  4. Revoke all Claude Code authorizations visible under Settings → Claude Code.
  5. Confirm that the web session and other Claude clients require authentication again.
  6. Open Claude for Chrome in the same browser profile.
  7. Observe whether it remains authenticated and able to access Claude without a fresh login.
  8. Inspect the account session/authorization pages and observe that no distinct Claude for Chrome grant is available for server-side revocation.

Expected: the extension requires fresh authentication, and its previous access/refresh token family is rejected server-side.

Actual: independently reproduced behavior shows that the extension remains authenticated after global logout, with no visible account-level control to revoke that grant.

Security Impact

If an attacker obtains the extension's bearer or refresh credential—for example through browser-profile theft or credential-stealing malware—the victim may be unable to terminate the attack using the security controls exposed by Claude. The attacker may retain access to inference/chat capabilities, consume paid quota, potentially access data within the granted scopes, and continue until the credential expires or Anthropic manually revokes the token family.

The core security impact is failure of incident containment: the product reports global logout while leaving an invisible, refreshable authorization usable.

The extension-specific technical report and evidence were submitted privately to Anthropic through HackerOne report #3899016.

Vendor confirmation

Anthropic has now confirmed through HackerOne that Claude for Chrome uses a separate OAuth authorization and that the gap in revocation and account session-control coverage for this authorization was already known internally before this report.

The security report was closed as a duplicate of that internal issue. This confirms the revocation gap described here, but it does not by itself establish which credential generated the unauthorized usage in my account. Anthropic has directed the account-specific attribution, token revocation and charge investigation to Support.

Claude Model

Not sure / Multiple models

Is this a regression?

I don't know

Last Working Version

No known working version

Claude Code / Extension Version

Claude Code 2.1.220; Claude for Chrome 1.0.81 and 1.0.84 reviewed

Platform

Claude.ai, Claude for Chrome and Anthropic OAuth services

Operating System

Reproduced across browser/account session boundaries; incident environment includes macOS

Terminal/Shell

Not applicable to the extension-specific reproduction

Additional Information

Please treat the public issue as the reproducible product/control-gap report. Sensitive forensic evidence, account identifiers and incident artifacts are available through the private HackerOne report.

View original on GitHub ↗

10 Comments

uningeniero · 1 month ago

<img width="999" height="708" alt="Image" src="https://github.com/user-attachments/assets/deab6538-6bcf-49af-ae94-1213606a6ed5" />
<img width="988" height="658" alt="Image" src="https://github.com/user-attachments/assets/4e5e021a-7201-4872-affd-bd350f18dcec" />
<img width="986" height="676" alt="Image" src="https://github.com/user-attachments/assets/7ac56e80-8c82-4506-8534-334cd0905c3e" />
<img width="981" height="586" alt="Image" src="https://github.com/user-attachments/assets/b5c4c74f-9a53-4a11-8cb7-6ba41e88f1f3" />

lankhaar · 1 month ago

I am facing the same issue.

I have multiple PCs, and one got infected. This gave me an opportunity to test a few additional things because I could log out of all sessions and revoke all OAuth tokens from my Claude Code instances. After I did that, I checked what happened on the other systems, and here's what I found.

What seemed to work:

  • My browser was logged out of the web UI.
  • Claude Code required re-authentication.
  • The Claude apps (both Windows and Android) where also logged out

I'm not ruling out the possibility that there are still ways to bypass the above. However, another thing that definitely did not work was revoking the authentication for the Claude for Chrome browser extension.

Even after revoking all Claude Code OAuth instances and logging out of all sessions, my browser extension remained authenticated.

This can also be tested and reproduced by following these steps:

  1. Login to the web UI
  2. Check your active sessions (Settings > Account > Active sessions) and count them. Let's say there's one.
  3. Check your active Claude Code instances (Settings > Claude Code > Authorization tokens) and count them. Let's say there's one.
  4. Authenticate the Claude for Chrome extension in any browser.
  5. Verify the active session count and Claude Code OAuth instance count. Both will still be the same as before.

This means that Claude for Chrome sessions cannot be revoked through the web UI as they're not shown.

uningeniero · 1 month ago
Me enfrento al mismo problema. Tengo varios ordenadores y uno de ellos se infectó. Esto me dio la oportunidad de probar algunas cosas adicionales, ya que pude cerrar sesión en todas las sesiones y revocar todos los tokens OAuth de mis instancias de Claude Code. Después de hacerlo, comprobé qué había ocurrido en los demás sistemas y esto fue lo que encontré. Lo que pareció funcionar: Mi navegador cerró sesión en la interfaz web. Claude Code requirió una nueva autenticación. * Las aplicaciones de Claude (tanto para Windows como para Android) también se cerraron. No descarto la posibilidad de que aún existan maneras de eludir lo anterior. Sin embargo, otra cosa que definitivamente no funcionó fue revocar la autenticación para la extensión Claude para Chrome. Incluso después de revocar todas las instancias de OAuth de Claude Code y cerrar todas las sesiones, mi extensión del navegador permaneció autenticada. Esto también se puede probar y reproducir siguiendo estos pasos: 1. Iniciar sesión en la interfaz web 2. Comprueba tus sesiones activas (Ajustes > Cuenta > Sesiones activas) y cuéntalas. Digamos que hay una. 3. Comprueba tus instancias activas de Claude Code (Configuración > Claude Code > Tokens de autorización) y cuéntalas. Digamos que hay una. 4. Autentica la extensión Claude para Chrome en cualquier navegador. 5. Verifique el número de sesiones activas y el número de instancias de OAuth de Claude Code. Ambos seguirán siendo los mismos que antes. Esto significa que las sesiones de Claude para Chrome no se pueden revocar a través de la interfaz web, ya que no se muestran.

It’s true that it doesn’t appear as an active session when you launch the Claude for Chrome extension, but it may be designed so that you can enable or disable it within its own tab (Claude in Chrome):

<img width="941" height="446" alt="Image" src="https://github.com/user-attachments/assets/a076f7b7-6dfc-4be0-8d6b-a1d5e2c46805" />

lankhaar · 1 month ago
It’s true that it doesn’t appear as an active session when you launch the Claude for Chrome extension, but it may be designed so that you can enable or disable it within its own tab (Claude in Chrome): <img alt="Image" width="941" height="446" src="https://private-user-images.githubusercontent.com/144679692/628479010-a076f7b7-6dfc-4be0-8d6b-a1d5e2c46805.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjg4MzEsIm5iZiI6MTc4NTMyODUzMSwicGF0aCI6Ii8xNDQ2Nzk2OTIvNjI4NDc5MDEwLWEwNzZmN2I3LTZkZmMtNGJlMC04ZDZiLWExZDVlMmM0NjgwNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcyOVQxMjM1MzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MTE4ODEwNGFhYmJlODc4Nzk0NWFmZmYwZGVkYTk1OGY3MmE1NzNjYjgwY2JkNGFiNzkyYjQ5NDlmNzM0YjgyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.DiYgjAMclJRak5dfSfMOtYH5cth37lk59NAUWDiH6tM">

Well sure, it's fine if it's on it's own tab, however I would still want to be able to revoke those leaked sessions and keep using Claude in Chrome myself instead of having to deactivate the entire feature account wide.

I'm unsure if this is the same thing for you, but in my case, it's likely that it's my Claude in Chrome cookie that's being used since that one is definitely still active.
It's something only Anthropic can see, but they haven't responded yet (started a support conversation over a week ago)

uningeniero · 1 month ago
> Es cierto que no aparece como una sesión activa cuando se inicia la extensión Claude para Chrome, pero puede estar diseñada para que se pueda habilitar o deshabilitar dentro de su propia pestaña (Claude en Chrome): > <img alt="Imagen" width="941" height="446" src="https://private-user-images.githubusercontent.com/144679692/628479010-a076f7b7-6dfc-4be0-8d6b-a1d5e2c46805.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODUzMjg4MzEsIm5iZiI6MTc4NTMyODUzMSwicGF0aCI6Ii8xNDQ2Nzk2OTIvNjI4NDc5MDEwLWEwNzZmN2I3LTZkZmMtNGJlMC04ZDZiLWExZDVlMmM0NjgwNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwNzI5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDcyOVQxMjM1MzFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MTE4ODEwNGFhYmJlODc4Nzk0NWFmZmYwZGVkYTk1OGY3MmE1NzNjYjgwY2JkNGFiNzkyYjQ5NDlmNzM0YjgyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.DiYgjAMclJRak5dfSfMOtYH5cth37lk59NAUWDiH6tM"> Claro, está bien si está en su propia pestaña, sin embargo, me gustaría poder revocar esas sesiones filtradas y seguir usando Claude en Chrome yo mismo en lugar de tener que desactivar toda la función en toda la cuenta. No sé si te pasa lo mismo, pero en mi caso, es probable que se esté usando la cookie de Claude en Chrome, ya que sigue activa. Solo Anthropic puede verla, pero aún no me han respondido (inicié una conversación con soporte hace más de una semana).

I’ve understood you now

Yes, it would definitely be a useful feature, as there may be several browsers, with different profiles, or on different devices

In my case, I also had the Chrome extension installed in several browsers (with different profiles) and perhaps that authentication is what was compromised, as you say

I also wrote to them a few days ago, but unfortunately I haven’t received a reply. I started a thread on HackerOne, but I’ve been told it’s supposedly a duplicate

Although we’re not sure whether it’s down to the Claude extension, Claude Code or some other authentication cookie

What else can we do?

I’m glad to have found someone to talk to about this, at least...

lankhaar · 1 month ago

@uningeniero, if you also used the Claude for Chrome browser extension, then I would expect that it's indeed the browser extension cookie that can't be revoked which is being exploited.

What I ended up doing was cancelling my plan and creating a new account with a new subscription. It sucks, but until Anthropic responds, there's nothing else we can do because our main accounts are literally unusable right now.

I can only hope that, once they do respond, they'll refund all of the duplicate charges and transfer my remaining credits (or simply make my main account usable again).

I'd also say that this issue is definitely not a duplicate. Our issue is most likely related to the Claude for Chrome browser extension, and this is something that no other thread has discussed before. Additionally, those other threads are closed and appear to have been resolved. We have a similar issue with a different root cause, and that does not make it a duplicate of an issue that was closed a long time ago.

uningeniero · 1 month ago
@uningenieroSi también utilizaste la extensión Claude para el navegador Chrome, entonces esperaría que, efectivamente, se esté explotando la cookie de la extensión del navegador que no se puede revocar. Lo que terminé haciendo fue cancelar mi plan y crear una nueva cuenta con una nueva suscripción. Es una lástima, pero hasta que Anthropic responda, no hay nada más que podamos hacer porque nuestras cuentas principales son literalmente inutilizables en este momento. Solo puedo esperar que, una vez que respondan, me reembolsen todos los cargos duplicados y me transfieran los créditos restantes (o simplemente que vuelvan a activar mi cuenta principal). También diría que este problema no es un duplicado. Lo más probable es que nuestro problema esté relacionado con la extensión Claude para Chrome, y es algo que no se ha tratado en ningún otro hilo. Además, esos otros hilos están cerrados y parecen haberse resuelto. Tenemos un problema similar con una causa raíz diferente, y eso no lo convierte en un duplicado de un problema que se cerró hace mucho tiempo.

I hadn’t thought about the issue with the Claude Code extension for Chrome, and it makes a lot of sense to me, especially as I was logged in to several browsers using it.

I’m going to check that computer’s history to see if there’s anything from that time, and check whether the keychain is storing any cookies that could be exploited.

As for using it, I’m switching straight over to Codex. It’s unacceptable not to have a decent support and customer service in the year 2026.

Do you think it would be better to create a new issue, separate from this one, focusing specifically on the problem with this extension?

lankhaar · 1 month ago

@uningeniero I'd wait and see what this current issue brings us and perhaps edit the description a bit to state that this is most likely related to the Claude browser extension rather then creating yet another issue.

uningeniero · 1 month ago
@uningeniero I'd wait and see what this current issue brings us and perhaps edit the description a bit to state that this is most likely related to the Claude browser extension rather then creating yet another issue.

I’ve just edited it – I think it looks great.

Nothing new here – still no reply from Anthropic.

How are things over there? Any news?

uningeniero · 1 month ago
@uningeniero I'd wait and see what this current issue brings us and perhaps edit the description a bit to state that this is most likely related to the Claude browser extension rather then creating yet another issue.

<img width="753" height="565" alt="Image" src="https://github.com/user-attachments/assets/aacf15ed-cc95-46dc-851b-b6f4074f9735" />

This is frustrating. It restarted today; it’s only been a few minutes and it’s already at 3% without me having touched anything, without logging in anywhere, and with everything in quarantine.

Showing cached comments. Read the full discussion on GitHub ↗