Skip to content

Cursor IDE: extensions from devcontainer.json not installed - server binary path mismatch #1965

@ofirzyg

Description

@ofirzyg

What happened?

Extensions listed in devcontainer.json under customizations.vscode.extensions are detected and logged as "Install extensions ... in the background", but never actually installed when using the Cursor IDE.

DevPod logs show:

[11:14:59] info Install extensions 'ms-azuretools.vscode-containers,...' in the background
[11:14:59] info Starting Cursor...

The extensions work correctly when the same devcontainer is opened with VS Code.

Root cause

The bug is in pkg/ide/vscode/vscode.gofindServerBinaryPath.

For FlavorCursor, the code reads the first entry under $HOME/.cursor-server/bin/ and constructs:

$HOME/.cursor-server/bin/<first_entry>/bin/cursor-server

But Cursor's current server layout adds a platform directory between bin/ and the commit hash:

Actual:   $HOME/.cursor-server/bin/linux-arm64/<hash>/bin/cursor-server
Expected: $HOME/.cursor-server/bin/<hash>/bin/cursor-server
                                     ^^^^^^^^^^^^
                                     DevPod assumes this is the hash,
                                     but it's actually "linux-arm64"

So DevPod constructs the path $HOME/.cursor-server/bin/linux-arm64/bin/cursor-server, which doesn't exist. The --help check fails, it retries for up to 10 minutes, and eventually times out silently.

Proof from inside the container

$ find /root/.cursor-server/bin -type f -name "cursor-server"
/root/.cursor-server/bin/linux-arm64/7d96c2a03bb088ad367615e9da1a3fe20fbbc6a0/bin/cursor-server

$ ls /root/.cursor-server/bin/
linux-arm64/
multiplex-server/

The directory structure is: bin/<platform>/<hash>/bin/cursor-server (3 levels), but the code only handles bin/<hash>/bin/cursor-server (2 levels).

Suggested fix

In the FlavorCursor branch of findServerBinaryPath, either:

  1. Walk one more directory level to handle the <platform> directory, or
  2. Use a recursive search for the cursor-server binary under $HOME/.cursor-server/bin/

The findCodeServerBinary fallback (cli/servers/Stable-*/server/bin/code-server) also doesn't match Cursor's layout and won't help.

How to reproduce

  1. Create a workspace with extensions in devcontainer.json:
    "customizations": {
      "vscode": {
        "extensions": ["golang.go", "esbenp.prettier-vscode"]
      }
    }
  2. Select Cursor as the IDE in DevPod
  3. Open the workspace
  4. Observe "Install extensions in the background" in logs
  5. Extensions are not installed in Cursor

Environment

  • DevPod Version: v0.6.15
  • OS: macOS (host), Ubuntu (container)
  • Arch: arm64/aarch64
  • Cursor Version: 0.47.x (server commit 7d96c2a03bb088ad367615e9da1a3fe20fbbc6a0)
  • Provider: Docker

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions