386259bb ·
Extension ID fcoeoabgfenejglbffodgkkbkcdhcgfn
OBSERVE_ONLY mode by default) was overlaid on the
source prior to study. The gates are not present in the production extension.
The capability surface described below reflects what the production extension
can do; the analysis build is what was studied.
Extension ID fcoeoabgfenejglbffodgkkbkcdhcgfn, Manifest v3, version 1.0.40.
scripting, allows arbitrary JS execution in
any page context.
com.anthropic.claude_browser_extension (Desktop)
and com.anthropic.claude_code_browser_extension
(Claude Code). Each runs at user privilege with no isolation.
<all_urls>, this applies to
all traffic from all tabs.
Three content scripts are injected by the extension. Two run on every URL in every frame.
| Script | Matches | Timing | All Frames | What it does |
|---|---|---|---|---|
content-script.js |
https://claude.ai/* |
document_end | no | Claude.ai integration — session bridge |
accessibility-tree.js |
<all_urls> |
document_start | yes | Installs window.__generateAccessibilityTree() into every page and frame before the page's own JavaScript runs. Builds a structural map of all interactive elements: links, buttons, inputs, forms, text content, ARIA roles, and element references via window.__claudeElementMap |
agent-visual-indicator.js |
<all_urls> |
document_idle | no | Visual overlay indicating agent activity |
accessibility-tree.js runs at document_start with
all_frames: true. This is the earliest possible injection point —
before the DOM is parsed, before the page's scripts load, before any
frame-level security checks the page might perform. The injected function
remains available for the extension to call at any point during the page
lifetime, returning a full structural map of every interactive element along
with their current values. This applies to every page in every tab, including
banking portals, password managers, authenticated sessions, and any other
sensitive context.
The debugger permission is used to attach CDP sessions to tabs.
Once attached, the extension can issue any CDP command the browser exposes.
Three capability domains are explicitly wired:
maxPostDataSize: 65536 — captures the first
64 KB of every POST request body. This includes form
submissions, API calls, login credentials, and any other
data the page sends to any server.
console.log,
console.error, and exception events from the
page's JavaScript are accessible to the extension.
CDP attachment is gated in the studied build by
shouldAllowDebuggerAttach(tabId). In the production extension
there is no equivalent gate — attachment proceeds on any tab the extension
chooses to target.
The service worker maintains a persistent connection to local binaries via
chrome.runtime.connectNative(). Two hosts are registered:
com.anthropic.claude_browser_extension — Claude Desktop native hostcom.anthropic.claude_code_browser_extension — Claude Code native hostchrome-native-host, ~2.1 MB, outside browser sandbox)com.anthropic.claude_browser_extension
is written to all Chromium-based browser directories at install time,
including browsers not yet installed on the device.
The extension includes a complete autonomous task execution engine driven
by Chrome's alarms API. Tasks are configured by the user, then
executed on schedule without user presence:
EXECUTE_TASK messageclaude_chrome.scheduled_task.executed with task_id, task_name, success, execution_typesidepanel-workflow-recording.js (67 KB) implements a workflow
capture system. The user performs a sequence of browser actions; the extension
records the action sequence and stores it as a replayable shortcut. Replaying
the shortcut re-executes the sequence autonomously.
This is documented in the official help center as: "Teach Claude a workflow by recording the steps yourself, and Claude learns to repeat them." The deobfuscated source confirms the recording runs through the same CDP and accessibility-tree surfaces documented above.
The extension bundles three separate analytics/telemetry vendors. All are
disabled in the studied build's analysis control plane; the production
extension activates them per feature flags served from
api.anthropic.com/api/bootstrap/features/claude_in_chrome.
| Vendor | Purpose | Bundle size |
|---|---|---|
| Sentry | Error tracking and crash reporting | 417 KB |
| Datadog | Performance monitoring, session replay | 250 KB |
| Segment | Behavioral analytics — user action tracking | (in model-selector bundle) |
Segment emits events from two namespaces. The full event inventory extracted from the deobfuscated source:
claude_chrome.* — extension-specific behavioral events:
claudeai.* — claude.ai platform events (also present in the extension):
The cowork documentation covers the Windows-side cowork-svc.exe
architecture and the sdk-daemon TLS interception inside the Linux
VM. The Chrome extension represents a parallel interception surface operating at
a different layer on macOS and Windows:
| Surface | Platform | Layer | Mechanism | Reaches |
|---|---|---|---|---|
| sdk-daemon MITM | Windows/Linux (VM) | TLS | CA cert installed as trusted root | All *.anthropic.com traffic, decrypted |
| CDP Network.enable | Any (Chrome) | Browser network | DevTools Protocol attachment | POST bodies (64 KB) from any attached tab |
| Accessibility tree | Any (Chrome) | DOM (pre-script) | document_start content script | All interactive elements, values, structure on every page |
| Native host bridge | Any (Chromium) | OS process | chrome.runtime.connectNative | Claude Desktop + Claude Code; user-privilege binary outside sandbox |
The mechanisms are different at each layer; the endpoint reached — Anthropic API traffic and user browser state — is the same across them.
utility_extension-core, utility_sidepanel-kit,
utility_extension-telemetry, utility_extension-auth,
utility_context-menu-kit, utility_extension-storage.
This analysis was conducted while investigating the <long_conversation_reminder>
XML injection mechanism — Anthropic-controlled behavioral guideline injections appearing
in every conversation. The discovery session (46c37020) also produced
claude_os_statsig_monitor.user.js, a UserScript intercepting Claude.ai's
internal Statsig feature flag system in real time. A capability deployment report from
this session (2025-09-28T06:23:24Z, Deployment ID: exp_deploy_1759040604619) catalogued
38 capabilities, the last registered being
behavioral_optimization: "Real-time adaptation to external influences."
webRequest interception capability on
api.anthropic.com and the Computer Use / MCP bridge architecture.
webRequest interception on
api.anthropic.com, the debugger (CDP) permission, and
the silent multi-browser deployment alongside Claude Desktop. Coverage of those
specific undisclosed capabilities appeared publicly approximately April 2026,
approximately three months after the January 2026 characterization.386259bb) was recovered from the extension's bundled assets.
The analysis control plane overlaid on the source — gating all active
capabilities to OBSERVE_ONLY by default — is not present in the
production extension and was added by the analyst for safe study.
chrome-native-host
Rust binary was discovered already present and running on the machine —
which is the basis for the Genie clean-room reconstruction documented at
/browser-extension. The public announcement
framed the preview as deliberate selection of specific users. Silent pre-installation
on a machine whose owner had no awareness of enrollment is not consistent with
that framing.