Glad it helped. Cursor is one of the best AI editors out there but the issue is making it near unusable, hope they will come up with proper solution.
I can confirm this works too. Thanks so much
This actually works when I’m not using the chat or don’t have about two to three messages in a chat. Otherwise, I still get the popup issue. hopefully we get a proper fix soon
Thanks a lot, that helped! I want to kiss you haha
What version are you using?
I am on the latest version, not on my PC now but what is it, 1.1.5 ?
I just upgraded, and the window appear less now. I had to remove cursor completely and reinstall v.1.1.5
@hlpmenu described the issue but looks like none cares.
Here follows a bash script to move the globalStorage to a tmp dir. Note any change to the state file will be lost on system restart.
#!/bin/bash
# Define directories
ORIGINAL_DIR="$HOME/.config/Cursor/User/globalStorage"
BACKUP_DIR="$HOME/.config/Cursor/User/globalStorage.bak"
SYMLINK_TARGET="/tmp/cursor-globalStorage"
# Step 1: Backup if not already backed up
if [ ! -d "$BACKUP_DIR" ]; then
echo "Backup directory not found. Creating backup..."
cp -r "$ORIGINAL_DIR" "$BACKUP_DIR"
else
echo "Backup directory already exists. Skipping backup..."
fi
# Step 2: Delete the original directory (or symlink)
if [ -e "$ORIGINAL_DIR" ] || [ -L "$ORIGINAL_DIR" ]; then
echo "Removing existing globalStorage..."
rm -rf "$ORIGINAL_DIR"
fi
# Step 3: Copy backup to /tmp/cursor-globalStorage
echo "Copying backup to $SYMLINK_TARGET..."
rm -rf "$SYMLINK_TARGET" # Remove if already exists
cp -r "$BACKUP_DIR" "$SYMLINK_TARGET"
# Step 4: Create symbolic link if it doesn't already exist
if [ ! -L "$ORIGINAL_DIR" ]; then
echo "Creating symbolic link from $ORIGINAL_DIR to $SYMLINK_TARGET..."
ln -s "$SYMLINK_TARGET" "$ORIGINAL_DIR"
else
echo "Symbolic link already exists. Skipping link creation..."
fi
echo "Done."
The entire globaStorage is not required to be moved, just ~/.config/Cursor/User/globalStorage/state.vscdb
is enough.
I did find a kinda-ok workaround, running a sqlite VACUUM on the entire state.vscdb database helps a lot. It dident really trim anything, and size remained, but somehow it does help. Only issue it will start freezing after a while no matter what.
Another solution, would be to instead of using /tmp in your script, create a ramdisk and make it persist to disk, and symlink just the state.vscdb.
It would help a huuuge amount if you dont have a high speed ssd, and even if you do, it would still help a lot.
But, i still dont understand why cursor use sqlite for this when they are writing large chunks of json? It wouldent suprise me they update/modify/append by reading-modifying-writing back, which results in exactly what we see, 50-60% cpu wait time, blocking, freezing.
Warning to people using the above script or manually removes the state.vscdb
Read the part of my previous post about the “issue” with the onboarding tho..
It will without any prompts, or warnings, the next time you launch cursor, completly remove ~/.config/Cursor/User
and ~/.cursor/extensions
.
Which is extremly bad practice.. Especially since your settings.json can contain stuff like in my case, essentially a custom theme, which i spent hours on.
Now i had a backup, but you wouldent expect cursor to permanently removing files on disk which have 0 effect on the onboarding.
I’m having this issue on Windows. Any workaround there? My mac actually runs perfectly.
Why hasn’t this issue been fixed? Does everyone really have to write their own script to regularly move state.vscdb
? We expect the Cursor team to come up with a better solution. This same problem affects Windows and Linux users now—possibly everyone except macOS—and it’s been around for quite a while.
Its unfair how updates are being released mostly every week, but we still couldn’t get a fix for this.
It’s been a while, the exact reason why it freezes has been identified, a fix is suggested, and I don’t understand why it hasn’t been implemented yet.
Not everyone has an nvme and apple on their work computer, I’m stuck with Linux and a HDD, and this is almost unusable, I spend most of my time waiting for cursor to respond.
If you want a quick and dirty fix that just works, use a ramdisk for the files, and only sync to disk once in a while. It’s that simple.
I’m currently paying for Cursor, but I regularly refresh this page to check if it has at least been solved. At each update, I pray that the issue has been fixed, and each time it isn’t. If this doesn’t change soon, I’ll switch back to another LLM-wrapper IDE (won’t mention the name but there are multiple other options out there, competition is fierce).
IMO, this needs to be the absolute top priority for this project. Your product is totally unusable on Windows, I do not see how you could be focusing on anything but this issue.
Please prioritize a fix. Once I move to another AI code editor, it will be difficult to ever come back.
Thanks for this script, this has fixed the freezing issue.
I agree that Cursor teams should put this bug into critical priority so that users can continue to work with the great software
Ok, I tested it on Windows as well, with an NVME.
I can see the usage peaks near the 100% usage, and each time it happens, it doesn’t really “freeze” the window, or not for long, but you can definitely feel the hiccup.
Same issues here on ubuntu 24.04
My issue is, all solutions proposed above didn’t fix it for me.