Focus steal (Wispr Flow dictation) clears all pinned agent chats in sidebar — pins still in SQLite

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

While dictating into a new agent chat with Wispr Flow, I switched to Slack to gather context. Mid-dictation, Cursor stole focus and brought itself to the front. Immediately after, every pinned chat disappeared from the Pinned section (not one thread — all pins).

This has happened repeatedly over the past ~week on multiple threads (same machine, same session, no archive/fork/rename). Re-pinning works until the next incident.

After this event, a read of cursor/pinnedComposers in workspace SQLite still showed 5 pinned composer ids for workspace file:///Users/dig/Kiddom — so this looks like sidebar UI desync, not the user unpinning. Risk: quitting Cursor while the UI shows zero pins may overwrite DB with an empty in-memory list (known forum pattern).

Steps to Reproduce

Pin several agent chats in the Kiddom workspace sidebar.
Start a new agent chat; use Wispr Flow to dictate a long prompt.
While dictating, switch to another app (e.g. Slack) for reference.
Observe Cursor activating itself / stealing focus.
Check Agent sidebar → Pinned section empty (all pins gone from UI).

Expected Behavior

Cursor should not grab focus from another app mid–voice-dictation workflow (or should do so without resetting sidebar pin state).
Pinned chats remain in the Pinned section across focus changes and sidebar refresh.

Operating System

MacOS

Version Information

IDE:
Version: 3.22.12
VS Code Version: 1.128.0
Commit: d5c0e77a0214208f36b56d42e8e787de88d02ea4
OS: macOS (Darwin arm64)
Workspace: file:///Users/dig/Kiddom
Layout: Agent / IDE (pinned chats in sidebar)
Third party: Wispr Flow (system-wide dictation into focused field)

Additional Information

Related forum issues: pinned chat limit / ghost pinnedComposers entries, archived-pin bugs — this case is different: pin count was only 5, not at cap; no archive/fork/rename.
Separate empty-window workspaceStorage bucket also holds 12 pin ids — possible multi-bucket reconcile on focus.
Workaround tried: Developer: Reload Window (user re-pinned manually when reload not yet tried).

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey @Dig_Kiddom, thanks for the report, and for checking the pin list in storage. That helps narrow it down.

A fix for pinned chats dropping out of the Agents Window sidebar shipped in 3.22, so earlier builds could hit this. Since you’re on 3.22.12 now, could you let us know if it happens again? If it does, these steps would help us reproduce it:

  1. In the Agents Window, pin 3 or more chats (include a cloud agent if you use them).
  2. Start a new agent chat and click into the message box.
  3. Press Cmd+Tab to switch to Slack and wait about 30 seconds.
  4. Press Cmd+Tab to switch back to Cursor.
  5. Check the Pinned section in the sidebar.
  6. Repeat steps 2 to 5, this time dictating with Wispr Flow while you switch away.

If the pins disappear, please tell us:

  • Whether it happened in step 5, step 6, or both
  • Whether the missing chats are local or cloud agents, and whether they still show as pinned at cursor.com/agents
  • Whether Cmd+Shift+P, then “Developer: Reload Window”, brings them back without re-pinning

Using Reload Window instead of re-pinning is also the safest way to recover them in the meantime.