This is not acceptable product behaviour for a paid editor.
On Windows, Cursor’s auto-updater repeatedly pops a modal while I am working:
There was an error while Deleting a directory:
C:\Users\AppData\Local\Programs\cursor_bak\resources
Access is denied. (os error 5)
Please verify there are no Cursor processes still executing.
Retry does nothing. Cancel dismisses it until the next update, then it comes back. This has happened to me on multiple days in a row (9, 12, and 14 Sep 2026). I am not doing anything unusual. I open Cursor, it tries to finish an update, and this dialog hijacks the screen.
The updater (inno_updater.exe) is trying to delete the old install copy under _bak while Cursor and its helper processes are still running. The lock is the bundled node.exe under resources\app\resources\helpers, including MCP servers Cursor itself spawned. The dialog tells me to make sure no Cursor processes are running — while I am inside Cursor, because Cursor launched the updater.
That is a broken update design:
Cursor starts child processes from files inside its own install folder.
Cursor then tries to delete that folder (or a backup of it) while those processes still hold the files.
The failure UI is a blocking error with Retry/Cancel, not a quiet retry in the background.
There is no recovery path that works without killing Cursor or renaming _bak by hand.
Workaround that actually works: rename _bak so the updater is no longer looking at a locked path, then Cancel. Deleting _bak in place fails for the same reason the updater fails.
Staff have already called this a known Windows updater issue, with leftover node.exe / MCP / rg.exe handles, and no ETA. “Fully quit Cursor first” is not a fix. Auto-update is supposed to work while people use the app. A known bug that interrupts work on every update, with the only advice being “close everything and hope,” is not an acceptable shipping state.
Please treat this as a P1 Windows update bug: stop showing a blocking error for a cleanup step, don’t delete files that Cursor’s own children still have open, and don’t leave _bak in a state that pops this dialog again on the next launch.
