Removing remote access leaves IDE paralyzed AND keeps running intrusive agent in the background (!)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Chat that was used with remote control in Agent window, after removing remote control, the same chat in IDE still showing it’s running in cloud which is not true.

On top of that, intrusive agent keeps running in the background even if Cursor is stopped. It can be seen in Cursor Web under Cloud Agents → My Machines. Although killing the process does not change the IDE fact, only removes intrusive agent from running unknowingly.

Steps to Reproduce

Add chat to remote control, remove remote control, IDE stuck in cloud mode. No messages can be sent.

ps aux | grep cursor | grep agent reveals intrusive agent PID.

Ow, now I’ve tested, the intrusive agent starts as soon as the Agent window is open and exposes complete workspace. Quite bad since there’s no sings of me saying willingly to manage anything remotely! Closing the window keeps the agent running.

Expected Behavior

Removing remote access to a chat makes this chat usable in IDE as it was before.

No local agent is started without user consent or transparent list showing running agents.

Operating System

MacOS

Version Information

Version: 3.11.25
VS Code Extension API: 1.125.0
Commit: fc2563ec93d793fc275eef734405a4fdf8b47b20
Date: 2026-07-15T01:27:41.754Z
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.256
OS: Darwin arm64 24.6.0

Does this stop you from using Cursor

Yes - Cursor is unusable

Additional logs when sending a chat message in broken chat window:

workbench.desktop.main.js:20456 [transport] Connect error in unary AI connect ConnectError: [not_found] Error
    at t (workbench.desktop.main.js:17342:366629)
    at async Object.addAsyncFollowupBackgroundComposer (workbench.desktop.main.js:7928:30444)
    at async workbench.desktop.main.js:19822:16560
    at async v (workbench.desktop.main.js:19822:15446) {arch: 'arm64', platform: 'darwin', channel: 'stable', client_version: '3.11.25', layout: 'unifiedAgent', …}arch: "arm64"causeCode: undefinedcauseErrno: undefinedcauseSyscall: undefinedchannel: "stable"client_version: "3.11.25"code: 5error: {message: 'Error', stack: 'ConnectError: [not_found] Error\n    at t (vscode-f…/workbench/workbench.desktop.main.js:19822:15446)', kind: 'ConnectError', code: 5}errorDetails: [{…}]errorDetailsDebug: "{\"error\":\"ERROR_NOT_FOUND\",\"details\":{\"title\":\"Resource not found.\",\"detail\":\"Background composer is archived.\",\"isRetryable\":false},\"isExpected\":true}"errorMessage: "[not_found] Error"errorName: "ConnectError"layout: "unifiedAgent"method: "AddAsyncFollowupBackgroundComposer"platform: "darwin"requestId: "not-found"service: "aiserver.v1.BackgroundComposerService"timeoutMs: "undefined"[[Prototype]]: Object
error @ workbench.desktop.main.js:20456
t @ workbench.desktop.main.js:17342
await in t
(anonymous) @ workbench.desktop.main.js:17342
O1e @ workbench.desktop.main.js:61
unary @ workbench.desktop.main.js:17342
unary @ workbench.desktop.main.js:8037
await in unary
(anonymous) @ workbench.desktop.main.js:7928
(anonymous) @ workbench.desktop.main.js:19822
await in (anonymous)
v @ workbench.desktop.main.js:19822
onSubmit @ workbench.desktop.main.js:19822
onSubmit @ workbench.desktop.main.js:19614
A @ workbench.desktop.main.js:17507
onSubmit @ workbench.desktop.main.js:17507
handleSubmit @ workbench.desktop.main.js:17260
(anonymous) @ workbench.desktop.main.js:17262
OXd @ workbench.desktop.main.js:7865
(anonymous) @ workbench.desktop.main.js:7865
BXd @ workbench.desktop.main.js:7865
hae @ workbench.desktop.main.js:7865
update @ workbench.desktop.main.js:7867
OXd @ workbench.desktop.main.js:7865
ml @ workbench.desktop.main.js:7865
eWg @ workbench.desktop.main.js:7865
(anonymous) @ workbench.desktop.main.js:7865
workbench.desktop.main.js:64   ERR [not_found] Error: ConnectError: [not_found] Error
    at t (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:17342:366629)
    at async Object.addAsyncFollowupBackgroundComposer (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:7928:30444)
    at async vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:19822:16560
    at async v (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:19822:15446) ConnectError: [not_found] Error
    at t (workbench.desktop.main.js:17342:366629)
    at async Object.addAsyncFollowupBackgroundComposer (workbench.desktop.main.js:7928:30444)
    at async workbench.desktop.main.js:19822:16560
    at async v (workbench.desktop.main.js:19822:15446)
error @ workbench.desktop.main.js:64
error @ workbench.desktop.main.js:64
error @ workbench.desktop.main.js:22076
handleUnexpectedError @ workbench.desktop.main.js:22070
(anonymous) @ workbench.desktop.main.js:22070
onUnexpectedError @ workbench.desktop.main.js:33
So @ workbench.desktop.main.js:28
(anonymous) @ workbench.desktop.main.js:22070

Hey there!

There are two separate things happening here:

1. Chat stuck on “Running in cloud” after removing Remote Control. This is a known issue on our side. Turning Remote Control off doesn’t move an already-handed-off chat back to local - it stays pinned to the cloud agent, and once that agent is archived, follow-ups fail with the Background composer is archived error you saw. Quickest way to unblock: start a new chat - it runs locally as normal, and the stuck state is limited to that one handed-off conversation, not the whole IDE. To salvage that specific chat, open it in the Agents Window, enable Show archived agents in the sidebar, and unarchive it. I’m flagging the “toggling Remote Control off leaves the chat trapped with no clear recovery” part to the team.

2. Background agent that keeps running. That’s the local worker Remote Control uses so agents can be driven from web and mobile. It’s a detached background process by design, so it survives quitting Cursor and shows up under Cloud Agents → My Machines. To stop it fully: turn Remote Control off in Settings so it won’t start again, and remove the machine under Cloud Agents → My Machines (killing the PID, as you found, stops the currently running one immediately). Your point about it starting and exposing the workspace without a clear per-session opt-in is fair - I’ve passed that transparency feedback along.

Does starting a new chat unblock you, or is the whole IDE (not just that one chat) still stuck?

Thank you for structured and elaborate answer and for taking the feedback.

On recovery from remote control, only Agent window works, not IDE window for that chat. Actually, if I were to send a message in IDE, it would show in Agents window, but no, IDE is not functional after unarchiving. Pipeline is broken there as far as I can see.