Agents Window SSH execution target: deterministic 120s connection timeout to a host that the classic Editor Window connects to fine

Where does the bug appear (feature/product)?

Somewhere else…

Describe the Bug

Summary:
Connecting the Agents Window’s remote-SSH execution target to a private
corporate SSH host consistently and deterministically fails with:

Error installing server: SSH connection timed out after 120s without
receiving any data from the remote host

This happens on every single attempt, across multiple days, after full
resets of both endpoints. The exact same command, run manually in a
terminal, succeeds every single time:

cat “<install_script>.sh” | ssh -T -F “<ssh_config>” -D bash --login -c bash

Request: please investigate why the Agents Window’s SSH connection
mechanism fails where the classic Editor Window’s (functionally identical)
connection succeeds, and/or expose equivalent debug tooling (a visible
terminal with ssh debug output) for Agents Window SSH connection attempts.

Steps to Reproduce

  1. Open a classic Editor Window with Remote-SSH connected to the host — works.
  2. Open the Agents Window and select the same host as a remote SSH
    execution target — fails with the above timeout, every time.

Expected Behavior

Connects to remote server via ssh and can use agents

Operating System

MacOS

Version Information

Version: 3.10.17 (Universal)
VS Code Extension API: 1.125.0
Commit: c89f45b831621cdc5e951694db44fecd8fab1150
Date: 2026-07-05T06:39:45.228Z
Layout: IDE
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.256
OS: Darwin arm64 25.5.0

Additional Information

Environment:

  • macOS client, Cursor version: Version: 3.10.17 (Universal)
  • Remote: Debian 13 (trixie) x86_64, corporate VPN-only host, reachable via
    the classic Editor Window’s Remote-SSH connection without issue
  • ~/.ssh/config on client is minimal: single Host * block with
    StrictHostKeyChecking no, UserKnownHostsFile /dev/null, CheckHostIP no
    (no ProxyJump/ProxyCommand, so no config divergence is possible between
    the two flows)
  • SSH auth: passwordless via ssh-agent + macOS Keychain-backed key, already
    working in the classic Editor Window’s connection

What’s been ruled out:

  • Stale local SOCKS proxy port (checked via lsof, nothing bound)
  • Stale remote install lock file / zombie cursor-server or multiplex-server
    processes (checked directly on remote, none found; server processes healthy)
  • ssh_config divergence between the two flows (only one wildcard Host block
    exists on the client; both flows use the identical -F path)
  • Transient network issue: full reset performed (window reload, Cursor
    restart, remote machine reboot, local Mac reboot) — failure is 100%
    reproducible after every reset, at every time of day tested
  • Hidden askpass/passphrase prompt (checked all Spaces/displays, no pending
    dialog found at any point)
  • PATH-based ssh interception: installed a logging wrapper for ssh on
    PATH, confirmed live via which ssh in a normal shell — but it is never
    invoked by Cursor for either flow (working or failing), indicating Cursor
    does not resolve ssh via shell PATH/rc files for its own connections
  • remote.SSH.logLevel: trace setting: per Cursor engineering on the forum,
    this setting isn’t implemented by the Anysphere Remote-SSH extension at
    all (only remote.SSH.connectTimeout, remote.autoForwardPorts, and
    remote.autoForwardPortsSource are honored), so it had no effect either way

Notable gap: no terminal/pty is exposed for the Agents Window’s SSH
connection attempt, unlike the classic Editor Window flow (which shows a
persistent “This terminal is used to establish and maintain the SSH
connection” terminal with full ssh debug output). This makes it impossible
to see where/why the Agents Window attempt is actually stalling, and
prevented further diagnosis from the client side.

This appears consistent with the known “SSH parity gaps” between the Agents
Window and classic Editor Window referenced in other forum threads.

Does this stop you from using Cursor

Yes - Cursor is unusable

