Justin, we’re closer to a fix than it looks. Your trace from the previous post is really on point.
Why the freeze still happens even if agentKv:blob:% is cleared and --disable-extensions is on
The CPU profile shows two hot paths: [email protected] + remark-gfm + mdast-util-gfm-table (a Markdown lexer issue that now looks specifically tied to parsing GFM tables, stronger signal than before), and restoring aiBackgroundComposer* state on open. agentKv:blob:% was only one part. Composer state is stored under other keys that your DELETE didn’t touch. And the file size not shrinking is normal for SQLite without VACUUM, your SELECT already confirmed the rows were removed.
To find what’s still heavy:
sqlite3 "%APPDATA%\Cursor\User\globalStorage\state.vscdb" "SELECT key, length(value) AS bytes FROM cursorDiskKV ORDER BY bytes DESC LIMIT 50;"
Paste the output and we can pick the right keys to remove. I expect the top ones to be composerData:*, aiBackgroundComposer*, chat.*.
Fast path if you just need it working
Fully close Cursor, then rename the DB:
cd %APPDATA%\Cursor\User\globalStorage
ren state.vscdb state.vscdb.bak
Start Cursor, open the WSL project. It should open instantly. You’ll lose chat and composer history on this machine. The .bak file is your rollback.
Why aws-toolkit-vscode keeps coming back
It’s installed on the WSL side, not the Windows side. Open the Extensions panel in Cursor while connected to WSL, scroll to Installed in WSL: Ubuntu, and uninstall it there. Local uninstall won’t touch the remote copy, and rm -rf ~/.cursor-server won’t help because the server syncs extensions back from your user profile on every reconnect.
About the 22 lines of activation failure
That’s a symptom of the UI thread freezing at startup, not the cause. The extension host waits, then it gets canceled, exits with code 0, and anything that didn’t activate in time gets marked as activation failure. Once the Markdown lexer hang is gone, those lines should go away on their own.
Status on the original bug
Your trace is a great artifact. The stack marked.esm.js -> mdast-util-gfm-table -> RegExp.exec points specifically to GFM tables, and that’s new info.
Send the LIMIT 50 output when you can, or just rename the DB now if you want a clean open today.