Remote SSH (Mac → Mac): Agent tools hang indefinitely (often on git); integrated terminal git is fine

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Environment

  • Client: Cursor on a Mac (local window)
  • Remote: Cursor Remote SSH to another Mac (kMini), workspace is a git repo
  • Remote git credential helper: Git Credential Manager
    /usr/local/share/gcm-core/git-credential-manager
    (also osxkeychain-style GUI/Keychain prompts on a machine with no usable GUI for the agent)
  • Agent chats (Composer / Cloud / local) all appear stuck the same way

What happens

In a Remote SSH window, every agent eventually sits on “running” / git-related work and never returns.

The same git commands in the normal integrated terminal on that remote return in well under a second. There is no .git/index.lock.

Agent tool calls themselves hang — not only git. In one session:

Tool Wait until cancelled
Shell (git status --short with GIT_TERMINAL_PROMPT=0 / GIT_ASKPASS=echo) ~6 min, then ~14 min
Read / Glob in the same turn ~6 min (cancelled together)

So once the agent side is wedged, non-git tools also never complete. It looks like a blocked subprocess or askpass, not a slow repo.

Control experiment (remote terminal, not agent)

This returned immediately:

GIT_TERMINAL_PROMPT=0 GIT_ASKPASS=echo SSH_ASKPASS=echo git -c core.pager=cat status --short
 M knowledge/log.md
 M knowledge/research/index.md
?? knowledge/research/method-role-handlers-datastar-ecosystem.md

ls .git/index.lock → no such file.

Clearing credential.helper and unlocking the login keychain in my shell did not unstick later agent Shell calls. Agent execution is a different environment (likely Cursor GIT_ASKPASS / integrated askpass / a harness git status at turn start).

Why this feels like a product limitation

On Remote SSH:

  1. There is no local GUI on the SSH host for GCM / Keychain / pinentry.
  2. Cursor’s integrated Git askpass expects a UI on the client, which often never completes for agent-spawned processes.
  3. Agents (and repo rules) routinely run git status. If that call has no timeout and no GIT_TERMINAL_PROMPT=0, the entire agent turn is dead.
  4. Users cannot recover except by cancelling the tool after several minutes and starting a new chat.

Expected: agent git/status either inherits a non-interactive git env (GIT_TERMINAL_PROMPT=0, no blocking askpass) or fails fast with a clear error. Other tools should not sit behind a hung git.

Request

  • Time out / fail agent git when askpass cannot prompt over SSH.
  • For agent shells over Remote SSH, default GIT_TERMINAL_PROMPT=0 and do not use integrated askpass unless a prompt can actually be shown.
  • Document this for Remote SSH + macOS hosts (GCM/Keychain).

Steps to Reproduce

  1. Open Cursor Remote SSH to a Mac that has Git Credential Manager (or any helper that can wait on Keychain/GUI).
  2. Open a git workspace.
  3. Ask any Agent to inspect the repo or run git status.
  4. Observe the agent tool spinner until you cancel (minutes).
  5. In the same window, run git status in the integrated terminal — it returns immediately.

Operating System

MacOS

Version Information

Version: 3.17.8
VS Code Extension API: 1.128.0
Commit: 2fdd31c9f33f7fbe501f2d57772dc5bf64b63620
Date: 2026-08-20T02:18:12.724Z
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.291
OS: Darwin arm64 24.6.0

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey @koliyo, thanks for the detailed report!

Could you try setting "git.useIntegratedAskPass": false for the remote, then reloading the window?

That prevents background git operations from routing through the in-app credential prompt, which is the most likely cause of agent sessions getting wedged in a Remote SSH window like yours.

Let us know the result! Might still have an underlying issue to fix whether it works or not.

Thanks for reply, I added the setting to both machines, reloaded IDE. And ran simple “check git status” prompt in new chat. Still getting stuck I’m afraid.

Thanks for testing that @koliyo!

It turns out the setting wasn’t the story here: we traced your stuck chats from our side, and your requests are actually reaching our servers but failing because the conversation’s saved data isn’t making it into storage from that window, and over Remote SSH that failure currently shows up as an endless “running” spinner instead of an error message.

Both parts are known issues we’re actively working on.

In the meantime, could you fully quit Cursor on your Mac, kill the Cursor server on kMini (from a terminal there: pkill -f cursor-server), then reconnect and try a brand-new chat? If it still gets stuck after that, just note the rough time you tried and reply here, we can look it up on our side from there.

I restarted Cursor on both machines, and even fully restarted the kMini remote host. Tried “check git status” prompt, but still getting stuck.

Request ID: 7145adc7-063a-4d72-a7a2-0e4b41210fef

Hm… your request reaches our servers fine, the model responds within a couple of seconds, and the agent then hands the shell command back to Cursor on kMini to execute. That execution never starts. Our side just keeps waiting, which is the endless spinner you see.

Two things would really help us pin down what’s stuck on the remote side:

  1. Right after a hang, in the Remote SSH window, open View > Output and pick “Cursor Agent Host” from the channel dropdown (also worth checking “Remote - SSH”). Paste anything that appears there, or tell us if that channel isn’t listed at all.

  2. Let us know whether the agent works normally in a plain local window on your Mac, with no Remote SSH.

