After applying a Cursor update (which restarts Cursor), multiple source files in my workspace had their LastWriteTime (mtime) refreshed while file content hashes stayed identical.
This is a serious problem for build systems that invalidate caches based on mtime rather than content hash — notably Unreal Build Tool (UBT). A single Cursor update restart caused thousands of unnecessary compile actions (3000–5000) even though no source content changed.
Steps to Reproduce
Open a large C++ workspace (Unreal Engine tree) with several Engine source files open / tracked.
Ensure a full compile has already completed (build graph is warm).
Click Cursor’s in-app Update and allow Cursor to restart.
Observe file mtimes on previously open/hot source files.
Expected Behavior
Restarting after an update should not rewrite or touch source file mtimes unless content actually changed.
This is a known issue we’re working on: on launch (and an update forces a launch), Cursor can re-write some files to disk with identical content but a fresh modification time, which is what trips mtime-based build systems like UBT into rebuilding.
The most common trigger is leftover pending AI/agent edits from a previous session being restored and re-saved on the next launch. Until the fix ships, the most reliable workaround is to clear those before you quit or update:
Open your most recent Agent/Composer changes and Keep or Discard all pending edits so nothing is left in a “to review” state.
Then quit or apply the update.
Heads-up: turning off files.autoSave / files.hotExit on its own doesn’t stop this particular path, so don’t rely on those alone.
If you still see mtimes changing after clearing all pending edits, reply here and I’ll dig into your specific case.
A fix for the issue where update-restart rewrote unchanged files (fresh mtime, identical content) should have shipped in Cursor v3.15. Please don’t hesitate to let us know if you’re still running into it on the latest version (currently v3.17).