URL: https://mkdocs.justinsforge.com/memory/general/reference_browser_mcp_playwright_default/
Browser tooling: Playwright default, claude-in-chrome on-demand¶
Set 2026-07-05. Fixes the recurring "browser extension isn't connected" failures: agents kept reaching for the always-injected claude-in-chrome toolset even though the Chrome extension bridge was disconnected.
What changed (in ~/.claude.json, NOT git-tracked)¶
claudeInChromeDefaultEnabled-> false. The ~30mcp__claude-in-chrome__*tools + "use these for web tasks" instruction block no longer auto-inject into sessions.- Registered
playwrightMCP at user scope (all projects):{"type":"stdio","command":"npx","args":["-y","@playwright/mcp@latest"]}. - Backup of prior config:
~/.claude.json.bak.chrome-playwright.
Why Playwright over the alternatives¶
- claude-in-chrome: needs the real logged-in Chrome + a live extension bridge. Great for acting inside authed sites, brittle as a default (bridge drops => every web task fails).
- Playwright MCP (
@playwright/mcp): headless, self-contained, no extension. Right default for scrape/screenshot/test/automation. - Vercel: rejected. Its MCP is deployment management, its "agent browser" is a hosted product not a local MCP, and Forge sites deploy to Cloudflare Pages, not Vercel.
Which browser to summon when¶
- Default = Playwright (automatic, always available). No extension, no logged-in-Chrome dependency.
- Need the real, authed Chrome (a site headless can't reach) -> flip
claudeInChromeDefaultEnabledback to true (via/configor ask Claude) for that session. /screenshotand/preview-siteskills already drove Playwright as a local CLI and are unaffected by this change.
Takes effect on fresh claude boot only¶
~/.claude.json is read once at process startup. Already-running processes keep old config in memory.
- Warm pool (spawn_pool): stale spares booted before the change still carry chrome-on / playwright-off. On 2026-07-05 the pool was drained (
forge_spawn_pool.sh drain) + refilled so spares boot on new config; it also self-heals viaforge-spawn-pool.timer(every 15min, recycles spares >90min). - Verified live: a stale pre-change spare reported
CHROME=yes PLAYWRIGHT=no; a fresh post-change worker reportedCHROME=no PLAYWRIGHT=yes. - Chromium for the MCP:
playwright-core 1.62.0-alphapinschromium-headless-shell v1229, installed under~/.cache/ms-playwright/; headless launch smoke-tested OK.