Skip to content

[BUG] macOS Desktop app silently deletes session JSONL files; UI displays messages from deleted sessions while backend starts freshs #41874

@astounding

Description

@astounding

Preflight Checklist

  • I have searched existing issues and this hasn't been reported yet
  • This is a single bug report (please file separate reports for different bugs)
  • I am using the latest version of Claude Code

What's Wrong?

What's Wrong:

The Claude Code desktop app silently deleted main session JSONL files for two prior sessions in a project, while leaving their subagent subdirectories intact. When reopening the project, the UI rendered a message from one of the deleted sessions visually, but the backend created a brand new session without that message's content. From the model's perspective, the displayed instructions never existed — resulting in a confused response that appeared to ignore clearly visible instructions.

Symptoms observed:

  1. A project had two prior sessions with conversation history (sessions 703d8465 from Jan 28 and 7814e319 from Feb 4). Upon returning on Apr 1, all prior history was gone.
  2. The user typed new instructions. The UI displayed this message at the top of the conversation.
  3. After a brief tab switch and follow-up ("Hello? Are you going to do this?"), Claude responded with no knowledge of the instructions.

Forensic findings:

  • Two session JSONL files deleted from disk while sessions-index.json still references them and their subagent subdirectories still exist with data (1 file / 6 files respectively). Suggests a cleanup process that targets top-level .jsonl files but doesn't recurse into subdirectories or update the index.
  • UI/backend desync: The user's original instructions message is visible in the UI but does not appear anywhere in the new session's JSONL file. The session starts with the follow-up message only.
  • sessions-index.json is stale: Last modified Feb 4, references both deleted files, does not include the current active session.
  • Current session structural anomalies: 9 root entries (expected 1–2), 13 of 50 entries (26%) unreachable from the parent chain tail — consistent with compaction corruption pattern in Conversation history missing on resume (except last message) #24304.

The exact trigger has not been identified. The deletion occurred sometime between 2026-02-04 and 2026-04-01. Possible triggers include app updates, session GC, or multi-project interactions.

Related Issues


What Should Happen:

Image

What Should Happen?

  1. Session JSONL files should not be silently deleted while subagent data is retained
  2. If a session file is deleted or unavailable, the UI should not render messages from it as if they are part of the active conversation
  3. sessions-index.json should be kept in sync when sessions are created or removed
  4. The backend session state and UI display should always agree on what messages exist

Error Messages/Logs

No error messages were displayed to the user. The failure was silent. Forensic examination of the session JSONL files revealed:

Session 703d8465-f74a-4245-9fc6-6be4312a200f.jsonl — referenced in sessions-index.json but file does not exist on disk
Session 7814e319-9574-48d2-8e04-5b1dcb946bfe.jsonl — referenced in sessions-index.json but file does not exist on disk
Session ca93f106-354c-4e72-9caf-cbfaf18649bb.jsonl — exists but first entry is the user's follow-up message, not the original instructions that were visible in the UI

Steps to Reproduce

Steps to Reproduce:

The exact trigger has not been identified. The deletion occurred sometime between 2026-02-04 (last prior session activity) and 2026-04-01 (when the loss was discovered). Multiple attempts to reproduce via tab-switching during active model inference were unsuccessful. Possible triggers include app updates, session garbage collection, or specific multi-project interaction patterns during the intervening period.

The attached screenshot occurred during a single user launch of Claude App. After launch and selection of an existing Code project tab, noticing that the chat history was unexpectedly blank, the user initiated a prompt asking what had happened. The user switched away while the app tab was "Cogitating" then moments later switched back and noticed no output had been produced and there was no visible activity indicating a response was being composed. The user then prompted "Hello? Are you going to do this?" to which Claude responded, "Hi! I'm ready to help, but I'm not sure what "this" refers to. Could you let me know what you'd like me to do?" In less than 60 seconds Claude had forgotten the prompt within the project tab, and further investigation was initiated within that same tab resulting in this bug report.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

No response

Claude Code Version

Claude Desktop App: Version 1.1.9669 (aea25d) Claude Code Engine: 2.1.87

Platform

Other

Operating System

macOS

Terminal/Shell

Other

Additional Information

Platform & Terminal Info:

Claude Desktop App: Version 1.1.9669 (aea25d)
Claude Code Engine: 2.1.87
Platform: macOS (Darwin 25.4.0)
Model: claude-opus-4-6

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleIssue is inactive

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions