Agent only works on first chat session

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Reproducible Failure: In the same remote (SSH) workspace, the agent successfully executes shell commands only in the first chat window opened. Subsequent chat windows fail 100% of the time, likely due to a corruption of the shared remote agent environment/process pool.

Opening a new folder (project) makes Agent shell commands work again for first window only, but opening new chat window and asking it to run pwd, results in 100% failure rate. pwd command just returns failure, only the command is echoed, but not executed.

Renaming folder also makes Agent shell commands work again for first chat window only.

Does not happen in WSL or Local session.

This started happening after latest Cursor update. Enabling legacy terminal does not fix the issue.

Remote SSH host info:

Arch Linux
Bash Shell

Fails on other SSH remotes as well, tested with another Arch and Ubuntu.

If I close the folder, and ask Agent to run pwd, it works on first and all future chat windows.

Steps to Reproduce

  1. Open a folder using Remote SSH
  2. Ask agent to run pwd on first chat window - works
  3. Ask agent to run pwd on second chat windows - 100% failure
  4. Ask agent to run pwd on first chat window again - works

Expected Behavior

Err, supposed to run successfully? :slight_smile:

Screenshots / Screen Recordings

Operating System

Windows 10/11

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.1.39 (user setup)
VSCode Version: 1.105.1
Commit: 60d42bed27e5775c43ec0428d8c653c49e58e260
Date: 2025-11-27T02:30:49.286Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.26100

For AI issues: which model did you use?

Auto

Additional Information

Output from dev console, you can see first successful run execute and end successfully. Then opening a new chat window results in failure. Returning to first windows, and asking it to run pwd again works.

