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.go — findServerBinaryPath.
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:
- Walk one more directory level to handle the
<platform> directory, or
- 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
- Create a workspace with extensions in
devcontainer.json:
"customizations": {
"vscode": {
"extensions": ["golang.go", "esbenp.prettier-vscode"]
}
}
- Select Cursor as the IDE in DevPod
- Open the workspace
- Observe "Install extensions in the background" in logs
- 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
What happened?
Extensions listed in
devcontainer.jsonundercustomizations.vscode.extensionsare detected and logged as "Install extensions ... in the background", but never actually installed when using the Cursor IDE.DevPod logs show:
The extensions work correctly when the same devcontainer is opened with VS Code.
Root cause
The bug is in
pkg/ide/vscode/vscode.go—findServerBinaryPath.For
FlavorCursor, the code reads the first entry under$HOME/.cursor-server/bin/and constructs:But Cursor's current server layout adds a platform directory between
bin/and the commit hash:So DevPod constructs the path
$HOME/.cursor-server/bin/linux-arm64/bin/cursor-server, which doesn't exist. The--helpcheck fails, it retries for up to 10 minutes, and eventually times out silently.Proof from inside the container
The directory structure is:
bin/<platform>/<hash>/bin/cursor-server(3 levels), but the code only handlesbin/<hash>/bin/cursor-server(2 levels).Suggested fix
In the
FlavorCursorbranch offindServerBinaryPath, either:<platform>directory, orcursor-serverbinary under$HOME/.cursor-server/bin/The
findCodeServerBinaryfallback (cli/servers/Stable-*/server/bin/code-server) also doesn't match Cursor's layout and won't help.How to reproduce
devcontainer.json:Environment
7d96c2a03bb088ad367615e9da1a3fe20fbbc6a0)Related issues