Bug Report: Windsurf IDE Deletes Playwright Cache on WSL Connection
Summary
Windsurf IDE's Language Server (language_server_linux_x64) automatically deletes the Playwright cache directory (~/.cache/ms-playwright/) when connecting to WSL2, even when PLAYWRIGHT_SKIP_BROWSER_GC=1 is set. This causes Playwright browsers to be reinstalled on every IDE restart, wasting time and bandwidth.
Environment
- OS: WSL2 (Ubuntu on Windows)
- Windsurf Version: 2.1.32
- Codeium Version: Latest
- Playwright Version: 1.40.0+
- Package Manager: uv
Installed Extensions (WSL)
anthropic.claude-code
continue.continue
eamodio.gitlens
editorconfig.editorconfig
evidence.sqltools-duckdb-driver
golang.go
ionutvmi.path-autocomplete
mads-hartmann.bash-ide-vscode
mhutchie.git-graph
mohsen1.prettify-json
moshfeu.compare-folders
ms-azuretools.vscode-containers
ms-azuretools.vscode-docker
ms-ceintl.vscode-language-pack-ja
ms-vscode.live-server
mtxr.sqltools
orta.vscode-jest
paragdiwan.gitpatch
randomfractalsinc.duckdb-sql-tools
redhat.java
shd101wyy.markdown-preview-enhanced
Note: The issue occurs with Windsurf's built-in MCP server functionality.
Problem Description
When Windsurf IDE connects to WSL2, the Language Server process (PID ) executes a cache cleanup operation that removes the entire Playwright cache directory at ~/.cache/ms-playwright/. This happens regardless of Playwright's PLAYWRIGHT_SKIP_BROWSER_GC=1 environment variable setting.
Evidence
Log from Language Server:
2026-05-05 13:55:37.879 [info] I0505 13:55:37.879531 <PID> server.go:288] Successfully removed Playwright cache directory: /home/<USER>/.cache/ms-playwright
Process Information:
- PID: (redacted)
- Process:
/home/<USER>/.windsurf-server/bin/<HASH>/extensions/windsurf/bin/language_server_linux_x64
- Parent PID: <PARENT_PID> (bootstrap-fork / extensionHost)
File System Events (inotify):
- Deletion started: 2026-05-05 13:46:27
- Deletion completed: 2026-05-05 13:46:59
- Total files deleted: 643
Reproduction Steps
-
Install Playwright browsers (any method that creates ~/.cache/ms-playwright/):
playwright install chromium
# or
uv run install-browsers
-
Verify cache exists:
ls -la ~/.cache/ms-playwright/
-
Close Windsurf IDE
-
Start Windsurf IDE and connect to WSL2
-
Check cache directory:
ls -la ~/.cache/ms-playwright/
# Output: ls: cannot access '/home/<USER>/.cache/ms-playwright/': No such file or directory
Expected Behavior
The Playwright cache directory should persist across Windsurf IDE restarts, especially when PLAYWRIGHT_SKIP_BROWSER_GC=1 is set. The IDE should not automatically delete user-installed browser binaries.
Actual Behavior
The Playwright cache directory is completely deleted when Windsurf IDE connects to WSL2, requiring reinstallation of browsers on every restart.
Impact
- Time waste: Playwright browser installation takes 30-60 seconds each time
- Bandwidth waste: Browser binaries are ~200-300MB each
- Workflow disruption: MCP servers using Playwright fail until browsers are reinstalled
- User frustration: Repeated manual intervention required
Workarounds
Temporary Workaround 1: Reinstall on Every Start
Add to project startup script:
playwright install chromium
# or
uv run install-browsers
Temporary Workaround 2: Use Project-Local Cache
Set PLAYWRIGHT_BROWSERS_PATH to project directory:
export PLAYWRIGHT_BROWSERS_PATH=./.playwright-cache
Temporary Workaround 3: Pre-Install Before IDE Start
Manually install browsers before starting Windsurf:
uv run install-browsers
# Then start Windsurf
Note: These workarounds are not ideal as they still require manual intervention or project-specific configuration.
Suggested Fix
- Respect Playwright's GC settings: Check for
PLAYWRIGHT_SKIP_BROWSER_GC=1 before deleting cache
- Add configuration option: Provide a Windsurf setting to disable automatic cache cleanup
- Selective cleanup: Only delete cache if it's truly stale (e.g., based on age or version mismatch)
- User notification: Warn before deleting large cache directories
Additional Context
This behavior was discovered while investigating why Playwright browsers needed to be reinstalled on every Windsurf IDE restart in a WSL2 environment. The investigation involved:
- File system monitoring with
inotifywait
- Process monitoring and snapshot capture
- System call tracing with
strace
- Analysis of Windsurf Language Server logs
The deletion is performed by the Language Server process (server.go:288), indicating this is an intentional cleanup operation rather than a bug in Playwright itself.
Related Issues
- Playwright's
PLAYWRIGHT_SKIP_BROWSER_GC=1 environment variable is ignored
- No user-facing setting to disable this behavior
Bug Report: Windsurf IDE Deletes Playwright Cache on WSL Connection
Summary
Windsurf IDE's Language Server (
language_server_linux_x64) automatically deletes the Playwright cache directory (~/.cache/ms-playwright/) when connecting to WSL2, even whenPLAYWRIGHT_SKIP_BROWSER_GC=1is set. This causes Playwright browsers to be reinstalled on every IDE restart, wasting time and bandwidth.Environment
Installed Extensions (WSL)
Note: The issue occurs with Windsurf's built-in MCP server functionality.
Problem Description
When Windsurf IDE connects to WSL2, the Language Server process (PID ) executes a cache cleanup operation that removes the entire Playwright cache directory at
~/.cache/ms-playwright/. This happens regardless of Playwright'sPLAYWRIGHT_SKIP_BROWSER_GC=1environment variable setting.Evidence
Log from Language Server:
Process Information:
/home/<USER>/.windsurf-server/bin/<HASH>/extensions/windsurf/bin/language_server_linux_x64File System Events (inotify):
Reproduction Steps
Install Playwright browsers (any method that creates
~/.cache/ms-playwright/):playwright install chromium # or uv run install-browsersVerify cache exists:
ls -la ~/.cache/ms-playwright/Close Windsurf IDE
Start Windsurf IDE and connect to WSL2
Check cache directory:
Expected Behavior
The Playwright cache directory should persist across Windsurf IDE restarts, especially when
PLAYWRIGHT_SKIP_BROWSER_GC=1is set. The IDE should not automatically delete user-installed browser binaries.Actual Behavior
The Playwright cache directory is completely deleted when Windsurf IDE connects to WSL2, requiring reinstallation of browsers on every restart.
Impact
Workarounds
Temporary Workaround 1: Reinstall on Every Start
Add to project startup script:
playwright install chromium # or uv run install-browsersTemporary Workaround 2: Use Project-Local Cache
Set
PLAYWRIGHT_BROWSERS_PATHto project directory:export PLAYWRIGHT_BROWSERS_PATH=./.playwright-cacheTemporary Workaround 3: Pre-Install Before IDE Start
Manually install browsers before starting Windsurf:
uv run install-browsers # Then start WindsurfNote: These workarounds are not ideal as they still require manual intervention or project-specific configuration.
Suggested Fix
PLAYWRIGHT_SKIP_BROWSER_GC=1before deleting cacheAdditional Context
This behavior was discovered while investigating why Playwright browsers needed to be reinstalled on every Windsurf IDE restart in a WSL2 environment. The investigation involved:
inotifywaitstraceThe deletion is performed by the Language Server process (
server.go:288), indicating this is an intentional cleanup operation rather than a bug in Playwright itself.Related Issues
PLAYWRIGHT_SKIP_BROWSER_GC=1environment variable is ignored