That will isolate this to the component that runs agent commands on the remote machine!

I do not find “Cursor Agent Host”, see screenshot. Appending output from Remote - SSH. And yes, agents work locally on both machines.

2026-08-27 21:27:02.344 [info] Resolving ssh remote authority 'kMini' (Unparsed 'ssh-remote+7b22686f73744e616d65223a226b4d696e69227d') (attempt #1)
2026-08-27 21:27:02.355 [info] SSH askpass server listening on /var/folders/7w/r3zd6mzj6jngg60zxf7q383h0000gn/T/cursor-ssh-gx5V71/socket.sock
2026-08-27 21:27:02.356 [info] Using configured platform macOS for remote host kMini
2026-08-27 21:27:02.357 [info] Using askpass script: /Users/nils/.cursor/extensions/anysphere.remote-ssh-1.1.14/dist/scripts/launchSSHAskpass.sh with javascript file /Users/nils/.cursor/extensions/anysphere.remote-ssh-1.1.14/dist/scripts/sshAskClient.js. Askpass address: /var/folders/7w/r3zd6mzj6jngg60zxf7q383h0000gn/T/cursor-ssh-gx5V71/socket.sock
2026-08-27 21:27:02.361 [info] Launching SSH server via shell with command: cat "/var/folders/7w/r3zd6mzj6jngg60zxf7q383h0000gn/T/cursor_remote_install_9770acd6-6f51-459c-87b2-8f0602ad25f4.sh" | ssh -T -D 61577 kMini bash --login -c bash
2026-08-27 21:27:02.361 [info] Establishing SSH connection: cat "/var/folders/7w/r3zd6mzj6jngg60zxf7q383h0000gn/T/cursor_remote_install_9770acd6-6f51-459c-87b2-8f0602ad25f4.sh" | ssh -T -D 61577 kMini bash --login -c bash
2026-08-27 21:27:02.362 [info] Started installation script. Waiting for it to finish...
2026-08-27 21:27:02.362 [info] Waiting for SSH handshake (timeout: 120s). Install timeout: 30s.
2026-08-27 21:27:03.350 [info] (ssh_tunnel) stdout: Configuring Cursor Server on Remote

2026-08-27 21:27:03.351 [info] SSH connection established after 988ms (first stdout received)
2026-08-27 21:27:03.466 [info] (ssh_tunnel) stdout: Using TMP_DIR: /tmp

2026-08-27 21:27:04.331 [info] (ssh_tunnel) stdout: Locking /tmp/cursor-remote-lock.fca684bc38e9a0058d7381c5087ec5a1

2026-08-27 21:27:04.458 [info] (ssh_tunnel) stdout: Downloading server via wget from https://downloads.cursor.com/production/8f2a112cb2845a97b75fd932ea5c470579ca4063/darwin/arm64/cursor-reh-darwin-arm64.tar.gz to cursor-server-0707d8eb-96e3-444f-977f-9b88bca19e4a.tar.gz

2026-08-27 21:27:04.750 [info] (ssh_tunnel) stderr: --2026-08-27 21:27:04--  https://downloads.cursor.com/production/8f2a112cb2845a97b75fd932ea5c470579ca4063/darwin/arm64/cursor-reh-darwin-arm64.tar.gz
Resolving downloads.cursor.com (downloads.cursor.com)... 
2026-08-27 21:27:04.787 [info] (ssh_tunnel) stderr: 104.18.17.128, 104.18.16.128, 2606:4700::6812:1180, ...
Connecting to downloads.cursor.com (downloads.cursor.com)|104.18.17.128|:443... 
2026-08-27 21:27:04.913 [info] (ssh_tunnel) stderr: connected.

2026-08-27 21:27:04.967 [info] (ssh_tunnel) stderr: HTTP request sent, awaiting response... 
2026-08-27 21:27:05.182 [info] (ssh_tunnel) stderr: 200 OK
Length: 102991277 (98M) [application/gzip]
Saving to: ‘cursor-server-0707d8eb-96e3-444f-977f-9b88bca19e4a.tar.gz’


cursor-server-0707d   0%[                    ]       0  --.-KB/s               
2026-08-27 21:27:05.555 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   0%[                    ] 324,13K   878KB/s               
2026-08-27 21:27:05.754 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   1%[                    ]   1,72M  3,00MB/s               
2026-08-27 21:27:06.170 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   3%[                    ]   2,97M  3,78MB/s               
2026-08-27 21:27:06.190 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   4%[                    ]   4,41M  4,39MB/s               
2026-08-27 21:27:06.386 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   5%[>                   ]   5,44M  4,52MB/s               
2026-08-27 21:27:06.619 [info] (ssh_tunnel) stderr: 
cursor-server-0707d   7%[>                   ]   7,17M  4,99MB/s               
2026-08-27 21:27:06.819 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  10%[=>                  ]  10,08M  6,15MB/s               
2026-08-27 21:27:07.028 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  11%[=>                  ]  11,58M  6,28MB/s               
2026-08-27 21:27:07.264 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  13%[=>                  ]  13,56M  6,51MB/s               
2026-08-27 21:27:07.480 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  14%[=>                  ]  14,56M  6,34MB/s               
2026-08-27 21:27:07.757 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  18%[==>                 ]  18,07M  7,22MB/s               
2026-08-27 21:27:07.930 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  20%[===>                ]  20,23M  7,39MB/s               
2026-08-27 21:27:08.127 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  22%[===>                ]  22,16M  7,52MB/s               
2026-08-27 21:27:08.333 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  24%[===>                ]  24,38M  7,75MB/s    eta 10s    
2026-08-27 21:27:08.534 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  27%[====>               ]  27,02M  8,07MB/s    eta 10s    
2026-08-27 21:27:08.770 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  28%[====>               ]  27,66M  7,71MB/s    eta 10s    
2026-08-27 21:27:08.974 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  31%[=====>              ]  31,35M  8,56MB/s    eta 10s    
2026-08-27 21:27:09.196 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  34%[=====>              ]  33,94M  9,46MB/s    eta 10s    
2026-08-27 21:27:09.370 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  37%[======>             ]  36,56M  9,71MB/s    eta 7s     
2026-08-27 21:27:09.572 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  39%[======>             ]  39,23M  10,3MB/s    eta 7s     
2026-08-27 21:27:09.772 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  40%[=======>            ]  39,98M  10,2MB/s    eta 7s     
2026-08-27 21:27:10.224 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  41%[=======>            ]  40,45M  8,99MB/s    eta 7s     
2026-08-27 21:27:10.432 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  44%[=======>            ]  44,11M  9,41MB/s    eta 6s     
2026-08-27 21:27:10.652 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  45%[========>           ]  45,03M  9,21MB/s    eta 6s     
2026-08-27 21:27:10.900 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  50%[=========>          ]  49,71M  10,1MB/s    eta 6s     
2026-08-27 21:27:11.145 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  51%[=========>          ]  50,44M  9,42MB/s    eta 6s     
2026-08-27 21:27:11.347 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  55%[==========>         ]  54,81M  10,0MB/s    eta 6s     
2026-08-27 21:27:11.615 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  58%[==========>         ]  57,75M  10,4MB/s    eta 4s     
2026-08-27 21:27:11.816 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  59%[==========>         ]  58,20M  9,63MB/s    eta 4s     
2026-08-27 21:27:12.017 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  61%[===========>        ]  60,37M  9,80MB/s    eta 4s     
2026-08-27 21:27:12.381 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  62%[===========>        ]  61,19M  8,98MB/s    eta 4s     
2026-08-27 21:27:12.743 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  67%[============>       ]  66,36M  9,24MB/s    eta 4s     
2026-08-27 21:27:12.950 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  70%[=============>      ]  68,76M  9,23MB/s    eta 4s     
2026-08-27 21:27:13.177 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  70%[=============>      ]  69,05M  8,61MB/s    eta 4s     
2026-08-27 21:27:13.366 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  70%[=============>      ]  69,47M  8,01MB/s    eta 4s     
2026-08-27 21:27:13.623 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  72%[=============>      ]  70,78M  8,00MB/s    eta 4s     
2026-08-27 21:27:13.822 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  74%[=============>      ]  73,16M  9,09MB/s    eta 3s     
2026-08-27 21:27:14.024 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  76%[==============>     ]  75,01M  8,53MB/s    eta 3s     
2026-08-27 21:27:14.223 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  78%[==============>     ]  77,45M  8,39MB/s    eta 3s     
2026-08-27 21:27:14.424 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  81%[===============>    ]  79,94M  8,58MB/s    eta 3s     
2026-08-27 21:27:14.627 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  84%[===============>    ]  82,84M  9,18MB/s    eta 3s     
2026-08-27 21:27:14.831 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  87%[================>   ]  85,55M  8,88MB/s    eta 1s     
2026-08-27 21:27:15.181 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  90%[=================>  ]  88,63M  9,30MB/s    eta 1s     
2026-08-27 21:27:15.237 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  93%[=================>  ]  91,94M  9,87MB/s    eta 1s     
2026-08-27 21:27:15.435 [info] (ssh_tunnel) stderr: 
cursor-server-0707d  97%[==================> ]  95,91M  10,4MB/s    eta 1s     
2026-08-27 21:27:15.550 [info] (ssh_tunnel) stderr: 
cursor-server-0707d 100%[===================>]  98,22M  11,0MB/s    in 10s     


2026-08-27 21:27:15.551 [info] (ssh_tunnel) stderr: 2026-08-27 21:27:15 (9,47 MB/s) - ‘cursor-server-0707d8eb-96e3-444f-977f-9b88bca19e4a.tar.gz’ saved [102991277/102991277]


2026-08-27 21:27:15.559 [info] (ssh_tunnel) stdout: Extracting server contents from cursor-server-0707d8eb-96e3-444f-977f-9b88bca19e4a.tar.gz

2026-08-27 21:27:15.561 [info] (ssh_tunnel) stdout: Extracting...

2026-08-27 21:27:20.203 [info] (ssh_tunnel) stdout: Checking node executable

2026-08-27 21:27:21.833 [info] (ssh_tunnel) stdout: v22.22.1

2026-08-27 21:27:22.009 [info] (ssh_tunnel) stdout: Cleaning up old-style stale build multiplex-server

2026-08-27 21:27:22.044 [info] (ssh_tunnel) stdout: Deleting trashed stale builds in /Users/nils/.cursor-server/.stale-builds-trash in the background

2026-08-27 21:27:22.053 [info] (ssh_tunnel) stdout: Checking for running multiplex server: /Users/nils/.cursor-server/bin/multiplex-server/e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74.js

2026-08-27 21:27:22.141 [info] (ssh_tunnel) stdout: Running multiplex server: 

2026-08-27 21:27:22.152 [info] (ssh_tunnel) stdout: Creating multiplex server token file /tmp/cursor-remote-multiplex.token.fca684bc38e9a0058d7381c5087ec5a1.e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74

2026-08-27 21:27:22.172 [info] (ssh_tunnel) stdout: Creating directory for multiplex server: /Users/nils/.cursor-server/bin/multiplex-server

2026-08-27 21:27:22.184 [info] (ssh_tunnel) stdout: Writing multiplex server script to /Users/nils/.cursor-server/bin/multiplex-server/e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74.js

2026-08-27 21:27:22.192 [info] (ssh_tunnel) stdout: Starting multiplex server: /Users/nils/.cursor-server/bin/darwin-arm64/8f2a112cb2845a97b75fd932ea5c470579ca4060/node /Users/nils/.cursor-server/bin/multiplex-server/e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74.js 34f6cacc-2336-4cb1-ba80-28de1921c4a0 0

2026-08-27 21:27:22.199 [info] (ssh_tunnel) stdout: Multiplex server started with PID 345 and wrote pid to file /tmp/cursor-remote-multiplex.pid.fca684bc38e9a0058d7381c5087ec5a1.e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74
Reading multiplex server token file /tmp/cursor-remote-multiplex.token.fca684bc38e9a0058d7381c5087ec5a1.e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74

2026-08-27 21:27:22.199 [info] (ssh_tunnel) stdout: Multiplex server token file found

2026-08-27 21:27:22.204 [info] (ssh_tunnel) stdout: Reading multiplex server log file /tmp/cursor-remote-multiplex.log.fca684bc38e9a0058d7381c5087ec5a1.e0e6952a313d583840d50b387ab40c7bba7e66b79d95be1f22b3e7fc0706ae74

2026-08-27 21:27:22.758 [info] (ssh_tunnel) stdout: Checking for code servers

2026-08-27 21:27:22.852 [info] (ssh_tunnel) stdout: Code server script is not running

2026-08-27 21:27:22.859 [info] (ssh_tunnel) stdout: Creating code server token file /tmp/cursor-remote-code.token.fca684bc38e9a0058d7381c5087ec5a1

2026-08-27 21:27:22.867 [info] (ssh_tunnel) stdout: Starting code server script /Users/nils/.cursor-server/bin/darwin-arm64/8f2a112cb2845a97b75fd932ea5c470579ca4060/bin/cursor-server --start-server --host 127.0.0.1 --port 0 --install-extension ms-dotnettools.csharp --install-extension dkundel.vscode-new-file --install-extension sleistner.vscode-fileutils --install-extension editorconfig.editorconfig --connection-token-file /tmp/cursor-remote-code.token.fca684bc38e9a0058d7381c5087ec5a1 --telemetry-level off --enable-remote-auto-shutdown --accept-server-license-terms &> /tmp/cursor-remote-code.log.fca684bc38e9a0058d7381c5087ec5a1 &

2026-08-27 21:27:22.874 [info] (ssh_tunnel) stdout: Code server started with PID 416 and wrote pid to file /tmp/cursor-remote-code.pid.fca684bc38e9a0058d7381c5087ec5a1

2026-08-27 21:27:22.879 [info] (ssh_tunnel) stdout: Code server log file is /tmp/cursor-remote-code.log.fca684bc38e9a0058d7381c5087ec5a1

2026-08-27 21:27:23.432 [info] (ssh_tunnel) stdout: 72669923e4fe5094fd488288: start
exitCode==0==
nodeExecutable==/Users/nils/.cursor-server/bin/darwin-arm64/8f2a112cb2845a97b75fd932ea5c470579ca4060/node==
errorMessage====
isFatalError==false==
multiplexListeningOn==52226==
multiplexConnectionToken==34f6cacc-2336-4cb1-ba80-28de1921c4a0==
codeListeningOn==52246==
codeConnectionToken==6d869acd-61ce-4ee1-9abd-0a4c71c757ab==
detectedPlatform==darwin==
arch==arm64==
osVersion==macOS 26.6.2==
osVersionFormat====
osName====
osVersionId====
osId====
kernelVersion==25.6.0==
SSH_AUTH_SOCK==/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock==
DISPLAY====

2026-08-27 21:27:23.455 [info] (ssh_tunnel) stdout: Unlocking /tmp/cursor-remote-lock.fca684bc38e9a0058d7381c5087ec5a1

2026-08-27 21:27:23.469 [info] (ssh_tunnel) stdout: 72669923e4fe5094fd488288: end
 
***********************************************************************
* This terminal is used to establish and maintain the SSH connection. *
* Closing this terminal will terminate the connection and disconnect  *
* Cursor from the remote server.                                      *
***********************************************************************

2026-08-27 21:27:23.470 [info] Server install command exit code:  0
2026-08-27 21:27:23.471 [info] Deleting local script /var/folders/7w/r3zd6mzj6jngg60zxf7q383h0000gn/T/cursor_remote_install_9770acd6-6f51-459c-87b2-8f0602ad25f4.sh
2026-08-27 21:27:23.471 [info] [forwarding][code] creating new forwarding server
2026-08-27 21:27:23.471 [info] [forwarding][code] server listening on 127.0.0.1:61754
2026-08-27 21:27:23.471 [info] [forwarding][code] Prepared server
2026-08-27 21:27:23.472 [info] [remote-ssh] codeListeningOn (transport=socks; local=127.0.0.1:61754) codeConnectionToken: 6d869acd-61ce-4ee1-9abd-0a4c71c757ab
2026-08-27 21:27:23.472 [info] [forwarding][multiplex] creating new forwarding server
2026-08-27 21:27:23.472 [info] [forwarding][multiplex] server listening on 127.0.0.1:61755
2026-08-27 21:27:23.472 [info] [forwarding][multiplex] Prepared server
2026-08-27 21:27:23.472 [info] [remote-ssh] multiplexListeningOn (transport=socks; local=127.0.0.1:61755) multiplexConnectionToken: 34f6cacc-2336-4cb1-ba80-28de1921c4a0
2026-08-27 21:27:23.472 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:27:23.472 [info] [gpg-forwarding] GPG agent forwarding is disabled in settings
2026-08-27 21:27:23.472 [info] [remote-ssh] Resolved exec server. Transport: socks
2026-08-27 21:27:23.472 [info] [remote-ssh] Resolved authority: {"host":"127.0.0.1","port":61754,"connectionToken":"6d869acd-61ce-4ee1-9abd-0a4c71c757ab","extensionHostEnv":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"}}. Transport: socks
2026-08-27 21:27:23.474 [info] [remote-ssh] Setting environment variable SSH_AUTH_SOCK=/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock
2026-08-27 21:27:23.474 [info] Setting up 0 default forwarded ports
2026-08-27 21:27:23.475 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][39abfcec-324b-47ee-9d7d-fad52bb53f63] received connection request
2026-08-27 21:27:23.475 [info] [command][2615ae92-f841-4726-936b-a103713ae128] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"2615ae92-f841-4726-936b-a103713ae128"}
2026-08-27 21:27:23.486 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][39abfcec-324b-47ee-9d7d-fad52bb53f63] forwarding established
2026-08-27 21:27:23.492 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][7491e30d-6f31-4acf-87a6-d9bb2769b6e5] received connection request
2026-08-27 21:27:23.498 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][7491e30d-6f31-4acf-87a6-d9bb2769b6e5] forwarding established
2026-08-27 21:27:23.520 [info] [command][2615ae92-f841-4726-936b-a103713ae128] Process exited with code 0
2026-08-27 21:27:23.521 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][39abfcec-324b-47ee-9d7d-fad52bb53f63] remote connection closed
2026-08-27 21:27:23.521 [info] [command][2615ae92-f841-4726-936b-a103713ae128] Socket close event received
2026-08-27 21:27:24.414 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][dd189096-92e3-4a29-bc0e-6e0a75607f3f] received connection request
2026-08-27 21:27:24.419 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][dd189096-92e3-4a29-bc0e-6e0a75607f3f] forwarding established
2026-08-27 21:27:24.576 [info] Saved platform macOS for remote host kMini
2026-08-27 21:27:27.298 [info] [tunnel-forwarding][localhost:62863 -> 127.0.0.1:62863] server listening
2026-08-27 21:27:27.298 [info] Cross binding to [::1]:62863. Originally bound to 127.0.0.1:62863
2026-08-27 21:27:27.299 [info] [tunnel-forwarding][::1:62863 -> 127.0.0.1:62863] server listening
2026-08-27 21:27:27.306 [info] [tunnel-forwarding][localhost:7422 -> 127.0.0.1:7422] server listening
2026-08-27 21:27:27.306 [info] Cross binding to [::1]:7422. Originally bound to 127.0.0.1:7422
2026-08-27 21:27:27.306 [info] [tunnel-forwarding][::1:7422 -> 127.0.0.1:7422] server listening
2026-08-27 21:27:31.915 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][63214cb7-a1a0-420c-861d-317791744ae2] received connection request
2026-08-27 21:27:31.924 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][63214cb7-a1a0-420c-861d-317791744ae2] forwarding established
2026-08-27 21:27:36.791 [info] [forwarding][code][127.0.0.1:61754 -> socks 127.0.0.1:61577 -> 127.0.0.1:52246][63214cb7-a1a0-420c-861d-317791744ae2] remote connection closed
2026-08-27 21:28:23.522 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:28:23.523 [info] [command][c18ae07a-a2fe-49bb-9c88-a06a55c04e16] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"c18ae07a-a2fe-49bb-9c88-a06a55c04e16"}
2026-08-27 21:28:23.523 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][da0f9578-1b81-4f22-ba35-b4dad919f665] received connection request
2026-08-27 21:28:23.528 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][da0f9578-1b81-4f22-ba35-b4dad919f665] forwarding established
2026-08-27 21:28:23.543 [info] [command][c18ae07a-a2fe-49bb-9c88-a06a55c04e16] Process exited with code 0
2026-08-27 21:28:23.543 [info] [command][c18ae07a-a2fe-49bb-9c88-a06a55c04e16] Socket close event received
2026-08-27 21:28:23.543 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][da0f9578-1b81-4f22-ba35-b4dad919f665] remote connection closed
2026-08-27 21:29:23.544 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:29:23.546 [info] [command][f6eca8fc-a4c5-4e38-91a9-50b5a091c3a7] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"f6eca8fc-a4c5-4e38-91a9-50b5a091c3a7"}
2026-08-27 21:29:23.546 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6868e7e3-e545-47d8-b6c8-2ec74a323980] received connection request
2026-08-27 21:29:23.551 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6868e7e3-e545-47d8-b6c8-2ec74a323980] forwarding established
2026-08-27 21:29:23.570 [info] [command][f6eca8fc-a4c5-4e38-91a9-50b5a091c3a7] Process exited with code 0
2026-08-27 21:29:23.570 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6868e7e3-e545-47d8-b6c8-2ec74a323980] remote connection closed
2026-08-27 21:29:23.570 [info] [command][f6eca8fc-a4c5-4e38-91a9-50b5a091c3a7] Socket close event received
2026-08-27 21:30:23.586 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:30:23.587 [info] [command][f9dd43fe-78d0-429d-b755-acf9dbe5d781] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"f9dd43fe-78d0-429d-b755-acf9dbe5d781"}
2026-08-27 21:30:23.587 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][5797fa77-4334-43ab-92c2-3099e6a8356c] received connection request
2026-08-27 21:30:23.593 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][5797fa77-4334-43ab-92c2-3099e6a8356c] forwarding established
2026-08-27 21:30:23.609 [info] [command][f9dd43fe-78d0-429d-b755-acf9dbe5d781] Process exited with code 0
2026-08-27 21:30:23.609 [info] [command][f9dd43fe-78d0-429d-b755-acf9dbe5d781] Socket close event received
2026-08-27 21:30:23.609 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][5797fa77-4334-43ab-92c2-3099e6a8356c] remote connection closed
2026-08-27 21:31:23.625 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:31:23.626 [info] [command][b05c5230-1318-4574-94ae-2dbb3aa6548f] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"b05c5230-1318-4574-94ae-2dbb3aa6548f"}
2026-08-27 21:31:23.626 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][437dd68d-ab7e-4bb8-bb3e-ceed35ec0acc] received connection request
2026-08-27 21:31:23.630 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][437dd68d-ab7e-4bb8-bb3e-ceed35ec0acc] forwarding established
2026-08-27 21:31:23.645 [info] [command][b05c5230-1318-4574-94ae-2dbb3aa6548f] Process exited with code 0
2026-08-27 21:31:23.645 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][437dd68d-ab7e-4bb8-bb3e-ceed35ec0acc] remote connection closed
2026-08-27 21:31:23.646 [info] [command][b05c5230-1318-4574-94ae-2dbb3aa6548f] Socket close event received
2026-08-27 21:32:23.646 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:32:23.647 [info] [command][f7e9abab-161a-4083-9aff-0060f21bc3e5] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"f7e9abab-161a-4083-9aff-0060f21bc3e5"}
2026-08-27 21:32:23.647 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2747588e-775f-4a16-b82f-edec623c9ad6] received connection request
2026-08-27 21:32:23.657 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2747588e-775f-4a16-b82f-edec623c9ad6] forwarding established
2026-08-27 21:32:23.670 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2747588e-775f-4a16-b82f-edec623c9ad6] remote connection closed
2026-08-27 21:32:23.671 [info] [command][f7e9abab-161a-4083-9aff-0060f21bc3e5] Process exited with code 0
2026-08-27 21:32:23.671 [info] [command][f7e9abab-161a-4083-9aff-0060f21bc3e5] Socket close event received
2026-08-27 21:33:23.675 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:33:23.676 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2daf9199-083c-448a-a5bf-4dd3ba815984] received connection request
2026-08-27 21:33:23.677 [info] [command][51894831-8861-4693-a33b-f47a8598a888] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"51894831-8861-4693-a33b-f47a8598a888"}
2026-08-27 21:33:23.682 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2daf9199-083c-448a-a5bf-4dd3ba815984] forwarding established
2026-08-27 21:33:23.696 [info] [command][51894831-8861-4693-a33b-f47a8598a888] Process exited with code 0
2026-08-27 21:33:23.696 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][2daf9199-083c-448a-a5bf-4dd3ba815984] remote connection closed
2026-08-27 21:33:23.696 [info] [command][51894831-8861-4693-a33b-f47a8598a888] Socket close event received
2026-08-27 21:34:23.696 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:34:23.697 [info] [command][2a60f7d8-2ebc-4b58-920b-771dfc19e1a3] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"2a60f7d8-2ebc-4b58-920b-771dfc19e1a3"}
2026-08-27 21:34:23.697 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6ecc06e4-1fe3-42d1-86a4-ca23993b04f3] received connection request
2026-08-27 21:34:23.702 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6ecc06e4-1fe3-42d1-86a4-ca23993b04f3] forwarding established
2026-08-27 21:34:23.717 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][6ecc06e4-1fe3-42d1-86a4-ca23993b04f3] remote connection closed
2026-08-27 21:34:23.717 [info] [command][2a60f7d8-2ebc-4b58-920b-771dfc19e1a3] Process exited with code 0
2026-08-27 21:34:23.717 [info] [command][2a60f7d8-2ebc-4b58-920b-771dfc19e1a3] Socket close event received
2026-08-27 21:35:23.721 [info] [remote-ssh] Pinging remote server via 127.0.0.1:61755...
2026-08-27 21:35:23.722 [info] [command][64a49dc6-629f-4d78-a707-5e6bc03e3c69] Sending command request: {"command":"echo","args":["1"],"env":{"SSH_AUTH_SOCK":"/tmp/cursor-remote-ssh-auth-sock-e0a541c1-7c56-4434-af87-383f5da6e197.sock"},"token":"34f6cacc-2336-4cb1-ba80-28de1921c4a0","id":"64a49dc6-629f-4d78-a707-5e6bc03e3c69"}
2026-08-27 21:35:23.722 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][0c72c831-4d90-4325-9335-441d8cc8a8a1] received connection request
2026-08-27 21:35:23.728 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][0c72c831-4d90-4325-9335-441d8cc8a8a1] forwarding established
2026-08-27 21:35:23.745 [info] [forwarding][multiplex][127.0.0.1:61755 -> socks 127.0.0.1:61577 -> 127.0.0.1:52226][0c72c831-4d90-4325-9335-441d8cc8a8a1] remote connection closed
2026-08-27 21:35:23.745 [info] [command][64a49dc6-629f-4d78-a707-5e6bc03e3c69] Process exited with code 0
2026-08-27 21:35:23.745 [info] [command][64a49dc6-629f-4d78-a707-5e6bc03e3c69] Socket close event received