workbench.desktop.main.js:55 WARN ToolCallEventService: Tracked tool call start - tool_545169f5-d00b-41cc-9d34-bcb140c1f45 (run_terminal_cmd)
warn @ workbench.desktop.main.js:55
warn @ workbench.desktop.main.js:55
warn @ workbench.desktop.main.js:8932
trackToolCallStart @ workbench.desktop.main.js:2942
(anonymous) @ workbench.desktop.main.js:2974
runTool @ workbench.desktop.main.js:2974
toolWrappedStream @ workbench.desktop.main.js:2974
await in toolWrappedStream
(anonymous) @ workbench.desktop.main.js:4064
handleStreamComposer @ workbench.desktop.main.js:2786
streamResponse @ workbench.desktop.main.js:6996
(anonymous) @ workbench.desktop.main.js:7143
(anonymous) @ workbench.desktop.main.js:7145
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:2974
(anonymous) @ workbench.desktop.main.js:7143
processCodeBlocks @ workbench.desktop.main.js:2900
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:4064
await in submitChatMaybeAbortCurrent
(anonymous) @ workbench.desktop.main.js:52
Wrr @ workbench.desktop.main.js:52
K6d @ workbench.desktop.main.js:52
n.value @ workbench.desktop.main.js:52
To @ workbench.desktop.main.js:6208
await in To
onSubmit @ workbench.desktop.main.js:6208
de @ workbench.desktop.main.js:6135
onSubmit @ workbench.desktop.main.js:6135
handleSubmit @ workbench.desktop.main.js:6029
(anonymous) @ workbench.desktop.main.js:6029
Gal @ workbench.desktop.main.js:444
(anonymous) @ workbench.desktop.main.js:444
jal @ workbench.desktop.main.js:444
_X @ workbench.desktop.main.js:444
update @ workbench.desktop.main.js:446
Gal @ workbench.desktop.main.js:444
du @ workbench.desktop.main.js:444
vjd @ workbench.desktop.main.js:444
(anonymous) @ workbench.desktop.main.js:444
workbench.desktop.main.js:55 WARN ToolCallEventService: Tracked tool call end - tool_545169f5-d00b-41cc-9d34-bcb140c1f45
warn @ workbench.desktop.main.js:55
warn @ workbench.desktop.main.js:55
warn @ workbench.desktop.main.js:8932
trackToolCallEnd @ workbench.desktop.main.js:2942
(anonymous) @ workbench.desktop.main.js:2974
await in (anonymous)
runTool @ workbench.desktop.main.js:2974
toolWrappedStream @ workbench.desktop.main.js:2974
await in toolWrappedStream
(anonymous) @ workbench.desktop.main.js:4064
handleStreamComposer @ workbench.desktop.main.js:2786
streamResponse @ workbench.desktop.main.js:6996
(anonymous) @ workbench.desktop.main.js:7143
(anonymous) @ workbench.desktop.main.js:7145
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:7139
(anonymous) @ workbench.desktop.main.js:2974
(anonymous) @ workbench.desktop.main.js:7143
processCodeBlocks @ workbench.desktop.main.js:2900
submitChatMaybeAbortCurrent @ workbench.desktop.main.js:4064
await in submitChatMaybeAbortCurrent
(anonymous) @ workbench.desktop.main.js:52
Wrr @ workbench.desktop.main.js:52
K6d @ workbench.desktop.main.js:52
n.value @ workbench.desktop.main.js:52
To @ workbench.desktop.main.js:6208
await in To
onSubmit @ workbench.desktop.main.js:6208
de @ workbench.desktop.main.js:6135
onSubmit @ workbench.desktop.main.js:6135
handleSubmit @ workbench.desktop.main.js:6029
(anonymous) @ workbench.desktop.main.js:6029
Gal @ workbench.desktop.main.js:444
(anonymous) @ workbench.desktop.main.js:444
jal @ workbench.desktop.main.js:444
_X @ workbench.desktop.main.js:444
update @ workbench.desktop.main.js:446
Gal @ workbench.desktop.main.js:444
du @ workbench.desktop.main.js:444
vjd @ workbench.desktop.main.js:444
(anonymous) @ workbench.desktop.main.js:444
workbench.desktop.main.js:55 ERR [Extension Host] [otel.error] {“stack”:“OTLPExporterError: Bad Request\n\tat IncomingMessage. (/home/peelo/.cursor-server/bin/60d42bed27e5775c43ec0428d8c653c49e58e260/node_modules/@opentelemetry/otlp-exporter-base/build/src/transport/http-transport-utils.js:52:31)\n\tat IncomingMessage.emit (node:events:530:35)\n\tat endReadableNT (node:internal/streams/readable:1698:12)\n\tat process.processTicksAndRejections (node:internal/process/task_queues:82:21)”,“message”:“Bad Request”,“code”:“400”,“name”:“OTLPExporterError”,“data”:“{"error":"Trace spans collection is not enabled for this user"}”}
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:8932
bXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
FileReader
t @ workbench.desktop.main.js:8932
Lzf._socketMessageListener @ workbench.desktop.main.js:8932
workbench.desktop.main.js:6299 [Extension Host] [otel.error] {“stack”:“OTLPExporterError: Bad Request\n\tat IncomingMessage. (/home/peelo/.cursor-server/bin/60d42bed27e5775c43ec0428d8c653c49e58e260/node_modules/@opentelemetry/otlp-exporter-base/build/src/transport/http-transport-utils.js:52:31)\n\tat IncomingMessage.emit (node:events:530:35)\n\tat endReadableNT (node:internal/streams/readable:1698:12)\n\tat process.processTicksAndRejections (node:internal/process/task_queues:82:21)”,“message”:“Bad Request”,“code”:“400”,“name”:“OTLPExporterError”,“data”:“{"error":"Trace spans collection is not enabled for this user"}”}
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
FileReader
t @ workbench.desktop.main.js:8932
Lzf._socketMessageListener @ workbench.desktop.main.js:8932
workbench.desktop.main.js:6299 [Extension Host] rejected promise not handled within 1 second: Error: spawn /usr/bin/bash ENOENT
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
FileReader
t @ workbench.desktop.main.js:8932
Lzf._socketMessageListener @ workbench.desktop.main.js:8932
workbench.desktop.main.js:6299 [Extension Host] stack trace: Error: spawn /usr/bin/bash ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:285:19)
at onErrorNT (node:internal/child_process:483:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
FileReader
t @ workbench.desktop.main.js:8932
Lzf._socketMessageListener @ workbench.desktop.main.js:8932
workbench.desktop.main.js:55 ERR An unknown error occurred. Please consult the log for more details. {errno: -2, code: ‘ENOENT’, syscall: ‘spawn /usr/bin/bash’, path: ‘/usr/bin/bash’, spawnargs: Array(6)}
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:8932
handleUnexpectedError @ workbench.desktop.main.js:8929
(anonymous) @ workbench.desktop.main.js:8929
onUnexpectedError @ workbench.desktop.main.js:27
Wa @ workbench.desktop.main.js:22
$onUnexpectedError @ workbench.desktop.main.js:6313
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
FileReader
t @ workbench.desktop.main.js:8932
Lzf._socketMessageListener @ workbench.desktop.main.js:8932
workbench.desktop.main.js:55 ERR [Extension Host] [otel.error] {“stack”:“OTLPExporterError: Bad Request\n\tat IncomingMessage. (/home/peelo/.cursor-server/bin/60d42bed27e5775c43ec0428d8c653c49e58e260/node_modules/@opentelemetry/otlp-exporter-base/build/src/transport/http-transport-utils.js:52:31)\n\tat IncomingMessage.emit (node:events:530:35)\n\tat endReadableNT (node:internal/streams/readable:1698:12)\n\tat process.processTicksAndRejections (node:internal/process/task_queues:82:21)”,“message”:“Bad Request”,“code”:“400”,“name”:“OTLPExporterError”,“data”:“{"error":"Trace spans collection is not enabled for this user"}”}
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:8932
bXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
workbench.desktop.main.js:6299 [Extension Host] [otel.error] {“stack”:“OTLPExporterError: Bad Request\n\tat IncomingMessage. (/home/peelo/.cursor-server/bin/60d42bed27e5775c43ec0428d8c653c49e58e260/node_modules/@opentelemetry/otlp-exporter-base/build/src/transport/http-transport-utils.js:52:31)\n\tat IncomingMessage.emit (node:events:530:35)\n\tat endReadableNT (node:internal/streams/readable:1698:12)\n\tat process.processTicksAndRejections (node:internal/process/task_queues:82:21)”,“message”:“Bad Request”,“code”:“400”,“name”:“OTLPExporterError”,“data”:“{"error":"Trace spans collection is not enabled for this user"}”}
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
_receiveMessage @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
acceptChunk @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8932
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
Lzf._fileReader.onload @ workbench.desktop.main.js:8932
workbench.desktop.main.js:55 ERR [Extension Host] Unknown bubble conversation handler: run_terminal_command_v2
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:8932
bXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8976
workbench.desktop.main.js:6299 [Extension Host] Unknown bubble conversation handler: run_terminal_command_v2
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8976
workbench.desktop.main.js:6299 [Extension Host]% {tool: 15, toolIndex: 0, modelCallId: ‘’, toolCallId: ‘tool_1d8bc643-860e-4bc1-9cd8-149dff49ce8’, status: ‘completed’, …}
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8976
workbench.desktop.main.js:55 ERR [Extension Host] Unknown bubble conversation handler: run_terminal_command_v2
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:55
error @ workbench.desktop.main.js:8932
bXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8976
workbench.desktop.main.js:6299 [Extension Host] Unknown bubble conversation handler: run_terminal_command_v2
vXh @ workbench.desktop.main.js:6299
$logExtensionHostMessage @ workbench.desktop.main.js:6299
_doInvokeHandler @ workbench.desktop.main.js:6948
_invokeHandler @ workbench.desktop.main.js:6948
_receiveRequest @ workbench.desktop.main.js:6948
_receiveOneMessage @ workbench.desktop.main.js:6948
(anonymous) @ workbench.desktop.main.js:6948
_deliver @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:49
fire @ workbench.desktop.main.js:6316
(anonymous) @ workbench.desktop.main.js:8976
workbench.desktop.main.js:6299 [Extension Host]% {tool: 15, toolIndex: 0, modelCallId: ‘’, toolCallId: ‘tool_3c6c0626-f8c3-4866-8c9d-416d1877e75’, status: ‘loading’, …}

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Rolling back to 2.1.36 fixed this issue, probably related to other terminal related bugs.

Hey, thanks for the report. Looks like a regression in 2.1.39 (since rolling back to 2.1.36 helps) - ENOENT on /usr/bin/bash in Remote SSH, corruption in shared remote agent process pool, shell commands only work in first chat.

Temporary workaround: Stay on 2.1.36 until fixed; delete ~/.cursor-server on remote host and reconnect; check PATH on host (echo $PATH in Cursor terminal).

Please share:

  • Are you using Anysphere Remote SSH? If you have Microsoft Remote-SSH installed - remove it, install Anysphere Remote SSH, restart Cursor and test again
  • Request ID of failed command run (in chat: top right menu → Copy Request ID)
  • Version of Anysphere Remote SSH extension and exact repro steps after switching extensions
  • Logs: View > Output > Remote - SSH

Let me know if switching to Anysphere Remote SSH helps.