Created
March 8, 2026 08:43
-
-
Save dougrathbone/0d30a45e93573dd890cd32391c508753 to your computer and use it in GitHub Desktop.
Cursor IDE database cleanup script - fixes OOM crashes caused by bloated AI conversation data
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Cursor Database Cleanup Script | |
| # Removes bloated AI conversation data that can cause OOM crashes | |
| # | |
| # Usage: ./cursor-db-cleanup.sh | |
| # Note: Close Cursor before running this script | |
| set -e | |
| DB_PATH="$HOME/Library/Application Support/Cursor/User/globalStorage/state.vscdb" | |
| # Check if Cursor is running | |
| if pgrep -f "Cursor" > /dev/null; then | |
| echo "Error: Cursor is running. Please close it first." | |
| exit 1 | |
| fi | |
| # Check if database exists | |
| if [ ! -f "$DB_PATH" ]; then | |
| echo "Error: Database not found at $DB_PATH" | |
| exit 1 | |
| fi | |
| # Show current size | |
| echo "Current database size:" | |
| ls -lh "$DB_PATH" | |
| # Create backup | |
| BACKUP_PATH="${DB_PATH}.backup.$(date +%Y%m%d%H%M%S)" | |
| cp "$DB_PATH" "$BACKUP_PATH" | |
| echo "Backup created: $BACKUP_PATH" | |
| # Show row counts before | |
| echo "" | |
| echo "Before cleanup:" | |
| sqlite3 "$DB_PATH" "SELECT 'Total cursorDiskKV rows:', COUNT(*) FROM cursorDiskKV;" | |
| # Delete bloated entries | |
| echo "" | |
| echo "Removing bloated entries..." | |
| sqlite3 "$DB_PATH" <<EOF | |
| DELETE FROM cursorDiskKV WHERE key LIKE 'composerData:%'; | |
| DELETE FROM cursorDiskKV WHERE key LIKE 'bubbleId:%'; | |
| DELETE FROM cursorDiskKV WHERE key LIKE 'agentKv:blob:%'; | |
| DELETE FROM cursorDiskKV WHERE key LIKE 'composer.content.%'; | |
| DELETE FROM cursorDiskKV WHERE key LIKE 'checkpointId:%'; | |
| VACUUM; | |
| EOF | |
| # Show results | |
| echo "" | |
| echo "After cleanup:" | |
| sqlite3 "$DB_PATH" "SELECT 'Total cursorDiskKV rows:', COUNT(*) FROM cursorDiskKV;" | |
| echo "" | |
| echo "New database size:" | |
| ls -lh "$DB_PATH" | |
| echo "" | |
| echo "Cleanup complete! You can now restart Cursor." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment