← All posts

Claude Code Browser Extension Security: Real or Test?

Default to an isolated browser. For most frontend and platform work, Claude Code browser extension security is strongest when routine testing runs in a separate Chrome profile or Playwright MCP, not in a developer's everyday signed-in Chrome profile. Use the real signed-in browser only when the task actually depends on live account state, internal SSO, or production-like SaaS behavior that cannot be reproduced safely elsewhere.

The reason is simple: Anthropic's Chrome integration is useful because it shares the user's browser login state. That also makes it a boundary crossing. Claude can work in tabs where the user is already authenticated, inspect visible UI, use browser context, and act inside apps that were not designed as test fixtures.

For a security-minded frontend or platform lead, the question is not whether the extension is "safe" in the abstract. The operational question is narrower: which browser state should an agent receive for this class of work?

Claude Code Browser Extension Security Starts With Browser State

Anthropic's Claude Code Chrome documentation says the integration opens new tabs in a visible Chrome window and shares the browser's login state. That means Claude Code can work against Gmail, Google Docs, Notion, Sheets, internal apps, localhost, and authenticated flows without a separate connector.

That convenience changes the risk model. A signed-in work profile can include SSO cookies, SaaS sessions, internal dashboards, password manager prompts, unrelated open tabs, browser extensions, and account-specific UI. Claude does not need raw cookie access to create risk. Screenshots, visible page text, DOM state, console output, network data, file uploads, and GIF recordings can all carry sensitive data.

Anthropic's safety guidance is direct on this point: Claude in Chrome takes screenshots of the tabs it works in, and visible content can become part of the conversation. Anthropic also says Claude cannot filter sensitive content out of what it sees. The practical implication is that "visible to the browser agent" should be treated as "available to the agent workflow."

Related reading: AI agent observability for coding agents.

The Decision Matrix

Option Best fit Main security issue Recommended default
Real signed-in Chrome profile Debugging real SSO, internal apps, authenticated SaaS workflows Broad access to work identity, visible data, and unrelated account context Exception, with controls
Separate Chrome profile Authenticated testing with reduced blast radius Still signed in, but to a narrower account set Preferred for repeated authenticated workflows
Playwright MCP isolated mode Localhost testing, visual checks, console and network inspection MCP server and tool scope still need governance Preferred for routine local testing
Playwright MCP with saved storage state Repeatable test auth without everyday cookies Storage state can become a credential artifact Useful when managed deliberately
Browser bridge or similar DevTools path Richer browser inspection and debugging Can recreate the real-profile risk if connected to a signed-in browser Use only with bounded profiles

The highest-risk option is not the one with the most tooling. It is the one with the most valuable browser state. A Playwright MCP setup with a persistent profile and broad saved auth can become risky. A Chrome extension pointed at a fresh profile with only localhost and a staging account can be relatively contained.

Use Playwright MCP or an Isolated Profile for Routine Testing

Most frontend checks do not need a developer's real browser identity. Layout verification, console errors, DOM inspection, network request review, screenshots, dialog handling, tab control, and form interactions can usually run in Playwright MCP or a separate Chrome profile.

Playwright MCP is particularly useful because its documented modes give teams a concrete control point. Persistent mode is the default and stores per-workspace profiles in cache. Isolated mode starts fresh with --isolated. Saved auth can be loaded explicitly with --storage-state.

That gives a platform team a cleaner pattern:

  • Use --isolated for ordinary localhost checks.
  • Use a dedicated staging account for authenticated flows.
  • Store test auth state separately from personal browser cookies.
  • Review which Playwright MCP tools are enabled before allowing broad agent use.

There is one important caveat. Playwright MCP is not automatically low risk. Its documentation flags browser_run_code_unsafe as RCE-equivalent because it can run arbitrary JavaScript in the Playwright server process. That tool belongs only in tightly trusted setups, not in a general developer default.

Related reading: MCP tool allowlists and drift detection.

When a Real Signed-In Browser Is Justified

A real signed-in Chrome profile is justified when realism changes the result. Examples include debugging a production-only SSO redirect, reproducing an issue in an internal app tied to real entitlements, testing SaaS UI behavior that depends on the user's live account, or investigating a bug that appears only under the developer's actual enterprise Chrome policies.

Even then, the browser should be treated as a privileged environment. The agent is not only seeing the target app. It may also be exposed to email bodies, document comments, issue descriptions, hidden DOM content, ads, internal admin screens, browser notifications, and pages that contain instructions written by untrusted parties.

This is where prompt injection becomes a browser security issue. Anthropic's original Claude for Chrome pilot reported 123 adversarial prompt-injection test cases across 29 attack scenarios, with 23.6% unmitigated attack success before launch mitigations. Later Anthropic research says even a 1% browser-agent attack success rate remains meaningful risk, and that no browser agent is immune to prompt injection.

