Playwright MCP 0.0.84: Redacted URL Parameters, Isolated Contexts and a README That Says It Is Not a Security Boundary
Playwright MCP v0.0.84 added isolated browser contexts, URL parameter redaction, bounded find results and request history across navigations. I read the release notes and the README at the tag, including what the project says these controls do not protect.
Microsoft's Playwright MCP v0.0.84 was published on GitHub on October 31, 2026. It adds the ability to open tabs in named isolated contexts inside one browser, an option that replaces chosen URL parameter values with a "redacted" placeholder (written in angle brackets in the README) in tool responses, and a cap on how many matches browser_find returns. The README at the same tag also says, in bold, that Playwright MCP is not a security boundary. If you give a browser to an agent, read both.
I read the v0.0.84 release notes and the README at that tag through the GitHub API. I did not install the package or run a browser. The behavior below is what those documents say.
What the release adds
The release highlights list six items:
- Separate sessions in one browser.
browser_tabswithaction: "new"acceptsisolatedContextset to a name of your choosing. Tabs with the same name share a context, different names stay isolated, and omitting it or using"default"uses the default context. Cookie and storage tools act on the current tab's context. - Redaction of runtime values in URLs.
--redact-url-params=access_token,code(configredactUrlParams, envPLAYWRIGHT_MCP_REDACT_URL_PARAMS) replaces those query and fragment values with a "redacted" placeholder (written in angle brackets in the README) in tool responses. - Bounded find results.
browser_findaccepts a positivemaxResults, returns the first matches, and reports the total count. - Request history across navigations.
browser_network_requestsacceptsall: trueto include retained history, up to 200 requests from earlier navigations. - Locators in your language. Element tools accept JavaScript, Python, Java and C# locators in
target, alongside refs and CSS selectors. - Cookie deletion by domain and path.
browser_cookie_deleteaccepts optionaldomainandpathfilters, and is opt-in through a capability flag.
A new --ignore-roots flag skips the workspace roots request for clients that advertise roots but cannot answer, and uses the server's working directory instead.
The fixes section includes the HTTP server accepting loopback hosts by default for all bind addresses, with other hosts still needing --allowed-hosts, credentials in --proxy-server being passed as proxy authentication, and an idle timer per isolated client under HTTP with --isolated. Several accessibility snapshot fixes also change what browser_snapshot includes, such as dropping inert content and content outside the topmost modal dialog.
Why the redaction option exists
The release says session and grant values minted at runtime cannot be listed in a secrets file ahead of time. The README's configuration comments describe two mechanisms. secrets replaces matching plain text in tool responses so the model does not accidentally see sensitive data. redactUrlParams does the same for named URL parameters. Both comments say the same thing: it is "a convenience and not a security feature", and you should examine information going to and from the tool on the client.
My reading: this controls what the model sees in tool output, a useful reduction in accidental exposure, and nothing else. The README does not say it stops a page, a script or a deliberate request from reaching those values.
What the README says it does not protect
- Security section: "Playwright MCP is not a security boundary." It points to MCP security best practices for deployment guidance.
--allowed-originsand--blocked-originsare described as not a security boundary and as not affecting redirects.allowUnrestrictedFileAccessis a guardrail against the model wandering outside its workspace, "not a secure boundary", and the README says to rely on client-level permissions for true security.browser_run_code_unsafeis described as executing arbitrary JavaScript in the Playwright server process and being "RCE-equivalent".- The persistent profile can only be used by one browser instance at a time. For several clients in parallel, the README says to use
--isolatedor a distinct--user-data-dir.--isolatedkeeps the profile in memory and does not save it to disk.
A docs mismatch I found
The release notes say browser_cookie_delete and browser_route are opt-in through --caps=storage and --caps=network, and the README's tool sections list Storage and Network under those flags. The README's --caps option row, though, lists only vision, pdf, devtools as possible values. Both are in the same file at the tag. I did not run the server to see which values it accepts, so I cannot say which is current. If you rely on those capabilities, test the flag before depending on it.
What I would check
These are my untested suggestions, not documented behavior.
- If one agent drives several accounts, use
isolatedContextnames per account and check from a cookie list that contexts really do not share state. - Decide which URL parameters in your flows carry tokens, and list them in
--redact-url-params. Treat it only as output hygiene. - Keep
browser_run_code_unsafeout of agent tool lists you do not control. The README's own description is the reason. - Put real restrictions outside the MCP server: a separate OS user, container or network policy, per the README's advice to rely on client-level permissions.
- Pin the version, for example with
npx @playwright/mcp@0.0.84, since configs on@latestpick up changes at the next client restart.
What I would not conclude
- I would not conclude redaction keeps a secret from the agent. It changes tool output text.
- I would not conclude isolated contexts defend against a hostile page. The docs describe them for separate sessions and accounts.
- I would not conclude anything about the 0.0.83 to 0.0.84 diff beyond the release notes.
- I would not conclude how other browser agents handle any of this.
Frequently asked questions
What is new in Playwright MCP 0.0.84?
Named isolated browser contexts, URL parameter redaction, a maxResults cap for browser_find, network request history across navigations, language-specific locators, cookie deletion by domain and path, and --ignore-roots.
How do I redact URL parameters?
Pass --redact-url-params=access_token,code, or set redactUrlParams in config or PLAYWRIGHT_MCP_REDACT_URL_PARAMS. Values for those query and fragment parameters are replaced with that redacted placeholder in tool responses.
Is redaction a security feature?
No. The README calls both secrets and redactUrlParams a convenience and not a security feature.
Is Playwright MCP a security boundary?
The README says it is not.
How do I run several accounts in one browser?
Per the release notes, open tabs with browser_tabs and isolatedContext set to a name. Same name shares a context, different names are isolated.
Do the origin allow and block lists restrict the browser?
The README says they do not serve as a security boundary and do not affect redirects.
Did you run it?
No. I read the release notes and the README at the tag. I did not install or run the server.
Sources
All read on November 3, 2026.
Not read: the Playwright pull requests the release links, the MCP security best practices page, and the package source.
Related reading
- MCP TypeScript SDK 2.4.0: Serving Agent Skills Over MCP (SEP-2640) and What the Spec Says to Distrust
The MCP TypeScript SDK 2.4.0 adds a Skills extension that lets a server publish SKILL.md folders to clients. I read the release notes, the SDK guides and the pinned extension spec to see how listing, digests and the security rules work.
- What Is MCP? The Model Context Protocol, Explained by Someone Who Ships Servers
MCP is the USB-C of LLM tooling: one protocol that lets any model talk to any tool or data source. Here's what it is, why it exists, and how I think about building a server.
- Pydantic AI 2.64 and 2.65: ModelFallback Falls Back on Refusals, and ArtifactScanner Checks Memory and Skills
Pydantic AI 2.64.0 added a ModelFallback capability and an ArtifactScanner for agent memory and skills. 2.65.0 made refusals trigger fallback. I read the release notes and docs at the 2.65.0 tag to see what each does and where the docs say it stops.
The build log
Follow the work.
New essays and prototypes, in your feed reader. Email subscriptions are paused while I connect a working delivery service. No email is collected here.
Follow via RSS