Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
Cursor Agent chat can lose context mid-session. After an agent response completes, the next user message in the same visible chat can be handled like a fresh session, or like the agent never saw the immediately preceding work.
The visible UI still shows the prior messages directly above the input. The failure signature I found in renderer logs is:
[AgentResponseAdapter] Skipping conversationState snapshot for unloaded user message bubble
I found this warning across multiple normal agent chats and composer IDs.
Steps to Reproduce
- Use Cursor IDE Agent chat for a long-running session with many turns, enough that older message bubbles can be unloaded or virtualized.
- Let the agent finish a response.
- Send another message in the same visible chat/composer.
- In affected sessions, the agent behaves as if previous visible turns are missing.
- Check renderer.log for warnings like:
[AgentResponseAdapter] Skipping conversationState snapshot for unloaded user message bubble {“composerId”:“…”,“messageId”:“…”}
Expected Behavior
If the chat UI still shows previous messages in the same composer, the next agent turn should include the corresponding conversation state/checkpoint, or Cursor should recover it from persisted message storage.
A visible chat should not silently continue from an empty or stale conversationState.
Operating System
Windows 10/11
Version Information
Cursor: 3.5.17 stable
VS Code base: 1.105.1
OS: Windows 10 Pro, build 26200, 64-bit
Install path: C:\Program Files\cursor
For AI issues: which model did you use?
Not model-specific. Observed in Cursor Agent chat/composer after long sessions.
For AI issues: add Request ID with privacy disabled
N/A. This appears to be a local conversation-state persistence/resume issue. Evidence is from renderer logs and local persisted composer/message storage.
Additional Information
Examples from renderer.log:
2026-05-24 22:26:20.190 [warning] [AgentResponseAdapter] Skipping conversationState snapshot for unloaded user message bubble {“composerId”:“d0d59b3e-9708-4095-93f2-6ccb13c1e776”,“messageId”:“26aea8f4-9eb6-43e5-94da-52281597b92c”}
2026-05-24 22:35:07.982 [warning] [AgentResponseAdapter] Skipping conversationState snapshot for unloaded user message bubble {“composerId”:“d0d59b3e-9708-4095-93f2-6ccb13c1e776”,“messageId”:“6c618ce8-c04b-4c8b-b6d9-983df9840844”}
2026-05-25 00:25:53.683 [warning] [AgentResponseAdapter] Skipping conversationState snapshot for unloaded user message bubble {“composerId”:“d0d59b3e-9708-4095-93f2-6ccb13c1e776”,“messageId”:“cc60742f-954f-4795-b516-16617ec660c6”}
I found 49 occurrences of this warning across several renderer logs.
Storage evidence from one affected composer:
- composerData:d0d59b3e-9708-4095-93f2-6ccb13c1e776
- fullConversationHeadersOnly has 1183 entries
- conversationMap is 0 at rest
- persisted bubbleId:: rows exist
- affected bubble rows have conversationState equal to “~”, which decodes as an empty ConversationStateStructure
In several cases the warning messageId is a serverBubbleId, while the persisted row is keyed by a different local bubbleId. The header contains both IDs.
Suspected failure mode: userMessageAppended appears to check only the currently loaded in-memory conversationMap by the incoming messageId. If the bubble is unloaded/virtualized, or if the incoming ID is the serverBubbleId while storage is keyed by local bubbleId, the snapshot is skipped and the visible bubble keeps an empty/stale conversationState.
Suggested fix: resolve incoming messageId against fullConversationHeadersOnly using both bubbleId and serverBubbleId. If the full bubble is not in conversationMap, retrieve it from persisted message storage by local bubbleId, write the current composerDataHandle.data.conversationState to that bubble, persist it, and only warn if that recovery fails.
Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor