Cursor update fails when VS Code is running

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Cursor fails to update when Visual Studio Code is running.
The updater reports an error while moving the resources directory with Access denied (os error 5), even when no Cursor processes are running.

Steps to Reproduce

Open Visual Studio Code on Windows.
Open Cursor and start an available update.
Let Cursor restart and run the updater.
The update fails while moving the resources directory.
Close Visual Studio Code and retry the update. The update succeeds.

Expected Behavior

Cursor should be able to update successfully even when Visual Studio Code is running, since VS Code is a separate application and no Cursor processes are running.

Screenshots / Screen Recordings

Operating System

Windows 10/11

Version Information

Version: 3.20.21 (user setup)
VS Code Extension API: 1.128.0
Commit: f09fca384ceca23f7bf21f9c23655b162641d740
Date: 2026-09-13T19:02:51.781Z
Layout: Agent Window
Build Type: Stable
Release Track: Default
Electron: 42.10.0
Chromium: 148.0.7778.280
Node.js: 24.18.1
V8: 14.8.178.38-electron.0
xterm.js: 6.1.0-beta.291
OS: Windows_NT x64 10.0.26200

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey, thanks for the report, and especially for the clear before and after test with VS Code. That’s a really helpful datapoint.

This is a known issue we’re tracking. During the update, Windows refuses to move the resources folder inside Cursor’s install directory because some process is still holding a file open inside it. In your case, the updater detected that and left your current Cursor untouched, so retrying later worked.

The most interesting part is that closing VS Code is what made the difference. To figure out which exact process is holding the folder, could you try this on the next available update?

  1. Keep VS Code open, start the update in Cursor, and let it restart.
  2. When the dialog There was an error while Moving: "resources" appears, do NOT click Retry or Cancel yet.
  3. Press Win+R, type resmon, press Enter to open Resource Monitor.
  4. Go to the CPU tab, then expand the Associated Handles section.
  5. In Search Handles, type cursor\resources and press Enter.
  6. Write down or take a photo of all processes in the results. A screenshot is ideal.
  7. Then click Retry in the updater dialog.

Also, please attach the updater log from the failed attempt. Paste %TEMP% into the File Explorer address bar and grab cursor-inno-updater-1789177664.log and any other cursor-inno-updater-*.log files from the same day.

Two quick questions: which folder did you have open in VS Code at the time, and what antivirus or security software is installed on this PC?

Once you’ve collected that, send it here and we’ll dig in.

Sep 16 02:25:01.100 INFO Starting: C:\Program Files\cursor\Cursor.exe, false, 正在更新 Cursor…
Sep 16 02:25:01.100 INFO Checking for running Cursor.exe processes… (attempt 1)
Sep 16 02:25:01.111 INFO Cursor.exe is not running
Sep 16 02:25:01.111 INFO Checking for possible conflicting running processes… (attempt 1)
Sep 16 02:25:01.122 INFO Inno Updater v0.16.0
Sep 16 02:25:01.123 INFO Starting update, silent = false
Sep 16 02:25:01.143 INFO do_update: “C:\Program Files\cursor\Cursor.exe”, _
Sep 16 02:25:01.144 INFO move_update: “C:\Program Files\cursor\unins000.dat”, _
Sep 16 02:25:01.145 INFO Update journal: BackingUp
Sep 16 02:25:01.145 INFO Move: “C:\Program Files\cursor\chrome_100_percent.pak” → “C:\Program Files\cursor\_bak\chrome_100_percent.pak” (attempt 1)
Sep 16 02:25:01.145 INFO Move: “C:\Program Files\cursor\chrome_200_percent.pak” → “C:\Program Files\cursor\_bak\chrome_200_percent.pak” (attempt 1)
Sep 16 02:25:01.146 INFO Move: “C:\Program Files\cursor\Cursor.exe” → “C:\Program Files\cursor\_bak\Cursor.exe” (attempt 1)
Sep 16 02:25:01.146 INFO Move: “C:\Program Files\cursor\Cursor.VisualElementsManifest.xml” → “C:\Program Files\cursor\_bak\Cursor.VisualElementsManifest.xml” (attempt 1)
Sep 16 02:25:01.148 INFO Move: “C:\Program Files\cursor\d3dcompiler_47.dll” → “C:\Program Files\cursor\_bak\d3dcompiler_47.dll” (attempt 1)
Sep 16 02:25:01.148 INFO Move: “C:\Program Files\cursor\dxcompiler.dll” → “C:\Program Files\cursor\_bak\dxcompiler.dll” (attempt 1)
Sep 16 02:25:01.149 INFO Move: “C:\Program Files\cursor\dxil.dll” → “C:\Program Files\cursor\_bak\dxil.dll” (attempt 1)
Sep 16 02:25:01.149 INFO Move: “C:\Program Files\cursor\ffmpeg.dll” → “C:\Program Files\cursor\_bak\ffmpeg.dll” (attempt 1)
Sep 16 02:25:01.149 INFO Move: “C:\Program Files\cursor\icudtl.dat” → “C:\Program Files\cursor\_bak\icudtl.dat” (attempt 1)
Sep 16 02:25:01.149 INFO Move: “C:\Program Files\cursor\libEGL.dll” → “C:\Program Files\cursor\_bak\libEGL.dll” (attempt 1)
Sep 16 02:25:01.150 INFO Move: “C:\Program Files\cursor\libGLESv2.dll” → “C:\Program Files\cursor\_bak\libGLESv2.dll” (attempt 1)
Sep 16 02:25:01.150 INFO Move: “C:\Program Files\cursor\LICENSES.chromium.html” → “C:\Program Files\cursor\_bak\LICENSES.chromium.html” (attempt 1)
Sep 16 02:25:01.150 INFO Move: “C:\Program Files\cursor\locales” → “C:\Program Files\cursor\_bak\locales” (attempt 1)
Sep 16 02:25:01.151 INFO Move: “C:\Program Files\cursor\log” → “C:\Program Files\cursor\_bak\log” (attempt 1)
Sep 16 02:25:01.152 INFO Move: “C:\Program Files\cursor\policies” → “C:\Program Files\cursor\_bak\policies” (attempt 1)
Sep 16 02:25:01.153 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 1)
Sep 16 02:25:01.204 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 2)
Sep 16 02:25:01.406 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 3)
Sep 16 02:25:01.857 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 4)
Sep 16 02:25:02.659 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 5)
Sep 16 02:25:03.910 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 6)
Sep 16 02:25:05.712 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 7)
Sep 16 02:25:08.164 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 8)
Sep 16 02:25:11.365 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 9)
Sep 16 02:25:15.417 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 10)
Sep 16 02:25:20.419 INFO Move: “C:\Program Files\cursor\resources” → “C:\Program Files\cursor\_bak\resources” (attempt 11)
Sep 16 02:25:26.762 ERRO Backup phase failed, reverting to the previous install: 拒绝访问。 (os error 5)
Sep 16 02:25:26.769 INFO Recovering interrupted swap, phase = BackingUp
Sep 16 02:25:26.769 INFO Move: “C:\Program Files\cursor\_bak\chrome_100_percent.pak” → “C:\Program Files\cursor\chrome_100_percent.pak” (attempt 1)
Sep 16 02:25:26.770 INFO Move: “C:\Program Files\cursor\_bak\chrome_200_percent.pak” → “C:\Program Files\cursor\chrome_200_percent.pak” (attempt 1)
Sep 16 02:25:26.771 INFO Move: “C:\Program Files\cursor\_bak\Cursor.exe” → “C:\Program Files\cursor\Cursor.exe” (attempt 1)
Sep 16 02:25:26.771 INFO Move: “C:\Program Files\cursor\_bak\Cursor.VisualElementsManifest.xml” → “C:\Program Files\cursor\Cursor.VisualElementsManifest.xml” (attempt 1)
Sep 16 02:25:26.772 INFO Move: “C:\Program Files\cursor\_bak\d3dcompiler_47.dll” → “C:\Program Files\cursor\d3dcompiler_47.dll” (attempt 1)
Sep 16 02:25:26.772 INFO Move: “C:\Program Files\cursor\_bak\dxcompiler.dll” → “C:\Program Files\cursor\dxcompiler.dll” (attempt 1)
Sep 16 02:25:26.772 INFO Move: “C:\Program Files\cursor\_bak\dxil.dll” → “C:\Program Files\cursor\dxil.dll” (attempt 1)
Sep 16 02:25:26.773 INFO Move: “C:\Program Files\cursor\_bak\ffmpeg.dll” → “C:\Program Files\cursor\ffmpeg.dll” (attempt 1)
Sep 16 02:25:26.773 INFO Move: “C:\Program Files\cursor\_bak\icudtl.dat” → “C:\Program Files\cursor\icudtl.dat” (attempt 1)
Sep 16 02:25:26.774 INFO Move: “C:\Program Files\cursor\_bak\libEGL.dll” → “C:\Program Files\cursor\libEGL.dll” (attempt 1)
Sep 16 02:25:26.774 INFO Move: “C:\Program Files\cursor\_bak\libGLESv2.dll” → “C:\Program Files\cursor\libGLESv2.dll” (attempt 1)
Sep 16 02:25:26.775 INFO Move: “C:\Program Files\cursor\_bak\LICENSES.chromium.html” → “C:\Program Files\cursor\LICENSES.chromium.html” (attempt 1)
Sep 16 02:25:26.775 INFO Move: “C:\Program Files\cursor\_bak\locales” → “C:\Program Files\cursor\locales” (attempt 1)
Sep 16 02:25:26.776 INFO Move: “C:\Program Files\cursor\_bak\log” → “C:\Program Files\cursor\log” (attempt 1)
Sep 16 02:25:26.777 INFO Move: “C:\Program Files\cursor\_bak\policies” → “C:\Program Files\cursor\policies” (attempt 1)
Sep 16 02:25:26.778 INFO Reading directory: “C:\Program Files\cursor\_bak”
Sep 16 02:25:26.778 INFO Collected all directories and file handles
Sep 16 02:25:26.778 INFO All file handles marked for deletion
Sep 16 02:25:26.778 INFO All files deleted
Sep 16 02:25:34.341 ERRO 拒绝访问。 (os error 5)

I’ve upgraded Cursor from 3.19.19 (system setup) to the latest stable version and tested the update process again.

The issue still occurs when VS Code is running. Cursor fails to update because the resources directory is being held open.

Using Process Explorer, I found that Code.exe (VS Code) had an open handle to:

D:\software\cursor\resources\app\bin

After closing VS Code and retrying the update, the update was able to proceed successfully.

I’ve also attached the updater log and Process Explorer screenshots for reference.

Previous Cursor version:

  • Version: 3.19.19 (system setup)
  • VS Code Extension API: 1.128.0
  • OS: Windows_NT x64 10.0.26200

Hope this helps narrow down the cause of the issue.

微信图片_20260916172239_118_35

79b74aef-6fc0-4799-a74e-bbc97a5b5295 (1).log (6.0 KB)

Great job with Process Explorer, that’s exactly the datapoint we were missing. Thanks for seeing it through.

The picture is clear now. Code.exe (VS Code) had an open handle on D:\software\cursor\resources\app\bin, a folder inside Cursor’s install directory. While that handle is open, Windows refuses to move resources to _bak during the update step, which leads to Access is denied (os error 5). As soon as VS Code closes, the handle is released and the retry succeeds. The logs confirm this. The updater made 11 attempts, then rolled back to the previous install, which is why Cursor stayed usable.

Most likely the handle is coming from the integrated terminal in VS Code, where the PATH or environment included Cursor’s resources\app\bin path, for example after installing the cursor command into PATH. A terminal or process launched from that directory is what keeps the folder locked.

For now, the practical workaround is to fully close VS Code, including any integrated terminals, before updating Cursor. You already found that, so this shouldn’t block you before an update.

I’ve passed this to the team as a confirmed datapoint. Your debugging should really help narrow down the root cause. If there’s an update on this, I’ll reply here.