Looks like same issue with cursor-agent over SSH terminal

I had agent investigate on the remote host, here is what it responded:

I inspected kMini’s ~/.cursor-server/data/logs/20260827T212723. The Remote-SSH control transport is healthy: its periodic echo 1requests complete in ~15–25 ms. The remote extension host activates anysphere.cursor-agent-exec successfully, but Cursor Agent Exec.log contains only startup/rule loading and ends at cursorRulesService.getAllCursorRules; there is no record of a Shell/Read/Glob request being dispatched. This confirms the requested agent tool never reaches the remote executor, before Git or any child process could run. remoteagent.log also has repeated “No ptyHost heartbeat after 6 seconds” warnings. There is no “Cursor Agent Host” output channel in this Remote-SSH window. Agents work locally on both machines.

and

Confirmed: there is no “Cursor Agent Host” channel in the Remote SSH window. Agents work in local windows on both Macs, including this kMini GUI session.

On the host, Remote-SSH multiplex pings succeed in ~20ms. cursor-agent-exec activates, but Cursor Agent Exec.log never records a tool dispatch. remoteagent.log has “No ptyHost heartbeat after 6 seconds.” Same hang with cursor-agent in an SSH terminal (not only the IDE agent).

Hey @koliyo, thanks for adding more details! Super interesting.

