Recent Build /w WSL Dependency breaking Cursor

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

I am running Cursor on Windows 11. Have been keeping up on regular updates including the latest one Sep 19 2025.

Since that update, when I open Cursor, I now see the WSL exec run in a Windows command window (it closes quickly after showing a couple error messages I cannot read in time). There have been some functional blocker issues, so I have been doing some troubleshooting.

Evidently you have created a large dependency on running a Ubuntu disto on my laptop. I can deal with that, but a warning would have been nice! I have gone thru the steps and installed Ubuntu and am still having issues.

The primary issues are;

  1. Many Cursor Agent tries command executions in the chat window ā€˜terminal’ instance and they often just hang or fail

  2. The file explorer on the left side is not updating and keeping in sync with the Windows file system. Its showing me folders and files that have long since been removed

  3. On a regular basis after I do my own build in the terminal (usually a powershell term by default), I need to copy/paste the build errors into the chat. But lately when I do this, CTRL-C in the terminal (regardless if the build is running or not) will just put the C^ chars after the c: drive prompt. So no copy/paste is possible.

There are more but I think overall symptomatic of either a build break or this WSL issue.

Please provide some rapid and exceptional support here, I am working on a deadline and do not want to revert to VS Code with Claude Code CLI.

Steps to Reproduce

Steps are above.

Expected Behavior

I expect WSL to work without errors. I expect the file explorer to remain updated. I expect the terminal commands executing in chat to work properly and I expect to be able to copy/paste text from the terminal window back into chat for troubleshooting.

Operating System

Windows 10/11

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.6.35 (user setup)
VSCode Version: 1.99.3
Commit: b753cece5c67c47cb5637199a5a5de2b7100c180
Date: 2025-09-19T17:39:38.846Z
Electron: 34.5.8
Chromium: 132.0.6834.210
Node.js: 20.19.1
V8: 13.2.152.41-electron.0
OS: Windows_NT x64 10.0.26100

For AI issues: which model did you use?

Sonnet 4

Does this stop you from using Cursor

Yes - Cursor is unusable

2 Likes

Hi @Brett_Raven, thank you for reporting this issue. We are working on testing a fix for it and should have an update available soon.

I have 2 issues according to the logs of the extension, 1 is the path has changed for the cursor binary (or so I believe):
C:\Users\[user]\AppData\Local\Programs\cursor\resources\app\bin\code → C:\Users\[user]\AppData\Local\Programs\cursor\resources\app\bin\cursor

So the following snippet would have to change (I don’t have the source code for the WSL extension so I had to patch the compiled JS after formatting it):
[ā€œcodeā€, t.applicationName]… → [ā€œcursorā€, t.applicationName]…
Ends up looking like this:

(t.patchLaunchers = async function (e) {
            const t = await l(void 0);
            await Promise.all(
              ["cursor", t.applicationName].map(async (t) => {
                try {
                  const e = a.join(s.env.appRoot, "bin", `${t}`);
                  let A = await i.promises.readFile(e, { encoding: "utf8" });
                  if (A.includes("anysphere.remote-wsl")) return;
                  (A = A.replace(
                    'WSL_EXT_ID="ms-vscode-remote.remote-wsl"',
                    'WSL_EXT_ID="anysphere.remote-wsl"\n\tELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --locate-extension $WSL_EXT_ID >/tmp/remote-wsl-loc.txt 2>/dev/null </dev/null\n\tWSL_EXT_WLOC=$(cat /tmp/remote-wsl-loc.txt)\n\t\n\tif [ -n "$WSL_EXT_WLOC" ]; then\n\t\tWSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/dist/scripts/wslCursor.sh\n\t\tif [ -f "$WSL_CODE" ]; then\n\t\t\t"$WSL_CODE" "$COMMIT" "$QUALITY" "$ELECTRON" "$APP_NAME" "$SERVERDATAFOLDER" "$@"\n\t\t\texit $?\n\t\tfi\n\tfi\n\n\tWSL_EXT_ID="ms-vscode-remote.remote-wsl"\n'
                  )),
                    await i.promises.writeFile(e, A);
                } catch (A) {
                  e.error(`Failed to patch ${t}.sh launcher: ${A}`);
                }
              })
            );
          });

What I’m left with is 2 errors I have yet to find how to work around:

