Painful to use WSL with Cursor

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor frequently disconnects from WSL and often fails to reconnect, even after WSL has been restarted.

When this happens, the agent gets stuck indefinitely on “Planning next moves”, despite the WSL terminal remaining fully operational and still accepting commands. This suggests that the issue is isolated to Cursor’s connection or agent state rather than WSL itself.

The current behavior also lacks transparency. Cursor does not clearly indicate whether it is reconnecting, waiting for a process, retrying a failed operation, or encountering an internal error. As a result, users cannot determine whether they should wait, restart the agent, reload the window, or restart WSL again.

2026-07-29 09:59:05.788 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:06.313 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:06.411 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:06.424 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:06.455 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:07.093 [info] [Window] Auto updating outdated extensions. nuxt.mdc
2026-07-29 09:59:07.366 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:08.256 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:08.262 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:08.432 [info] [Window] Auto update consent required for extension nuxt.mdc
2026-07-29 09:59:08.983 [info] [Window] [PushRequestContextService] Updated sandbox network file entries (0 entries)
2026-07-29 09:59:09.017 [info] [Window] [PushRequestContextService] Updated git workspace caches (1 entries)
2026-07-29 09:59:09.166 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:09.294 [info] [Window] [MainThreadCursorExplorerProviderService] Explorer provider registered
2026-07-29 09:59:09.297 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 09:59:19.811 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 09:59:50.322 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:00:01.229 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 10:00:20.807 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:00:31.240 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 10:00:39.980 [info] [Window] [ComposerWakelockManager] Acquired wakelock id=41 reason="agent-loop" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:00:39.981 [info] [Window] [ComposerWakelockManager] Disabled background throttling id=42 reason="agent-loop" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:00:51.402 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:01:03.544 [info] [Window] [ComposerWakelockManager] Acquired wakelock id=42 reason="agent-loop" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:03.544 [info] [Window] [ComposerWakelockManager] Disabled background throttling id=43 reason="agent-loop" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:17.567 [error] [Window] Error fetching user privacy mode: No Connect transport provider registered.
2026-07-29 10:01:17.572 [info] [Window] [McpProcessAfterRestoredContribution] shared-process MCP routing disabled for remote workspace
2026-07-29 10:01:17.572 [error] [Window] Error fetching user pricing info: No Connect transport provider registered.
2026-07-29 10:01:17.572 [error] [Window] Failed to refresh membership, scheduling next attempt {"error":{}}
2026-07-29 10:01:17.579 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.
2026-07-29 10:01:17.860 [error] [Window] Failed to poll repo blocklist: No Connect transport provider registered.
2026-07-29 10:01:17.861 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803)
    at async xy.get (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:5331)
    at async aac.keepCppModelStateUpdated (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:19397:16237)
    at async aac.loadCppConfigIncludingHandlingProAccess (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:19407:1259) No Connect transport provider registered.
2026-07-29 10:01:19.204 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.
2026-07-29 10:01:19.385 [info] [Window] [ComposerWakelockManager] Released wakelock id=41 reason="generation-ended" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:19.403 [info] [Window] [ComposerWakelockManager] Restored background throttling id=42 reason="generation-ended" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:21.416 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.
2026-07-29 10:01:21.564 [info] [Window] [ComposerWakelockManager] Released wakelock id=42 reason="generation-ended" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:21.580 [info] [Window] [ComposerWakelockManager] Restored background throttling id=43 reason="generation-ended" composerId=2ec4067f-41a3-4eee-89ca-73ecc055cf66
2026-07-29 10:01:21.946 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:01:27.573 [error] [Window] Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803)
    at async xy.get (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:5331)
    at async suc.forceRefreshServerConfig (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:19498:45967)
2026-07-29 10:01:52.430 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:01:53.872 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.
2026-07-29 10:01:57.611 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.
2026-07-29 10:02:23.031 [warning] [Window] [scm] batchGetPullRequestStatus soft-failed PRs {"callsite":"pr_status_poll","failed":2,"total":2}
2026-07-29 10:02:31.581 [error] [Window] No Connect transport provider registered.: Error: No Connect transport provider registered.
    at r2r.transport (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:3708)
    at async xy.createSingleServer (vscode-file://vscode-app/c:/Users/lucas/AppData/Local/Programs/cursor/resources/app/out/vs/workbench/workbench.glass.main.js:8299:6803) No Connect transport provider registered.

Steps to Reproduce

The issue is intermittent and does not have a consistently reproducible sequence of steps.

It typically occurs during normal usage of Cursor with WSL. Cursor unexpectedly loses its connection to WSL and may fail to reconnect, even after WSL is restarted. When this happens, the terminal remains functional, but the agent becomes stuck on “Planning next moves.”

Expected Behavior

  • Cursor should reliably reconnect after a WSL restart.
  • The agent should detect when its connection to WSL has been lost or restored.
  • It should not remain indefinitely stuck on “Planning next moves.”
  • Cursor should display a clear connection status, error message, or recovery action instead of presenting a generic planning state.

Operating System

Windows 10/11

Version Information

Version: 3.13.23 (user setup)
VS Code Extension API: 1.128.0
Commit: 17c901d55bf56c17981e6ae6678656d1e08c9f80
Date: 2026-07-27T21:47:39.560Z
Layout: Agent Window
Build Type: Stable
Release Track: Nightly
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Windows_NT x64 10.0.26200

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey, thanks for the detailed report and logs, that helps. This is a reconnect issue in WSL: after a disconnect it looks like it reconnects, but the client hangs, and the agent stays on the placeholder Planning next moves. This is not a separate stage, it is just a placeholder when nothing is streaming. I agree about the lack of a clear status, that is part of the same issue. I can’t share a timeline for a fix yet.

A couple workarounds that usually help faster than restarting WSL:

  • When it is stuck, run Developer: Reload Window via Cmd+Shift+P or Ctrl+Shift+P. Reloading the window clears the stuck state on the client side. A full wsl --shutdown by itself does not reset it, so the reload is still needed.
  • Try not to keep a huge number of chats or transcripts in one window. A big accumulated backlog makes the hang much more likely. Clean up old threads from time to time.
  • On the Windows side, check if something is blocking local WebSocket traffic, like antivirus, a corporate proxy or VPN, or Zscaler. Sometimes that is what triggers reconnect timeouts.

If the issue comes back immediately after a reload, reply with a fresh log snippet and the Request ID if it shows up, and I’ll take another look.

Hi Dean, thanks for the quick reply! I’ve done all those steps.
What is my workflow when this happens:

  • Reload window
  • If it doesnt solve the issue, I restart WSL then reload window
  • If that doesnt work too, I rm -rf ~/.cursor-server then restart WSL and reload window

I’ve only opened this issue after those steps didnt work.

Thanks for laying out the whole workflow. I can see you already tried reload, restarting WSL, and fully deleting ~/.cursor-server, and it didn’t help.

Based on the logs, the freeze is usually caused by a large built up backlog of messages in the window itself, chats and transcripts, not by the WSL state. Reload and recreating .cursor-server don’t always clear that client side state if the window has a lot of old threads saved. A couple things to check:

  • About how many chats or transcripts are stored in this window? If it’s a lot, try deleting old threads and or open the project in a new window with a fresh workspace to see if the freeze happens there too.
  • Make sure nothing on the Windows side is throttling local WebSocket traffic, like antivirus, a corporate proxy, VPN, or Zscaler. That can sometimes trigger a reconnect loop.

This is an issue we’re tracking, but I can’t share an exact fix timeline yet.

Next time it freezes, please send a fresh log snippet right at the moment it freezes, plus the Request ID if it shows up, and I’ll take another look.