Since the standalone CLI also hangs over SSH, but agents work when you are logged into kMini directly, this no longer looks specific to the Remote SSH window. It points at something on kMini that treats SSH sessions differently from a logged-in GUI session.

The prime suspect is macOS power management. A headless Mac can keep answering network traffic while idle (which is why the connection pings stay fast) yet suspend or heavily throttle background work, and the repeated “No ptyHost heartbeat” warnings in your logs are a typical sign of that.

Could you try this on kMini:

  1. In a terminal on kMini, run pmset -g and share the output.
  2. Run caffeinate -dimsu in a spare terminal there and leave it running, then try the agent again from the Remote SSH window and from the CLI.

If agents complete while caffeinate is running, that confirms it, and the durable fix is enabling “Prevent automatic sleeping when the display is off” in System Settings > Energy (or sudo pmset -a sleep 0). If they still hang even with caffeinate running, tell us and we will keep digging!

❯ pmset -g
System-wide power settings:
Currently in use:
 standby              0
 Sleep On Power Button 1
 autorestartatconnect 0
 autorestart          1
 powernap             1
 networkoversleep     0
 disksleep            10
 sleep                1 (sleep prevented by powerd, screensharingd, Amphetamine)
 ttyskeepawake        1
 displaysleep         60 (display sleep prevented by Amphetamine)
 tcpkeepalive         1
 womp                 1