The conclusion is not "never use a real profile." It is "make the real profile a controlled exception." For signed-in work, keep Manual or carefully bounded Auto approval modes in place, avoid Skip mode, restrict allowed sites, and require human review before messages, downloads, authorizations, file handling, or actions that affect business state.

Permission Modes Are Not a Policy by Themselves

Claude in Chrome has Manual, Auto, and Skip permission modes. Anthropic says Skip has no action approval and no automatic safety checking. That is a poor default for any profile with work identity or customer data.

Manual approval gives a human gate, but it also creates prompt fatigue. Auto mode adds safety checking but still leaves residual risk. Site-level "always allow" permissions reduce friction, but Anthropic says Claude can still ask before downloading a file, entering potentially sensitive information, or granting authorizations.

For platform policy, map permission mode to profile type:

Profile type Suggested mode Reason
Everyday signed-in work profile Manual only, or disabled Highest concentration of valuable sessions and unrelated data
Dedicated testing Chrome profile Manual or bounded Auto Lower account scope, but still authenticated
Local isolated Playwright profile Tool policy plus test account controls Risk shifts from Chrome identity to MCP configuration
Production SaaS or admin console Manual, with site and action restrictions Business-impacting actions need explicit review

Enterprise Controls Should Start Restrictive

Anthropic documents Team and Enterprise admin controls for Claude in Chrome, including enablement controls, site allowlists and blocklists, restrictive pilots, Chrome management or MDM deployment, and organization enforcement through forceLoginOrgUUID. It also notes that Claude in Chrome traffic uses existing Claude endpoints plus wss://bridge.claudeusercontent.com, and that Zero Data Retention is not supported for Claude in Chrome, the same as Cowork.

Those details matter because browser access is not only a developer preference. It is an endpoint and identity policy decision. The native messaging host used by the extension should be inventoried. Extension versions, manifest permissions, enterprise policy state, Chrome site-access settings, and browser profile strategy should all be visible to the team responsible for agent governance.

A practical rollout can be narrow:

  • Start with localhost, staging domains, preview URLs, and known auth providers.
  • Block regulated-data pages and sensitive admin consoles unless specifically approved.
  • Use separate Chrome profiles for agent work, with only the accounts needed for that workflow.
  • Keep the real everyday profile outside the default path.
  • Record which teams can use Chrome automation and which sites are allowed.

Anthropic also recommends against using Claude in Chrome on regulated-data pages generally and says it is not available for HIPAA organizations. Treat that as a product boundary, not a documentation footnote.

Related reading: local guardrails for Claude Code and Codex.

Third-Party Research Changes the Weighting, Not the Facts

The brief includes external research from Manifold Security and Zenity Labs alleging concrete Claude in Chrome weaknesses. Manifold reported synthetic-click and workflow concerns around Claude for Chrome v1.0.80 as of July 7, 2026. Zenity described an indirect prompt-injection chain involving JavaScript tooling and account-takeover risk.

These are credible security-research claims, not official confirmations from Anthropic. They should not be treated as a substitute for vendor status, fleet inspection, or current version testing. But they do reinforce the same architectural point: once an agent can act inside a signed-in browser, prompt injection, synthetic intent, tool scope, and account context become part of the browser security model.

For a lead setting policy, the right response is not panic. It is containment. Reduce the value of the browser state exposed to the agent. Narrow sites. Narrow tools. Keep approvals meaningful. Make the exception path explicit.

A Concrete Operating Model

Use this as the baseline policy:

  1. Local UI work: use Playwright MCP isolated mode or a fresh browser profile.
  2. Authenticated staging: use a dedicated testing profile with test accounts and explicit saved auth where needed.
  3. Internal apps: allow only approved domains, prefer a separate work-test profile, and keep Manual approval for state-changing actions.
  4. Real personal or work Chrome profile: require a reason tied to the task, not convenience alone.
  5. Regulated or highly sensitive pages: keep Claude in Chrome out of the workflow unless your legal, security, and vendor constraints explicitly support it.

The anti-pattern is letting each developer decide in the moment. Convenience will usually win, especially when login flows are slow. A better system gives developers a fast safe path first: one command for isolated Playwright MCP, one managed Chrome profile for staging, and one documented exception path for the real signed-in browser.

Bottom Line

Claude Code's Chrome integration is valuable because it can see and act in the same browser context a developer uses. That is also the risk. For routine frontend and platform work, isolate the browser state. For real signed-in Chrome, require a specific reason, site controls, approval discipline, and an understanding that prompt injection is a residual risk, not a solved problem.

The decision rule is concrete: if the task can be completed with localhost, staging auth, or explicit storage state, do not give the agent your everyday browser. Save the real profile for the smaller set of tasks where real account state is the thing being tested.

Get started

Deploy your fleet.

Put a fleet of sandboxed agents to work on your own infrastructure, provisioned in seconds and watched live from one console.

Get started →

Admin-provisioned · Self-host in one command · Your data never leaves your VM