Skip to content

fix(mcp): use writable cache dir for MCP user data, not browsers path#40961

Open
adityasingh2400 wants to merge 1 commit into
microsoft:mainfrom
adityasingh2400:fix-40892
Open

fix(mcp): use writable cache dir for MCP user data, not browsers path#40961
adityasingh2400 wants to merge 1 commit into
microsoft:mainfrom
adityasingh2400:fix-40892

Conversation

@adityasingh2400
Copy link
Copy Markdown

Summary

  • createUserDataDir() resolved the MCP profile path under registryDirectory, which equals PLAYWRIGHT_BROWSERS_PATH when that env var is set. On NixOS, immutable Docker mounts, and other shared/read-only browser-binary caches, the profile mkdir then fails with EACCES.
  • Switched the default to defaultCacheDirectory (XDG_CACHE_HOME / Library/Caches / LOCALAPPDATA) under an ms-playwright-mcp subdirectory. PWMCP_PROFILES_DIR_FOR_TEST is unchanged so tests keep using their own temp dirs.

Fixes #40892

createUserDataDir() built the MCP profile path from registryDirectory,
which is rooted at PLAYWRIGHT_BROWSERS_PATH when that env var is set.
That path is often read-only (NixOS Nix store, immutable Docker mounts,
shared browser-binary caches), so MCP fails to launch with
EACCES while trying to mkdir the profile directory.

Use defaultCacheDirectory (XDG_CACHE_HOME on Linux, Library/Caches on
macOS, LOCALAPPDATA on Windows) and namespace the profiles under
ms-playwright-mcp. The PWMCP_PROFILES_DIR_FOR_TEST override is unchanged.

Fixes: microsoft#40892
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.

[Bug]: MCP createUserDataDir writes profile data to PLAYWRIGHT_BROWSERS_PATH, fails when path is read-only

1 participant