2026-07-07 12:26:26.431 [info] Resolving ssh remote authority 'proggie-dev-2.proggie.com' (Unparsed 'ssh-remote+<redacted>') (attempt #1)
2026-07-07 12:26:26.438 [info] SSH askpass server listening on /var/folders/xw/cyxn7x011cs5b6tz1vfwvrk80000gp/T/cursor-ssh-UwJJBh/socket.sock
2026-07-07 12:26:26.439 [info] Using configured platform linux for remote host proggie-dev-2.proggie.com
2026-07-07 12:26:26.440 [info] Using askpass script: /Users/proggie/.cursor/extensions/anysphere.remote-ssh-1.1.6/dist/scripts/launchSSHAskpass.sh with javascript file /Users/proggie/.cursor/extensions/anysphere.remote-ssh-1.1.6/dist/scripts/sshAskClient.js. Askpass handle: /var/folders/xw/cyxn7x011cs5b6tz1vfwvrk80000gp/T/cursor-ssh-UwJJBh/socket.sock
2026-07-07 12:26:26.442 [info] Launching SSH server via shell with command: cat "/var/folders/xw/cyxn7x011cs5b6tz1vfwvrk80000gp/T/cursor_remote_install_3a960312-0228-48fb-812d-60487829c0ce.sh" | ssh -T -v -F "/Users/proggie/.ssh/config" -D 54963 proggie-dev-2.proggie.com bash --login -c bash
2026-07-07 12:26:26.442 [info] Started installation script. Waiting for it to finish...
2026-07-07 12:26:26.442 [info] Waiting for SSH handshake (timeout: 120s). Install timeout: 30s.
2026-07-07 12:28:26.449 [error] Error installing server: SSH connection timed out after 120s without receiving any data from the remote host
2026-07-07 12:28:26.450 [info] Deleting local script /var/folders/xw/cyxn7x011cs5b6tz1vfwvrk80000gp/T/cursor_remote_install_3a960312-0228-48fb-812d-60487829c0ce.sh
2026-07-07 12:28:26.452 [error] Error resolving SSH authority SSH connection timed out after 120s without receiving any data from the remote host

Hi @Proggie!

Thanks for raising this.

Could you try running Cmd + Shift + P > Generate Remote SSH Connection Report? This should help us understand what’s going wrong in making the connection!

FYI, this command is from the regular IDE window. The Agents window does not have this command/actions when I do Cmd + Shift + P.


Cursor Remote SSH Connection Diagnostic Report - proggie-dev-2.proggie.com
Generated on: 2026-07-08T18:34:52.952Z

****************************************************************************
* WARNING: This report may contain sensitive information.                  *
* Please review and redact any sensitive information before sharing.       *
****************************************************************************
cat "/Users/proggie/.cursor/extensions/anysphere.remote-ssh-1.1.7/dist/scripts/connectionReport.sh" | ssh -T -F "/Users/proggie/.ssh/config" -D 62784 proggie-dev-2.proggie.com bash --login -c bash; echo "Exit code: $?. Finished running command."
e[?1034hsh-3.2$ cat "/Users/proggie/.cursor/extensions/anysphere.remote-ssh-1.1.7/dist/scripts/connectionRe 
port.sh" | ssh -T -F "/Users/proggie/.ssh/config" -D 62784 proggie-dev-2.proggie.com bash --logi 
n -c bash; echo "Exit code: $?. Finished running command."
+-------------------------------------------------------------------------+
|You have logged into a Proggie computer system. Unauthorized or improper  |
|use of this system may result in disciplinary action, termination of     |
|employment, civil and criminal liability. By using this system you agree |
|to the terms of use contained herein and in any published Proggie policy  |
|covering such use. The system and the data, files and information        |
|(Information) contained herein are the property of Proggie. Except where  |
|prohibited by law, Proggie may in its sole discretion use, intercept,     |
|monitor, record, copy, audit, inspect, delete, or modify such Information|
|and further may disclose such Information to Proggie personnel, law       |
|enforcement agencies, or any other third parties as Proggie deems         |
|necessary to conduct its business.                                       |
+-------------------------------------------------------------------------+
Start Time: 2026-07-08T18:34:52.390Z

=== Program Versions ===
----------------------------------------
Node.js: v20.19.2
cURL: curl 8.14.1 (x86_64-pc-linux-gnu) libcurl/8.14.1 OpenSSL/3.5.6 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 nghttp3/1.8.0 librtmp/2.3 OpenLDAP/2.6.10
Wget: GNU Wget 1.25.0 built on linux-gnu.
Base64: base64 (GNU coreutils) 9.7
Grep: grep (GNU grep) 3.11

=== Environment Variables ===
----------------------------------------
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/29892/bus
HOME=/u/proggie
LANG=en_US.UTF-8
LOGNAME=proggie
MOTD_SHOWN=pam
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
PWD=/u/proggie
SHELL=/bin/bash
SHLVL=1
SSH_CLIENT=10.251.53.182 43028 22
SSH_CONNECTION=10.251.53.182 43028 10.224.173.150 22
USER=proggie
_=/usr/bin/env
XDG_RUNTIME_DIR=/run/user/29892
XDG_SESSION_CLASS=user
XDG_SESSION_ID=216
XDG_SESSION_TYPE=tty

=== Host Platform Information ===
----------------------------------------
OS Release Information:
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.5
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

System Information:
Linux proggie-dev-2 6.12.94+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.94-1 (2026-06-20) x86_64 GNU/Linux

=== Network Connectivity Test ===
----------------------------------------
Attempting to download https://cursor.blob.core.windows.net/remote-releases/connectioncheck.txt
Testing connection using curl...
Starting download at: 2026-07-08T18:34:52.522Z
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0  6838    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
HTTP/1.1 503 Service Unavailable

Content-Type: text/html; charset=UTF-8

Content-Length: 6838

Connection: close

P3P: CP="CAO PSA OUR"

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache



Command finished at: 2026-07-08T18:34:52.971Z

=== SSH Configuration ===
----------------------------------------
User SSH Config:
Host *
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  CheckHostIP no

System SSH Config:

# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.

# Site-wide defaults for some commonly used options.  For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.

Include /etc/ssh/ssh_config.d/*.conf

Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP no
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected]
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
#   UserKnownHostsFile ~/.ssh/known_hosts.d/%k
    SendEnv LANG LC_* COLORTERM NO_COLOR
    HashKnownHosts yes
    GSSAPIAuthentication yes

=== Additional System Information ===
----------------------------------------
Network Interfaces:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:87:db:4b brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    altname ens192
    altname enx00505687db4b
    inet 10.224.173.150/19 brd 10.224.191.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fd20:8b1e:b255:83f7:250:56ff:fe87:db4b/64 scope global dynamic mngtmpaddr proto kernel_ra 
       valid_lft 2591512sec preferred_lft 604312sec
    inet6 fe80::250:56ff:fe87:db4b/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:87:3d:cd brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    altname ens224
    altname enx005056873dcd
    inet 172.16.173.50/19 brd 172.16.191.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe87:3dcd/64 scope link proto kernel_ll 
       valid_lft forever preferred_lft forever
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 56:66:38:6c:1d:7f brd ff:ff:ff:ff:ff:ff
    inet 158.26.0.1/16 brd 158.26.255.255 scope global docker0
       valid_lft forever preferred_lft forever

DNS Configuration:
# Generated by dhcpcd from ens192.dhcp
# /etc/resolv.conf.head can replace this line
domain proggie.com
nameserver 10.224.223.130
nameserver 10.224.223.131
nameserver 10.224.1.126
# /etc/resolv.conf.tail can replace this line

Current User Information:
uid=29892(proggie) gid=30(dip) groups=30(dip),60063(ip3poee)
proggie

Process Information:
root        1434  0.0  0.0  12192  6900 ?        Ss   Jul03   0:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
proggie     3251  0.0  0.0  17196  8020 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3286  0.0  0.0  17196  7796 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3287  0.0  0.0  17196  7704 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3307  0.0  0.0  17196  7732 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3308  0.0  0.0  17196  7696 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3327  0.0  0.0  17196  7720 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3329  0.0  0.0  17196  7812 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3343  0.0  0.0  17196  7724 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3350  0.0  0.0  17328  8380 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3371  0.0  0.0  17328  8064 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3382  0.0  0.0  17224  7716 ?        S+   Jul03   0:00 ssh [email protected]
proggie     3387  0.0  0.0  17436  8328 ?        S+   Jul03   0:00 ssh cyclict.eng.Proggie.com
root      214611  0.0  0.0  20488 11944 ?        Ss   13:11   0:00 sshd-session: proggie [priv]
proggie   214613  0.0  0.0  21408  8064 ?        S    13:11   0:00 sshd-session: proggie@notty
root      216654  0.0  0.0  20628 13204 ?        Ss   13:16   0:00 sshd-session: proggie [priv]
proggie   216656  0.0  0.0  20748  7392 ?        S    13:16   0:00 sshd-session: proggie@pts/1
root      225137  0.6  0.0  20488 12116 ?        Ss   14:34   0:00 sshd-session: proggie [priv]
proggie   225139  0.0  0.0  20748  7456 ?        S    14:34   0:00 sshd-session: proggie@notty
proggie   225217  0.0  0.0   6520  2460 ?        S    14:34   0:00 grep -i ssh

============================================
End of Diagnostic Report
End Time: 2026-07-08T18:34:53.014Z

It ought to! Could you try selecting an existing chat (one that was started in the Agents Window) before running it?

ok selecting an existing chat let me see the command. But selecting it does nothing.

Hi @Proggie!

Apologies for the trouble!

I dug in some more. Could you check whether you have remote.SSH.showLoginTerminal: true in your VSCode settings? The persistent “This terminal is used to establish and maintain the SSH connection” terminal you see in the Editor Window only appears when that setting is enabled.

When it’s enabled, the SSH connection is launched inside an editor terminal, and I believe the Agents Window currently can’t surface that terminal, so the connection attempt never actually runs.

Whether it’s set or not, could you try setting it to false and connecting from the Agents Window again? I’d expect that to work as a workaround. If it does, there’s probably still something we need to fix on our end.

amazing! That did the trick! Thank you!

Great, thanks for confirming! I filed a bug in any case, since this was clearly bad UX.