Skip to content

feat(mcp): add --profile-dir-name to select the Chrome profile in extension mode - #42527

Merged
Yury Semikhatsky (yury-s) merged 2 commits into
microsoft:mainfrom
yury-s:extension-profile-path
Sep 2, 2026
Merged

Yury Semikhatsky (yury-s) merged 2 commits into
microsoft:mainfrom
yury-s:extension-profile-path

Conversation

@yury-s

@yury-s Yury Semikhatsky (yury-s) commented Sep 2, 2026

Copy link
Copy Markdown
Member

Summary

  • When the extension is installed in several Chrome profiles, the connect page opens in the last used one, which is not necessarily the profile the token belongs to. New --profile-dir-name <name> option (or PLAYWRIGHT_MCP_PROFILE_DIR_NAME) names the profile directory in the user data dir, the last component of "Profile Path" at chrome://version, and launches that profile explicitly via --profile-directory.
  • The selected profile is verified to have the extension installed, the error names the profile directory.
  • Documented in the extension README next to the per-profile token instructions.

References microsoft/playwright-mcp#1732

… mode

When the extension is installed in several profiles, the connect page
opens in the last used one, which is not necessarily the profile the
token belongs to. Accept a profile path ("Profile Path" at
chrome://version) in --user-data-dir and launch that profile explicitly.

References: microsoft/playwright-mcp#1732
A dedicated option (or PLAYWRIGHT_MCP_PROFILE_DIR_NAME) names the profile
directory in the user data dir, instead of guessing from --user-data-dir.
@yury-s Yury Semikhatsky (yury-s) changed the title feat(mcp): select the Chrome profile via --user-data-dir in extension mode feat(mcp): add --profile-dir-name to select the Chrome profile in extension mode Sep 2, 2026
@github-actions

This comment has been minimized.

@yury-s
Yury Semikhatsky (yury-s) merged commit e9163e2 into microsoft:main Sep 2, 2026
16 of 17 checks passed
@yury-s
Yury Semikhatsky (yury-s) deleted the extension-profile-path branch September 2, 2026 22:36
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Test results for "MCP"

1 failed
❌ [firefox] › mcp/cli-devtools.spec.ts:84 › request shows full request and response details @mcp-windows-latest-firefox

8274 passed, 1371 skipped


Merge workflow run.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Hi, I'm the Playwright bot and I took a first look at the CI failures here.

🟢 The one failure is a pre-existing flake — this PR is clear

The only red is mcp/cli-devtools.spec.ts:84 › request shows full request and response details on mcp-windows-latest-firefox. It's a long-standing flake on that exact bot, not something this PR touched.

Details

This PR adds --profile-dir-name for MCP extension mode — it only touches tools/mcp/ extension wiring (browserFactory.ts, config.ts, extensionContextFactory.ts, program.ts, utils/extension.ts) and tests/extension/. The failing test exercises the requests/request CLI devtools command, a code path the diff never reaches.

Pre-existing flake / infra

Triaged by the Playwright bot - agent run

Yury Semikhatsky (yury-s) added a commit to microsoft/playwright-mcp that referenced this pull request Sep 14, 2026
## What's New

### 🎉 New Tools

- **`browser_webmcp_list` / `browser_webmcp_call`** — List and call the
tools a page registers through the
[WebMCP](https://webmachinelearning.github.io/webmcp/) API, letting the
page do the work instead of driving its UI. When a page has WebMCP
tools, the page status reports how many are available
([#42613](microsoft/playwright#42613)). WebMCP
is experimental, see [WebMCP in
Chrome](https://developer.chrome.com/docs/ai/webmcp) for how to enable
it.

### Other Changes

- New `--profile-dir-name <name>` option (env
`PLAYWRIGHT_MCP_PROFILE_DIR_NAME`) selects the Chrome profile to connect
to in extension mode when the extension is installed in several
profiles, for example `"Profile 1"`
([#42527](microsoft/playwright#42527))
- Headless browsers launched by the server are now closed after one hour
without tool calls; the next tool call launches a new one. Use
`--idle-timeout <ms>` (config `timeouts.idle`, env
`PLAYWRIGHT_MCP_IDLE_TIMEOUT`) to change the timeout, `0` disables it.
Headed and attached browsers are not closed unless a timeout is set
explicitly
([#42663](microsoft/playwright#42663),
[#42676](microsoft/playwright#42676))
- `--image-responses` accepts `only`: a response that carries an image
consists of the image parts alone, without the text part
([#42672](microsoft/playwright#42672))

## Bug Fixes

- `browser_close` returns an error when the browser context is shared
(`--shared-browser-context`) instead of breaking the calling client's
session. This supersedes the v0.0.80 change that dropped the backend
after `browser_close`
([#42495](microsoft/playwright#42495))
- With `--shared-browser-context`, `browser_start_recording` /
`browser_stop_recording` (opt-in via `--caps=devtools`) keep each
client's recording separate instead of delivering one client's recorded
actions to another
([#42622](microsoft/playwright#42622),
[#42627](microsoft/playwright#42627))
- The file access check follows symlinks, so a symlink inside the
workspace can no longer be used to read or write files outside the
allowed roots
([#42628](microsoft/playwright#42628))
- Explicitly named output files in a nested directory (e.g.
`sub/shot.png`) no longer fail with `ENOENT`; `browser_file_upload` and
`browser_drop` resolve relative paths against the workspace root
([#42540](microsoft/playwright#42540))
- In extension mode with `PLAYWRIGHT_MCP_EXTENSION_TOKEN` set, a
connection that never completes (e.g. the token belongs to another
Chrome profile) now fails after 30 seconds with a hint instead of
hanging the tool call forever
([#42525](microsoft/playwright#42525))
- Disable the Chromium sandbox by default on Linux for the bundled
Chromium build, which lacks the setuid sandbox helper
([#42490](microsoft/playwright#42490))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants