When bandwidth is low, Cursor Remote SSH keeps retrying the download of the latest Cursor Agent

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

On Cursor SSH Remote (Windows client to Linux host), cursor-agent-worker auto-prefetches the Agent CLI from the Cursor download CDN with a hardcoded 120-second timeout. The current linux x64 agent-cli-package.tar.gz is about 171 MiB. The worker fetches the whole archive into memory (arrayBuffer), does not resume, then aborts with AbortError and retries forever. Multiple extensionHost processes can retry in parallel.

On a ~500 KiB/s path (direct and HTTP proxy both measured), one complete download needs about 5-8 minutes, so every attempt fails at 120s after already transferring tens to ~170 MiB. This used about 2.1 GiB in about 6 hours.

The 120s timeout is in cursor-server 3.16.29 through 3.18.9. It got worse because the CLI tarball grew (extracted size ~220-250 MiB on older builds vs ~522 MiB for 2026.09.02-c22c1a3). There is no documented timeout or max-retry setting.

Steps to Reproduce

  1. Use Cursor 3.18.9 on Windows with Remote SSH to a Linux x64 host.
  2. Make sure the worker cache does not contain versions/BUILD_ID/cursor-agent
    under ~/.cursor-server/data/User/globalStorage/anysphere.cursor-agent-worker/agent-cli/.local/share/cursor-agent/versions/
  3. Open a remote folder so cursor-agent-worker activates.
  4. Watch ~/.cursor-server/data/logs/SESSION/exthost*/anysphere.cursor-agent-worker/*.log

Observed:

  • Resolving installer for linux/x64
  • Downloading Cursor Agent 2026.09.02-c22c1a3
  • exactly ~120s later: Agent CLI prefetch failed: AbortError: This operation was aborted
  • repeats; leftover dirs versions/.tmp-2026.09.02-c22c1a3-*
  • traffic to the CDN path lab/2026.09.02-c22c1a3/linux/x64/agent-cli-package.tar.gz
  • HEAD Content-Length 179684142. Direct curl ~537 KiB/s. Worker needs ~1.4 MiB/s to finish in 120s.

Expected Behavior

Timeout should be long enough for a ~170 MiB package on a slow or proxied link, or be configurable. Support resume or streaming to disk. Cap retries instead of re-downloading the full object forever.

Operating System

Windows 10/11

Version Information

Cursor: 3.18.9
Commit: 2ba48ff3f7514cc4643c52ca9f7b3173d9b66130
Date: 2026-08-27
Client OS: Windows 11
Remote: Linux x64 (cursor-server same commit)
Agent CLI being fetched: 2026.09.02-c22c1a3

Additional Information

Log (exactly 120s):
2026-09-07 14:46:11.442 [info] [cursor-agent-worker] Downloading Cursor Agent 2026.09.02-c22c1a3
2026-09-07 14:48:11.456 [info] [cursor-agent-worker] Agent CLI prefetch failed: AbortError: This operation was aborted

Workaround: download the tarball with curl --max-time 900, extract into the worker versions/2026.09.02-c22c1a3 directory; worker then logs Using cached Cursor Agent. This is cursor-agent-worker prefetch on SSH Remote, not the standalone CLI installer.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @Xiaoxing_Liu, thanks for the detailed report, and for the exact numbers.

You’ve read the behavior correctly: on Remote SSH the agent worker fetches the whole agent package with a fixed two-minute limit and then retries on a schedule, so on a slower link it never completes and keeps re-downloading. That limit isn’t configurable today. I’ve flagged this to the team.

Your workaround (pre-seeding the versions directory) works, but you’ll need to redo it each time a new agent build is published. A more durable option is to point the worker at a CLI you install yourself:

  1. On the remote host, run curl https://cursor.com/install -fsS | bash. The standard installer streams the download with no two-minute limit, and it installs the same build the worker would have downloaded.
  2. Add export CURSOR_AGENT_WORKER_CLI_PATH="$HOME/.local/bin/cursor-agent" to ~/.profile on the remote host. (If you prefer ~/.bashrc, put it above the “not running interactively” early return near the top of the file.)
  3. Disconnect and reconnect the Remote SSH session so the new environment is picked up.

With that variable set, the worker uses your installed binary and skips the download entirely. One thing to know: it will keep using that binary until you update it, so run cursor-agent update occasionally (or on a cron) to stay current. The worker notices the new version on its own within about ten minutes of an update.

Thanks for the confirmation, and for flagging this internally.

A follow-up from later use: this is not limited to the Remote SSH extension. The same prefetch runs on a local Windows Cursor install (cursor-agent-worker, windows/x64 Agent CLI). On a slow link it still hits the fixed ~120s timeout, aborts, and retries the full package, so the download loop also happens on the desktop client.

Could you please pass this Windows-desktop case to the product team as well?