Cursor Parallel Agents in WSL devcontainers misresolve worktree paths and @context

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Parallel Agents in Cursor appear to have a broken internal file/context resolution layer when used in a WSL2 + dev container environment. The agents’ non-terminal file access path (used for @mentioned context, file search, and worktree setup discovery) produces ENOENT errors with malformed/double-prefixed worktree paths, even though the files exist and are readable from the terminal inside the same worktree.

This results in:

  • Failure to reliably ingest @mentioned file context.
  • Spurious attempts to locate files that are already present.
  • Worktree setup logs incorrectly reporting that .cursor/worktrees.json is missing in both the root workspace and the worktree, despite the file existing in both locations.
  • Agents falling back to terminal cat to read files successfully.

This looks like a tooling/path normalization bug in Cursor’s parallel-agent worktree integration, not a model reasoning issue.

Steps to Reproduce

Environment:

  • Windows host
  • WSL2
  • Dev container
  • Cursor Parallel Agents enabled
  • Repo mounted at /workspace
  • Git worktrees created by Cursor under /root/.cursor/worktrees/...
  1. Ensure a valid worktree setup config exists at:

    • /workspace/.cursor/worktrees.json

    Example:

    {
      "setup-worktree": [
        "pnpm install --frozen-lockfile",
        "cp $ROOT_WORKTREE_PATH/.env.local .env.local"
      ]
    }
    
  2. Confirm Cursor creates worktrees:

    git worktree list
    

    Example output:

    • /workspace ... [dev-branch]
    • /root/.cursor/worktrees/<container-id>/<id> ... (detached HEAD)
  3. Create a small probe file in repo root:

    • /workspace/cursor_probe.txt with contents:
      CURSOR_PROBE_12345
      
  4. Run a Parallel Agent prompt such as:

    • “Please respond with the contents of this file: @cursor_probe.txt
  5. Observe agent trace:

    • The agent attempts internal reads/search and hits ENOENT with malformed worktree paths.
    • It may log that the “Search files model provided non-existent directory.”
    • It eventually resorts to a terminal command:
      cat cursor_probe.txt
      
      which succeeds.
  6. Open Output → “Worktrees Setup” and observe logs similar to:

    checking config ... 
    worktreeConfigFile: file:///root/.cursor/worktrees/.../<id>/.cursor/worktrees.json
    rootConfigFile: file:///workspace/.cursor/worktrees.json
    no config file found in worktree or root, skipping
    
  7. Manually verify both files exist after the run:

    ls -la /workspace/.cursor/worktrees.json
    ls -la /root/.cursor/worktrees/<...>/<id>/.cursor/worktrees.json
    

    Both exist.

Expected Behavior

  • Parallel Agents should correctly resolve workspace and worktree paths inside the dev container.
  • @mentioned files (e.g., @cursor_probe.txt) should be reliably read and injected into agent context without requiring terminal fallbacks.
  • The worktree setup checker should correctly detect:
    • /workspace/.cursor/worktrees.json
    • <worktree>/.cursor/worktrees.json
      and run setup rather than incorrectly reporting missing config.

Screenshots / Screen Recordings

Operating System

Windows 10/11

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.1.50 (system setup)
VSCode Version: 1.105.1
Commit: 56f0a83df8e9eb48585fcc4858a9440db4cc7770
Date: 2025-12-06T23:39:52.834Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.26100

For AI issues: which model did you use?

Models observed during testing:

  • Composer 1
  • Sonnet 4.5

However, this does not appear to be a model reasoning error. The model’s behavior is consistent with missing context: it attempts to read a file that should have been available via Cursor’s context system and only succeeds when given direct terminal access. The failure mode is deterministic and path/FS-related (ENOENT with malformed paths, false-negative config detection), pointing to Cursor’s parallel agent infrastructure rather than the model.

Additional Information

Key observations that narrow root cause:

  • Git and worktrees appear correct inside the container:

    pwd -> /workspace
    git rev-parse --show-toplevel -> /workspace
    git worktree list -> shows Cursor worktrees under /root/.cursor/worktrees/...
    
  • Files exist inside the worktree:

    ls -la components/prompt/prompt-input.tsx
    
  • The agent’s terminal operates correctly inside the worktree.
    The agent’s internal file/context resolver appears to be the failing component.

  • Worktree setup logs incorrectly claim missing config even when both exist:

    • /workspace/.cursor/worktrees.json
    • /root/.cursor/worktrees/.../<id>/.cursor/worktrees.json
  • The environment is a layered path/mount scenario:

    • Windows + WSL2 + dev container
    • Worktrees located at /root/.cursor/worktrees/...
    • Workspace root at /workspace

Hypothesis:

  • A bug in Cursor’s parallel-agent internal path normalization or indexing layer in remote devcontainer-on-WSL scenarios, potentially producing double-prefixed worktree paths and causing ENOENT/false-negative config detection.
  • Possibly a race in initialization, but the repeated malformed path symptoms suggest a path resolver defect more than timing alone.

This report should be sufficient to reproduce and triage.

Does this stop you from using Cursor

Yes - Cursor is unusable

It’s worth noting that I did some further testing after posting this and there is one positive thing that I can confirm…

This issue does not exist when just using WSL, rather than WSL + devcontainers.

However, I cannot confirm whether or not the issue is isolated purely to the unique combination of WSL + devcontainers, or if it is triggered by devcontainer usage in general.

Regardless, I do hope this issue gets addressed because, whether I’m developing on Windows or macOS, I typically appreciate a container-based workflow. There’s a number of reasons for this, but the main one is simply keeping my environments clean and isolated.

Hey @John_Munson !

I think you’re right that this is the same issue reported here:

It looks like the team will work on this soon. Hopefully, we have it fixed for you soon!