2025-09-23 12:24:34.310 [info] Resolving wsl remote authority 'wsl+NixOS' (attempt #1)
2025-09-23 12:24:34.310 [info] Installing cursor-server with options: {"id":"babad0b398e5ff5f2a0bda12","commit":"3ccce8f55d8cca49f6d28b491a844c699b8719a0","line":"production","realCommit":"3ccce8f55d8cca49f6d28b491a844c699b8719a3","extensionIds":[],"serverApplicationName":"cursor-server","serverDataFolderName":".cursor-server","forceReinstall":false,"killRunningServers":false}
2025-09-23 12:24:34.380 [info] [wsl exec: installServerScript][stderr]: bash: line 97: uname: command not found
2025-09-23 12:24:34.392 [error] Failed to install Cursor server. Installer script returned code 1. Retrying.
2025-09-23 12:24:34.392 [info] Downloading server from https://downloads.cursor.com/production/3ccce8f55d8cca49f6d28b491a844c699b8719a3/linux//cursor-reh-linux-.tar.gz to C:\Users\luchi\AppData\Local\Temp\cursor-server-1758648274389.tar.gz
2025-09-23 12:24:35.008 [error] Failed to download and copy server: Failed to download server: Forbidden
2025-09-23 12:24:35.009 [error] Failed to delete local file: A system error occurred (ENOENT: no such file or directory, unlink 'C:\Users\luchi\AppData\Local\Temp\cursor-server-1758648274389.tar.gz')
2025-09-23 12:24:35.010 [error] Error installing Cursor server Failed to install code server

The uname: command not found is easy to understand but can’t pinpoint why its erroring out, my WSL env does have uname command.

image

As for the Forbidden part, seems the url is not generated correctly without the platform, so the URL itself is malformed, the correct url should be https://downloads.cursor.com/production/3ccce8f55d8cca49f6d28b491a844c699b8719a3/linux/x64/cursor-reh-linux-x64.tar.gz, so I guess fixing the uname error should fix this.

Hmm the uname part was a NixOS WSL specific issue, I had to set up all missing commands like this:

  wsl.extraBin =
    with pkgs;
    let
      packages = [
        coreutils-full
        gash-utils
      ];
      # Given a package, map every file in its /bin to an attr set, skipping duplicates
      pkgBins =
        pkg:
        let
          dir = "${pkg}/bin";
          entries = builtins.readDir dir;
          names = builtins.attrNames entries;
          filtered = builtins.filter (
            n:
            let
              t = entries.${n};
            in
            t == "regular" || t == "symlink"
          ) names;
        in
        map (n: {
          src = "${dir}/${n}";
          name = n;
        }) filtered;
      # Flatten and deduplicate by name (first occurrence wins)
      lists = builtins.concatMap pkgBins packages;
      dedup = builtins.listToAttrs (
        let
          uniqueNames = lib.unique (map (x: x.name) lists);
        in
        map (n: {
          name = n;
          value = builtins.head (builtins.filter (x: x.name == n) lists);
        }) uniqueNames
      );
      # Convert attrset back to list
      result = map (n: dedup.${n}) (builtins.attrNames dedup);
    in
    result;

Now I get a ā€œbogus screen sizeā€ error…

2025-09-23 13:48:16.985 [info] Resolving wsl remote authority 'wsl+nixos' (attempt #1)
2025-09-23 13:48:16.985 [info] Installing cursor-server with options: {"id":"2e45c0c157fee43c1ff4cccb","commit":"3ccce8f55d8cca49f6d28b491a844c699b8719a0","line":"production","realCommit":"3ccce8f55d8cca49f6d28b491a844c699b8719a3","extensionIds":[],"serverApplicationName":"cursor-server","serverDataFolderName":".cursor-server","forceReinstall":true,"killRunningServers":false}
2025-09-23 13:48:17.027 [info] [wsl exec: installServerScript][stderr]: your 131072x1 screen size is bogus. expect trouble
2025-09-23 13:48:18.832 [info] [wsl exec: installServerScript][stderr]: 2025-09-23 18:48:18 URL:https://downloads.cursor.com/production/3ccce8f55d8cca49f6d28b491a844c699b8719a3/linux/x64/cursor-reh-linux-x64.tar.gz [65782557/65782557] -> "/tmp/tmp.1Gn4IE4DeR" [1]
2025-09-23 13:48:18.884 [info] [wsl exec: installServerScript][stderr]: Backtrace:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: In ice-9/boot-9.scm:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: 1755:12  4 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: In unknown file:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: 3 (apply-smob/0 #<thunk 74775a71a300>)
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: In ice-9/boot-9.scm:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: 724:2  2 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: In ice-9/eval.scm:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: 619:8  1 (_ #(#(#<directory (guile-user) 74775a71ec80>)))
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: In gash/guix-utils.scm:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: 145:10  0 (call-with-decompressed-port _ _ _)
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: gash/guix-utils.scm:145:10: In procedure call-with-decompressed-port:
2025-09-23 13:48:18.885 [info] [wsl exec: installServerScript][stderr]: decompressed-port failure (5434)
2025-09-23 13:48:18.895 [error] Failed to install Cursor server. Installer script returned code 1. Retrying.
2025-09-23 13:48:18.895 [info] Downloading server from https://downloads.cursor.com/production/3ccce8f55d8cca49f6d28b491a844c699b8719a3/linux/x64/cursor-reh-linux-x64.tar.gz to C:\Users\luchi\AppData\Local\Temp\cursor-server-1758653298891.tar.gz
2025-09-23 13:48:20.494 [info] Downloaded server locally to: /mnt/c/Users/luchi/AppData/Local/Temp/cursor-server-1758653298891.tar.gz
2025-09-23 13:48:20.539 [info] [wsl exec: installServerScript][stderr]: your 131072x1 screen size is bogus. expect trouble
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: Backtrace:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: In ice-9/boot-9.scm:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: 1755:12  4 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: In unknown file:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: 3 (apply-smob/0 #<thunk 7e7a1c51a300>)
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: In ice-9/boot-9.scm:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: 724:2  2 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: In ice-9/eval.scm:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: 619:8  1 (_ #(#(#<directory (guile-user) 7e7a1c51ec80>)))
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: In gash/guix-utils.scm:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: 145:10  0 (call-with-decompressed-port _ _ _)
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: gash/guix-utils.scm:145:10: In procedure call-with-decompressed-port:
2025-09-23 13:48:20.910 [info] [wsl exec: installServerScript][stderr]: decompressed-port failure (5666)
2025-09-23 13:48:20.926 [error] Error installing Cursor server Failed to install code server. Exited with code 1

Hi @luchillo17, nixOS is not officially supported for our WSL extension. That said, could you try the workarounds suggested here? Setup VSCode Remote - NixOS-WSL

Hi @ravirahman , I do have nix-ld enabled, if you want to see what my config looks like, I have my flake based dotfiles in this repo (specifically the nixos-wsl-z390 profile and the only home manager config):

The module in my dotfiles that sets up nix-ld is the compat module.