Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
Opening a new Cursor window for an existing Remote-SSH .code-workspace does not start SSH immediately. The window comes up locally and sits idle for ~10–45s. Only then does Remote-SSH call resolveAuthority(ssh-remote) and launch ssh.exe. The SSH handshake itself is fast (~2s).
This is local workbench startup ordering, not a slow host or remote.SSH.connectTimeout.
Two stalls:
-
Before SSH starts: WorktreeManager waits ~27s for a git context provider (impossible until the remote is connected), then plugin boot, then fanout priming of cursor-always-local / cursor-resolver / cursor-socket. resolveAuthority runs only after that.
-
After SSH already succeeded: resolveAuthority is sent to two local extension hosts. LocalProcess0 has anysphere.remote-ssh and returns a WebSocket in ~3s. LocalProcess1 does not, and fails with NoResolverFound (“No remote extension installed to resolve ssh-remote”). The window keeps looking disconnected until that second host finishes (up to ~16s extra).
The first stall is often shorter if another Cursor window is already open with the Agent panel. Cold opens hit the git-context timeout; then SSH starts in ~2–6s instead of ~30–45s.
Steps to Reproduce
- Cursor 3.19.19 on Windows, Anysphere Remote-SSH 1.1.14, Linux remote, pubkey SSH. Workspace is a .code-workspace opened over ssh-remote (file lives on the remote).
- Close the remote workspace window.
- Re-open that workspace in a new window (Open Recent, or File → New Window of that workspace). Prefer a cold open: no other Cursor window with Agent already running.
- Watch the new window until the Remote-SSH connecting UI appears / ssh.exe starts.
- Compare timestamps in:
- Output → Remote - SSH
- renderer.log for that window (IdleTimeContribution → WorktreeManager git-context timeout → Invoking resolveAuthority)
- Optional: repeat with a local empty Cursor window (Agent panel) already open. SSH often starts several tens of seconds sooner.
Expected Behavior
As soon as the new window knows it has a remote authority, it should call resolveAuthority(ssh-remote) and launch ssh.exe. Local worktree discovery, git context, and plugin marketplace import should not block that.
resolveAuthority should not wait on a second local extension host that does not contain Remote-SSH. LocalProcess0 already returned a WebSocket; that should complete the resolution.
Actual: cold open waits ~47s after window start before ssh.exe (example 2026-09-11 10:29:03 UI up → 10:29:34 git-context timeout → 10:29:50 first resolveAuthority). Handshake then takes ~2s. A later reopen had LocalProcess0 succeed at 10:44:05 and LocalProcess1 NoResolverFound at 10:44:19, so resolveAuthority was reported complete only after 16579ms.
Operating System
Windows 10/11
Version Information
Version: 3.19.19 (user setup)
VS Code Extension API: 1.128.0
Commit: 6496ea8a068aebfcd21990e70ff522e9abf10c80
Date: 2026-09-08T16:25:33.352Z
Layout: IDE
Build Type: Stable
Release Track: Default
Electron: 42.10.0
Chromium: 148.0.7778.280
Node.js: 24.18.1
V8: 14.8.178.38-electron.0
xterm.js: 6.1.0-beta.291
OS: Windows_NT x64 10.0.26200
Additional Information
Observations, not proven root cause:
-
The long delay matches WorktreeManager blocking on a git context provider (~27s timeout) before resolveAuthority. That looks like Cursor worktree/git-context startup, not vscode.git failing. Git on the remote cannot register until SSH connects.
-
Delay is often much shorter if a local Cursor window is already open with the Agent panel. I have not isolated “panel open” vs “second window already running local agent/git/workspace services.”
-
LocalProcess1 NoResolverFound happens after ssh.exe has already succeeded; that extra wait is extension isolation / fanout (cursor-always-local, cursor-resolver, cursor-socket), not the SSH handshake.
Local: Windows 11 (10.0.26200) win32-x64
Remote: Ubuntu 24.04.1 LTS linux-x64
Cursor 3.19.19 stable, remote server 6496ea8a068aebfcd21990e70ff522e9abf10c80
anysphere.remote-ssh 1.1.14
Extension isolation enabled; cursor_agent_host gate disabled
Manual ssh to the host is immediate. Server already installed; multiplex/code servers already running.
renderer.log (cold open):
10:29:02 Extension isolation is enabled
10:29:03 WorktreeManager starts
10:29:07 IdleTimeContribution (window looks ready)
10:29:34 [WorktreeManager] Timed out waiting for git context provider, skipping worktree discovery
10:29:37 [PluginsProviderService] importClaudeMarketplaces: plugins provider not available
10:29:50 Primed fanout group … cursor-always-local, cursor-resolver, cursor-socket
10:29:50 Invoking resolveAuthority(ssh-remote)…
Later reopen, second stall:
10:44:02.539 Invoking resolveAuthority(ssh-remote)…
10:44:05.468 LocalProcess0 returned WebSocket
10:44:18.613 LocalProcess1 invoking…
10:44:19.117 LocalProcess1 NoResolverFound: No remote extension installed to resolve ssh-remote
10:44:19.118 resolveAuthority returned after 16579 ms
Related, not duplicates:
- Extension Host fails to initialize (Timeout waiting for auth and plugins), breaking AI Agents and Source Control (same git-context timeout; agents/SCM stay broken, SSH is not held off)
- Remote-SSH re-connecting on folder/workspace opening (reconnect after SSH is up)
Workaround: keep a local Cursor window open (empty + Agent panel is enough). Does not remove the LocalProcess1 wait.
Does this stop you from using Cursor
No - Cursor works, but with this issue