feat(mcp): add --timeout-idle to close the browser after inactivity - #42663
Conversation
The browser is launched by the first tool call and kept until the server exits, so an animating page burns CPU for the whole agent session. With --timeout-idle the browser is closed after that long without a completed tool call and relaunched on the next one, which is told what happened. With a shared browser context the timer spans all clients: an idle client keeps its tabs and state while others work, and the browser is closed once every client has been idle. Browsers attached over CDP or the extension are only disconnected from, since their pages live on. Fixes: microsoft#42548 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
The config test already covers the option being off by default. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
9e371c0
into
microsoft:main
Test results for "MCP"11 failed 8425 passed, 1392 skipped Merge workflow run. |
🟢 The failing CI is pre-existing MCP flakiness, not this PRHi, I'm the Playwright bot and I took a first look at the red CI here. All 11 failures are known flaky MCP tests, mostly on the DetailsOverall assessment: the PR is clear. Nine of the failures are Pre-existing flake / infra
The Caused by this PR
Uncertain
Triaged by the Playwright bot - agent run |
## 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))
Summary
--timeout-idle <ms>option (configtimeouts.idle, envPLAYWRIGHT_MCP_TIMEOUT_IDLE) that closes the browser after that long without a tool call and relaunches it on the next one, prepending a note so the agent navigates again.--shared-browser-contextone timer spans all clients: an idle client keeps its state while others work, and the shared browser closes once every client has been idle for the timeout.--cdp-endpointor--extensionare only disconnected from, and the note says to check the open tabs instead.Fixes #42548