Your recent Antigravity update caused most recent chat sessions to disappear, leaving only older ones. You found chat.ChatSessionStore.index in state.vscdb reset to an empty object and the backup overwritten, while protobuf state still lists the missing session UUIDs and titles.
Antigravity chat history missing after update where ChatSessionStore index reset to empty
You are seeing an empty or near empty chat sidebar after updating Antigravity on macOS. Your local state database shows chat.ChatSessionStore.index equals {"version":1,"entries":{}} in both state.vscdb and state.vscdb.backup, yet protobuf in jetskiStateSync.agentManagerInitState and keys under trajectorySummaries still reference the missing session UUIDs and titles.
For a complete checklist of recovery paths beyond this page, see this focused recovery guide for lost conversations in Antigravity.
Solution Overview
Aspect
Detail
Root Cause
A migration during the latest update reset the chat.ChatSessionStore.index entry in the local state database and also overwrote the automatic backup
Primary Fix
Restore state.vscdb from a snapshot or Time Machine backup that predates the update
Complexity
Easy
Estimated Time
10 to 20 minutes
Recover your missing conversations now
Step-by-Step Solution
Step 1 Verify the index was reset and stop Antigravity completely
sqlite3 "PATH/TO/state.vscdb" "SELECT value FROM ItemTable WHERE key='chat.ChatSessionStore.index';"
If it prints {"version":1,"entries":{}}, the reset occurred.
Step 2 Restore state from Time Machine or a snapshot
The fastest and safest recovery is to bring back a state.vscdb from before the update. You can use Finder with Time Machine or use Terminal.
List Time Machine local snapshots
tmutil listlocalsnapshots /
Restore the file from a dated snapshot path or from your external Time Machine disk to a safe staging folder, then replace the current database
# Example using a mounted Time Machine backup volume
RESTORE="$HOME/Desktop/antigravity-state-restore"
mkdir -p "$RESTORE"
Adjust the source path to the one shown in Time Machine for your Mac
cp -av "/Volumes/Time Machine Backups/Backups.backupdb/MacName/Latest/Macintosh HD - Data/Users/$USER/Library/Application Support/Antigravity/User/globalStorage/state.vscdb" "$RESTORE/"
Start Antigravity and confirm your recent sessions reappear
If you do not have Time Machine, check any other system backup or snapshot solution you use. Apple has a helpful overview here: Back up your Mac with Time Machine. If restoration fails, proceed to Alternative Fix 1 to rebuild the index.
Step 3 Lock in a clean backup after recovery
Once your chats return, create a known good copy for safety.
Alternative 1 Rebuild ChatSessionStore index from surviving keys with a script
Use this when you have no backup. Many installations keep per session artifacts under keys like trajectorySummaries and protobuf entries still reference UUIDs and titles. You can harvest those UUIDs and reconstruct a minimal index value.
Inspect related keys
sqlite3 "PATH/TO/state.vscdb" "SELECT key, LENGTH(value) FROM ItemTable WHERE key LIKE 'trajectorySummar%';"
sqlite3 "PATH/TO/state.vscdb" "SELECT key, LENGTH(value) FROM ItemTable WHERE key LIKE 'jetskiStateSync%';"
Script to rebuild a minimal index from UUIDs found in the database values
This script is cautious and writes a new file named state.vscdb.patched so you can test it safely. It searches for UUIDs in any value rows where keys include trajectorySummar and then writes a compact JSON index. Titles may be unavailable unless they are embedded as JSON or plain text in those values.
python3 - <<'PY'
import os, re, json, sqlite3, shutil, sys, tempfile
db_path = "PATH/TO/state.vscdb"
patched_path = db_path + ".patched"
uuid_re = re.compile(r"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[089abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}")
def fetch_rows(conn):
cur = conn.cursor()
cur.execute("SELECT key, value FROM ItemTable")
for k, v in cur.fetchall():
if isinstance(v, bytes):
try:
yield k, v.decode("utf-8", "ignore")
except Exception:
continue
else:
yield k, str(v)
def current_index(conn):
cur = conn.cursor()
cur.execute("SELECT value FROM ItemTable WHERE key='chat.ChatSessionStore.index'")
row = cur.fetchone()
return row[0] if row else None
def upsert_index(conn, index_json):
cur = conn.cursor()
cur.execute("INSERT INTO ItemTable(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value", ("chat.ChatSessionStore.index", index_json))
conn.commit()
Copy to a patched file first
shutil.copy2(db_path, patched_path)
conn = sqlite3.connect(patched_path)
conn.text_factory = bytes # preserve raw
uuids = set()
titles = {} # best effort discovery of titles inside text blobs
for k, text in fetch_rows(conn):
for u in uuid_re.findall(text):
uuids.add(u)
# naive title discovery if values contain patterns like "title":"Some Title"
for m in re.finditer(r'"title"\s:\s"([^"]{1,200})"', text):
title = m.group(1)
# cannot map reliably to uuid here without more structure
if not uuids:
print("No UUIDs discovered. Exiting with no changes.")
sys.exit(1)
entries = {}
for u in sorted(uuids):
entries[u] = {} # minimal entry to get the app to list it again if accepted by schema
index_obj = {"version": 1, "entries": entries}
index_json = json.dumps(index_obj, separators=(",", ":"), ensure_ascii=False)
print("Writing reconstructed index with", len(entries), "entries")
upsert_index(conn, index_json)
conn.close()
print("Patched file created at:", patched_path)
print("Now stop Antigravity and replace the live DB with the patched copy after making a backup.")
PY
Replace the live DB with the patched one after backing up the original
Note that this is a best effort reconstruction. If the schema requires more fields per entry, this may not fully restore titles or ordering. If it does not work, revert to your backup file and contact support with your preserved databases.
If you hit sign in prompts during cloud re sync or repair and are blocked by eligibility checks, see this account not eligible fix.
Alternative 2 Resync from cloud by resetting local state
If your plan syncs chats to the cloud, a clean resync can rebuild local state.
Back up your state.vscdb files as shown above
Sign out of Antigravity
Remove only the chat index key, not the entire database
sqlite3 "PATH/TO/state.vscdb" "DELETE FROM ItemTable WHERE key='chat.ChatSessionStore.index';"
Sign back in and wait for sync to repopulate the index
sqlite3 "PATH/TO/state.vscdb" ".schema"
sqlite3 "PATH/TO/state.vscdb" "SELECT name FROM sqlite_schema;"
Look for a simple key value table, often named ItemTable with columns key and value. Reference: sqlite3 Command Line Shell
Check the backup file too
sqlite3 "PATH/TO/state.vscdb.backup" "SELECT value FROM ItemTable WHERE key='chat.ChatSessionStore.index';"
If both are empty, rely on backup restoration or the rebuild script.
Verify that session UUIDs still exist
sqlite3 "PATH/TO/state.vscdb" "SELECT key, LENGTH(value) FROM ItemTable WHERE key LIKE '%trajectorySummar%';"
strings "PATH/TO/state.vscdb" | egrep -oi "[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}" | sort -u | wc -l
A nonzero count improves your chances of a successful rebuild.
Never open the database while Antigravity is running
Always quit the app first to avoid write contention or corruption.
When in doubt, duplicate before you change
Use Finder or cp -av to snapshot files before every experiment.
For more background and recovery patterns that match this exact symptom, see ways to recover lost Antigravity conversations.
Best Practices
Turn on regular Time Machine backups so you can always roll back state quickly
Before installing major updates, copy state.vscdb and state.vscdb.backup to a safe folder
Keep Antigravity closed during system wide updates to reduce migration races
After recovery, export important conversations to files where possible
Test preview builds in a secondary user profile to protect your main workspace
Final Thought
The quickest reliable fix is to restore state.vscdb from a pre update backup, which brings back the chat index immediately. If you do not have a backup, the rebuild approach can still recover a working index from surviving UUIDs, and a clean cloud resync may also reconstruct your history.
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.