caffinate did not help

I have done some further investigation, and it is possibly due to zsh usage by agents, I use fish but have some lingering old zsh setup that has not been maintained. Here is feedback from agent on that:

Today I ran agent in an SSH terminal (Ghostty → Tailscale → kMini, ttys024, cwd a git repo). Prompt was just “check git status”. The transcript never got a tool result.

On the host, the CLI (2026.08.25-3e8eec8) spawned:

zsh -o extendedglob -ilcdump_zsh_state

That child sat for minutes (other leftover sessions for 6+ hours) inside run_init_scripts / source ~/.zshrc, blocked on write() to a unix socket back to the agent. stdin is /dev/null. CPU ~0. My zshrc loads antigen + oh-my-zsh. The same zsh -ilc with a drained stdout finishes in ~0.2s. So this looks like a pipe deadlock: snapshot stdout is not being read, zsh blocks, the first tool never runs. Git is not involved yet.

Two older agent processes from this morning (one still on 2026.01.28) are stuck the same way, also with /tmp/cursor-askpass-*.sock.

Yes there was something going on with my old zsh setup. As I said I run fish since a while back, and have old zsh config, and agents seem to use zsh? I told my agent to clean up my zsh config and optimize it for agent usage. I got a really scaled down zsh config, and now remote ssh agents work!

