Remote SSH Agent Shell tool loses completion under concurrent code search load

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

In a Remote SSH workspace, when multiple Cursor Agents perform broad code search/indexing while another Agent executes short shell commands, the Shell tool sometimes remains pending even though the command has already completed.

Observed evidence:

  • Shell command printed DONE and end_ts within milliseconds.
  • The command PID disappeared on the remote server.
  • ptyHost stayed alive and no child process remained.
  • /dev/pts count was stable, no PTY leak observed.
  • Cursor extensionHost stayed alive but was under rg/indexing load.
  • remoteagent.log repeatedly showed:
    RequestStore#acceptReply was called without receiving a matching request

Confirmed samples:

  • IDE_MIXED_DIRECT_011: pid=1997257, ppid=1154183, process exited but Shell tool did not complete.
  • IDE_BROAD_SEARCH_DIRECT_002: pid=2019808, ppid=1154183, process exited but Shell tool did not complete.

This suggests the issue is not the shell command, bash, .bashrc, SSH, or PTY process leakage, but likely a Cursor remote/IDE Shell tool completion request-reply mismatch under concurrent search/indexing pressure.

Steps to Reproduce

Steps to Reproduce

  1. Open Cursor on macOS and connect to a large remote Linux workspace via Remote SSH.

  2. Start a server-side observer on the remote machine to monitor:

    • Cursor extensionHost / node processes
    • ptyHost process
    • /dev/pts count
    • short-lived shell command PIDs
    • remoteagent.log
    • indexing / retrieval logs
  3. In Cursor, start multiple Agents that perform broad code searches across a large repository.
    Example workload:

    • Search large source directories with many rg/file-read operations.
    • Trigger indexing/retrieval/git-status activity.
    • Run at least 3-4 Agents concurrently.
  4. At the same time, start another Agent that repeatedly executes short shell commands through the Agent Shell tool.
    Example command:

    printf 'case_id=IDE_BROAD_SEARCH_DIRECT_002\n'
    printf 'type=broad_search_direct\n'
    printf 'pid=%s\n' "$$"
    printf 'ppid=%s\n' "$PPID"
    printf 'pwd=%s\n' "$PWD"
    printf 'start_ts=%s\n' "$(date -Ins)"
    ls -ld /tmp
    date -Ins
    printf 'DONE marker\n'
    printf 'end_ts=%s\n' "$(date -Ins)"
    
    
    
    
    
    

Operating System

MacOS

Version Information

Version: 3.4.20
VSCode Version: 1.105.1
Commit: 0cf8b06883f54e26bb4f0fb8647c9500ccb43310
Date: 2026-05-15T02:26:10.351Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 24.6.0

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Thanks for the post! This lines up with a known bug we have a report open for, and I’ll let you know when it’s sorted out.

A few mitigations that should noticeably cut down on the lost completions while we work on the underlying request/reply mismatch:

  • Prefer the built-in Grep / Codebase search tools over running rg via the Shell tool
  • Broaden .cursorignore to exclude large vendored/build/cache dirs (node_modules, dist, target, .venv, generated output, etc.). Across other Remote-SSH reports we’ve seen, anything that reduces rg/indexing/file-watcher load on the extension host materially reduces these “lost” replies.
  • Run fewer concurrent agents
  • Make sure you’re on the latest Cursor stable, since we’ve shipped a few related Remote-SSH fixes recently.

None of these are a real fix — the request/reply mismatch is on us — but they should buy you a much smoother session in the meantime.

Thank you for your reply, I tried the last three suggestions, I will try the first one