Remote Extension Host terminates every 30-60 seconds on Remote-SSH connections (“Remote Extension host terminated unexpectedly 3 times within the last 5 minutes”). Integrated terminals die at the same time with “connection to the shell process was lost”. Remote work is unusable.
Remote is Ubuntu 22.04.5 shared hosting, project is an OpenCart PHP codebase. Full details of what I already ruled out are in Additional Information below.
Request ID: 7df8a27a-c37f-4268-9f25-abec1b20d05c
Steps to Reproduce
Connect to a remote host via Remote-SSH
Open the project folder
Wait 30-60 seconds, with or without running the agent
Extension host terminates; notification appears
Expected Behavior
The Remote Extension Host stays alive for the duration of the session.
Operating System
MacOS
Version Information
IDE: Cursor
Version: FILL IN (Cursor → About Cursor)
Release Track: stable
OS: macOS FILL IN
Additional Information
Remote Extension Host dies every 30-60 seconds over Remote-SSH (“terminated unexpectedly 3 times within the last 5 minutes”). Terminals die too.
Remote is Ubuntu 22.04 shared hosting, OpenCart PHP project.
Already ruled out: two different WiFi networks, server limits (ulimit unlimited, inodes at 2%), IP not blocked (confirmed by host), .cursorignore for large dirs, ServerAliveInterval 15, clean reinstall of ~/.cursor-server and local globalStorage, VPN extension disabled. Happens with and without the agent running, and on a second unrelated server too.
A colleague uses the same server, account and project without any issue, so it looks client-side on my machine.
No error in the Remote-SSH log before it dies — keepalives succeed, commands exit 0, then the host is gone.
Hey @Daniel_Demes, thanks for the detailed report. From what we can see, the remote extension host on your server is being force-killed (a SIGKILL) from the server side, not by Cursor. That lines up with it surviving a reinstall, happening with and without the agent, and showing on both servers. It’s not something you’ve misconfigured, and it’s something we’re looking into on our side. It usually traces back to a per-account memory/CPU/process limit or a resource monitor on shared hosting.
To pin down which limit, reproduce once, then from a plain terminal (not the Cursor terminal) SSH in and share:
ps -u $(whoami) -o pid,rss,etime,cmd --sort=-rss | head -n 20
Anything your hosting panel shows under CPU/memory/entry-process limits (and any recent “limit reached” counts).
Also handy: your colleague’s Cursor version (Cursor → About Cursor) and whether they log in as the same Linux user. The most reliable fix will be host-side (asking your provider to raise the per-account limit); trimming remote extensions can help a bit too.
So the extension host reaches ~406 MB within six seconds and the
file watcher ~337 MB within 26 seconds. Combined that’s over 850 MB,
which is almost certainly what trips the shared hosting limit.
The project has a 59 GB image directory with ~300k files in one
subfolder. I added .cursorignore for it (which measurably reduced
agent search counts) and files.watcherExclude in Remote Settings,
but the file watcher still grows to the same size — the exclusions
don’t seem to affect it.
My colleague logs in as the same Linux user and does not hit this.
hi @Daniel_Demes ! Tarun here from the engineering team.
In your files.watcherExclude settings, have you set the path relative to the workspace / folder that you are opening ?
For example, if you have opened my-proj and there’s a /image folder within it, you need to only add "image/**": true under the file watcher settings.
Basically its not converting the absolute path into a relative one, was a bug i just realized, up’g the fix.
Also, weird that your colleague’s client runs fine. Is he also opening the same folder ??
Can you check and see what version of the app that he’s running.