Here is final report from my agent on the SSH remote host:


Resolved on my side (CLI over SSH). Sharing the verified cause in case it also explains the IDE Remote-SSH hang.

What I thought it was

Git / GCM / Keychain / integrated askpass. That was wrong for the hang I can see on the host. git.useIntegratedAskPass: false did not help (as Colin said). Integrated-terminal git was always fine.

What staff already saw (IDE Remote SSH)

Request ID 7145adc7-063a-4d72-a7a2-0e4b41210fef: the model returns; the tool never starts on kMini. There is no “Cursor Agent Host” channel. Agents work in local Cursor windows. Remote-SSH multiplex pings are fast; Cursor Agent Exec.log never records a Shell/Read/Glob; remoteagent.log had No ptyHost heartbeat after 6 seconds.

I still treat that IDE path as a product bug to keep on your list (execution never dispatched / spinner instead of an error). I did not re-verify that specific window after the fix below.

Verified culprit (CLI agent over SSH)

Same user-visible hang: “check git status”, spinner forever, no tool result.

On the host, agent (2026.08.25-3e8eec8) immediately spawned:

zsh -o extendedglob -ilc   # dump_zsh_state

That child sat for minutes (other leftover sessions for 6+ hours). sample showed it stuck in run_init_scriptssource ~/.zshrcwrite() to a unix socket back to the agent. stdin was /dev/null. CPU ~0.

