The click nobody made: how to check which extensions can drive your AI assistant
Researchers say a rogue extension can fake a click and make Claude for Chrome read your Gmail. How extension-to-extension attacks work, and how to check yours.
Almost every safety control in an AI browser extension bottoms out in the same sentence: and then the user clicks to confirm. That click is the last thing standing between an agent with access to your mailbox and an agent doing something with it. So it's worth asking what the extension actually checks when the click arrives — because in a browser, a click is just an event, and events can be manufactured.
That's the finding at the centre of research published by Manifold Security in July 2026, covered by BleepingComputer and SecurityWeek. According to the researchers, another extension in your browser could fake the click that launches Claude for Chrome's built-in tasks — and reach the Gmail, Docs and Calendar access you granted the AI, not the access it was granted itself.
What Manifold found in Claude for Chrome
Claude for Chrome ships with a set of predefined tasks — nine of them, according to the reporting — that the extension can run on your behalf. Three of those reach connected Google services: read your Gmail, pull your most recent Google Doc along with its comments, or read your Google Calendar.
The extension decides you asked for one of these by listening for a click on a specific page element. According to Manifold Security's write-up, that handler never checked whether the click came from an actual person.
The browser hands you that check for free. Every DOM event carries a read-only isTrusted flag: true when the browser generated it from real user input, false when a script dispatched it. A click created with dispatchEvent() — or with element.click() — arrives with isTrusted: false stamped on it. The flag is there precisely so that code can tell "a human pressed this" apart from "some JavaScript said so."
Manifold's demo, as reported, was six lines pasted into the claude.ai console: inject an element carrying one of the supported task identifiers, dispatch a click at it, watch the workflow run. The researchers said the console logs showed isTrusted: false on the event that was honoured. Their proposed fix is a single line at the top of the handler — return early if the event isn't trusted.
Pasting into your own console is a demo, not an attack. The attack version is an extension that can inject a content script into claude.ai. That's an ordinary, unremarkable capability — any extension with host access to a site can run code in that page, and thousands of perfectly normal extensions hold access to every site you visit. The attacker's extension doesn't need connectors, doesn't need Google OAuth, doesn't need to convince you of anything. It needs to be installed, and it needs the AI extension to be sitting next to it.
The second finding, and the response
Manifold reported a second issue in the same disclosure: a skipPermissions=true parameter on the side panel URL that, per the researchers, brings the panel up in a privileged state without a consent prompt. Manifold's own framing is the honest one here — on its own it isn't a working exploit, because something else has to control that URL first. Anthropic classified it as informational, according to the reporting.
On the synthetic-click finding, the reporting says Manifold disclosed both issues through Anthropic's bug bounty programme on 21 May 2026 and got an acknowledgement the next day, and that Anthropic closed the synthetic-click report as already tracked under a broader issue. Manifold retested on 7 July against version 1.0.80 and said it still reproduced, eight releases after the report. In the researchers' words: "Eight Claude for Chrome releases later, the bypass is still six lines of JavaScript."
Two things to keep straight. Anthropic did engage — through a bounty programme, with acknowledgement, and with a stated position on severity, which is more than a lot of vendors offer. And I could find no public statement from either side since mid-July confirming a fix or withdrawing the finding, so treat the status as unresolved-as-far-as-anyone-has-said rather than as confirmed-broken-today. CyberScoop and Malwarebytes covered the same disclosure independently if you want to compare accounts.
The part that isn't about Claude at all
Strip out the product name and you're left with something that should worry you more.
Every mental model we use for extension safety reasons about one extension at a time. The install prompt lists what this extension wants. Store review looks at this extension's code. My own permission write-ups, and Extenshi's scoring, mostly answer "what can this thing reach?" None of that describes what an extension can reach through the extension sitting next to it.
Agentic extensions break that model badly, because they hold something no ordinary extension holds: long-lived, pre-authorised access to services outside the browser. You connected Gmail once. You approved Calendar once. From then on, the AI extension is a permanent, logged-in doorway into accounts whose passwords never touched the attacker's code. A neighbour extension that can merely inject a script into one domain gets to knock on that door — and if the door only checks that somebody knocked, it opens.
I've written about the two other shapes this takes. ClaudeBleed, disclosed by LayerX in May, abused externally_connectable — a trusted origin, not a trusted sender. Man-in-the-prompt attacks go through the DOM to rewrite what you typed before the model sees it. Manifold's own post is titled "ClaudeBleed Reopened," which tells you how the researchers see the lineage. Three different mechanisms, one boundary: the browser gives co-resident extensions far more reach into each other than any permission dialog admits.
That boundary is not going to be fixed by a store policy. It has to be fixed in each extension that holds something worth stealing.
How to check your own setup
Five things, in the order I'd actually do them. None of them require trusting that a specific bug got patched.
1. Find out who else is on the page. Open chrome://extensions, click Details on each extension, and look at Site access. Anything set to "On all sites" can run code on claude.ai, on your Gmail, on your bank. Switch what you can to On click — most extensions work fine that way and simply stop having standing access. This one change removes the precondition for the whole attack class.
2. Count your AI extension's connectors, not its permissions. The install prompt for an AI assistant looks tame; the blast radius comes from what you attached afterwards. Open its settings and disconnect Gmail, Drive, Calendar, Salesforce or anything else you're not actively using. Reconnecting takes 30 seconds. Leaving it connected is a standing grant.
3. Turn the approval mode down. Claude in Chrome offers manual approval, automatic approval, and a skip-everything mode, plus per-site "always allow" grants — Anthropic documents all of it in its permissions guide. Skip-all is where an unattended agent does the most damage with the least noise. Use manual on anything touching mail or documents, and review the sites you've already blanket-approved.
4. Stop sharing a profile. This is the structural fix and the one people skip. Run your AI agent extension in a browser profile with nothing else installed. Not "nothing suspicious" — nothing. Extension-to-extension attacks need co-residency, and a separate profile removes it entirely, which no amount of vetting can.
5. Re-check what's actually installed. Not what you meant to install. Extensions change hands, and a clean extension can ship a payload in an update — I covered malware that arrives in the update, not the install a couple of weeks ago. Walk the list, uninstall what you don't recognise or don't use, and pay attention to anything that quietly holds all-sites access.
If you build extensions, this is a one-liner
The developer lesson generalises well past AI, so it's worth saying plainly: a click event is not consent. If your extension gates a privileged action behind a button, check the flag.
element.addEventListener("click", (event) => {
if (!event.isTrusted) return;
runPrivilegedThing();
});That's it. isTrusted is false for anything a script dispatched, which is exactly the case you want to reject. It's not a complete defence — a co-resident extension has other routes into a page — but "any neighbour can press the button" shouldn't be one of them, and closing it costs a line.
How Extenshi helps
The reason I keep pushing on "who else is on this page" is that the answer is genuinely hard to see. Chrome shows you permissions one extension at a time, at install, in language designed not to alarm you.
Extenshi catalogues extensions across Chrome, Firefox and Edge with their declared permissions, publisher details and scan results, so you can check what an extension asks for and who ships it before it ends up next to your AI assistant.
And if you'd rather start from the browser you already have than from a store page, npx @extenshi/guard scan reads the extensions installed across your browsers and flags the risky ones, with disable-and-undo built in. No account needed for the scan.
Sources
- ClaudeBleed Reopened: Browser Extensions Can Still Push Claude for Chrome to Read Your Gmail — Manifold Security
- Claude Chrome extension flaw lets malicious extensions trigger AI actions — BleepingComputer
- Unpatched Claude for Chrome flaw lets extensions read Gmail, Calendar — SecurityWeek
- Flaw in Claude's Chrome extension allowed 'any' other plugin to hijack victims' AI — CyberScoop
- Claude for Chrome flaw could let rogue extensions access your Gmail — Malwarebytes
Event: isTrustedproperty — MDN Web DocsEventTarget: dispatchEvent()method — MDN Web Docs- Content scripts — Chrome for Developers
- Claude in Chrome permissions guide — Anthropic Help Center
@extenshi/guard— scan the extensions already installed in your browser
This article is based on publicly available security research and news reporting. Extenshi does not independently verify all claims made by third-party researchers. References to specific companies or products reflect the findings of cited sources and do not constitute accusations of intentional wrongdoing. If any entity referenced in this article believes information is inaccurate, contact [email protected] and we will review and update.
Related Articles

ClaudeBleed explained: how any Chrome extension can hijack Claude without a single permission
Any zero-permission extension can hijack Claude's AI session and exfiltrate your Gmail or GitHub data. Here's how ClaudeBleed works and how to protect yourself.
Man-in-the-prompt attacks: how to stop browser extensions from hijacking your AI conversations
Any browser extension can silently inject commands into ChatGPT, Gemini, and Claude. Here's how man-in-the-prompt attacks work and how to keep yourself safe.
Browser AI panel hijacking: how to check which of your Chrome extensions can abuse elevated privileges
Chrome extension privilege escalation is real: CVE-2026-0628 let extensions with basic permissions reach your camera, mic, and files via the Gemini panel.

Malware that arrives in the update, not the install: how to check your extensions
A Chrome extension pulled in January is back — and shipped its payload two weeks after a clean release. How update-time malware works, and how to check yours.