TypeScript language features broken in Cursor when connected to a Coder VM (SSH)

Sorry I missed your follow-up.

On the first request, how to pin typescript.experimental.useTsgo: false on the VM

The default for this flag is already false, so the main thing is making sure nobody turns it on. To lock it on the VM side, you’ve got two options:

  1. Workspace-level, recommended
    Put .vscode/settings.json in your project repo:
{
  "typescript.experimental.useTsgo": false
}

This ships with the code, so any client Cursor, VS Code, Windsurf will pick it up.

  1. Machine-level on the VM
    Create ~/.cursor-server/data/Machine/settings.json in your provision script:
{
  "typescript.experimental.useTsgo": false
}

This applies to all projects opened in Cursor over SSH on that VM. Downside is the file lives under ~/.cursor-server, which gets recreated on a clean reinstall, so your provision script will need to restore it.

On the second request, extensions don’t reinstall after deleting ~/.cursor-server

This is a known bug. After rm -rf ~/.cursor-server, cursor-server re-downloads the binary on reconnect, but it doesn’t create extensions/extensions.json. Because that file is missing, all extension installs fail silently. Thread with the same issue: Extension fail to install if .cursor-server is deleted

Workaround on the VM right after deletion:

mkdir -p ~/.cursor-server/extensions
echo '[]' > ~/.cursor-server/extensions/extensions.json

After that, extensions install normally.