I do not use zsh day to day (fish). I still had an old .zshrc that loaded antigen + oh-my-zsh (git, brew, docker, themes, completions). That init prints a lot and dumps a huge function set. The same zsh -ilc with a drained stdout finished in ~0.2s. Under the agent, stdout was not being read, the pipe filled, zsh blocked, and the first tool never ran. Git was never started.

So: CLI hang = zsh snapshot deadlock, not git, not GCM.

/tmp/cursor-askpass-*.sock was present; that was secondary.

Resolution (verified)

Replaced .zshrc with a silent, tiny config (brew PATH + cargo, no antigen/oh-my-zsh, no prompt unless there is a real TTY). Left the old file as a backup.

zsh -ilc now finishes in ~60ms and dumps 0 functions (was ~105k of oh-my-zsh). After that, CLI agent over SSH works — I verified a real session.

Takeaway for Cursor

  1. CLI (and possibly IDE agent shells) should not run zsh -ilc against a full interactive rc, or must drain stdout while snapshotting and time out. A full pipe + unread socket looks exactly like “tools hang forever.”
  2. Over Remote SSH, a failed/stuck executor should error, not spin.
  3. Docs: if the user’s login shell is fish but agent still snapshots zsh, a leftover .zshrc will bite them.

Happy to grab a fresh IDE Remote-SSH request ID if you still want a trace on that path. For CLI-over-SSH, this is closed on my machine.


Hey @koliyo, thanks for following through on this and sharing the full write-up.

I verified the mechanism on our side: when a shell startup file prints a large amount of output, the snapshot the agent takes of the shell environment can stall before the first command ever runs, and right now that surfaces as an endless spinner instead of an error.

I’ve flagged this to the team so agent shells handle chatty startup files gracefully and fail fast instead of hanging. The same cause most likely explains what you saw in the Remote SSH window too, so no need for another trace unless it comes back after your cleanup.