claude-code - 💡(How to fix) Fix [BUG] Claude Desktop wipes session groupings on preference write

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

No error logged. The wipe is completely silent.

Root Cause

This is the same root cause as #34359 and #32345 — Claude Desktop rewrites claude_desktop_config.json from incomplete in-memory state on quit or on a preference change after restart, silently destroying whatever keys weren't yet rehydrated. Those reports documented mcpServers being wiped. This report documents the same mechanism wiping a different key: session groupings (preferences.epitaxyPrefs.dframe-local-slice).

Code Example

Windows:  %APPDATA%\Claude\claude_desktop_config.json
macOS:    ~/Library/Application Support/Claude/claude_desktop_config.json
Linux:    ~/.config/Claude/claude_desktop_config.json

---

{
  "preferences": {
    "epitaxyPrefs": {
      "dframe-local-slice": {
        "pinnedOrder": [],
        "customGroupAssignments": {
          "code:local_<sessionId>": "cg-<groupId>"
        },
        "customGroupOrder": {
          "cg-<groupId>": ["code:local_<sessionId>", ...]
        }
      }
    }
  }
}

---

No error logged. The wipe is completely silent.

Diagnosis (Windows):
  dir "%APPDATA%\Claude\claude_desktop_config.json"

A healthy file with groupings is 520 KB depending on session count.
A wiped file is ~12 KB.

Confirm the wipe by reading the file — if these are both {} and you had groupings:
  preferences.epitaxyPrefs.dframe-local-slice.customGroupAssignments{}
  preferences.epitaxyPrefs.dframe-local-slice.customGroupOrder{}
RAW_BUFFERClick to expand / collapse

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?

Desktop app version: 1.7196.0 (2dbd78) OS: Windows 11

This is the same root cause as #34359 and #32345 — Claude Desktop rewrites claude_desktop_config.json from incomplete in-memory state on quit or on a preference change after restart, silently destroying whatever keys weren't yet rehydrated. Those reports documented mcpServers being wiped. This report documents the same mechanism wiping a different key: session groupings (preferences.epitaxyPrefs.dframe-local-slice).

Both prior reports were closed as "invalid" and are now locked. Filing a new report because (a) the affected key is different, (b) this confirms the bug is broader than MCP configs, and (c) the reproduction and diagnosis are materially more detailed.

File-size signature: claude_desktop_config.json dropped from 9,543 bytes to 1,710 bytes at the moment of wipe. The resulting file is a valid preferences stub with empty groupings. We waited one hour — no server-side rehydration occurred.

Architecture

claude_desktop_config.json is the single source of truth for session groupings:

Windows:  %APPDATA%\Claude\claude_desktop_config.json
macOS:    ~/Library/Application Support/Claude/claude_desktop_config.json
Linux:    ~/.config/Claude/claude_desktop_config.json

The affected section:

{
  "preferences": {
    "epitaxyPrefs": {
      "dframe-local-slice": {
        "pinnedOrder": [],
        "customGroupAssignments": {
          "code:local_<sessionId>": "cg-<groupId>"
        },
        "customGroupOrder": {
          "cg-<groupId>": ["code:local_<sessionId>", ...]
        }
      }
    }
  }
}

This data exists in no other file on disk — not LevelDB, not IndexedDB, not LocalStorage, not Session Storage. One file, no replication, no backup.

What Should Happen?

A preference write should not emit empty customGroupAssignments / customGroupOrder when those values were non-empty on disk. Options in increasing order of effort:

  1. Read-then-merge — preserve on-disk grouping data if in-memory grouping state is empty at write time.
  2. Delay write — wait until server-side grouping state is confirmed loaded before serialising.
  3. Versioned backups — keep the previous N versions on every rewrite (Chromium's Preferences file does this).
  4. Split the file — move grouping state to epitaxy-groupings.json with append-mostly semantics so a botched preference write cannot destroy it. mcpServers deserves the same separation.

Error Messages/Logs

No error logged. The wipe is completely silent.

Diagnosis (Windows):
  dir "%APPDATA%\Claude\claude_desktop_config.json"

A healthy file with groupings is 5–20 KB depending on session count.
A wiped file is ~1–2 KB.

Confirm the wipe by reading the file — if these are both {} and you had groupings:
  preferences.epitaxyPrefs.dframe-local-slice.customGroupAssignments  →  {}
  preferences.epitaxyPrefs.dframe-local-slice.customGroupOrder        →  {}

Steps to Reproduce

Trigger 1 — preference toggle in a restart-adjacent window (reproduced):

  1. Toggle any Desktop preference (e.g. "remote control by default") ON.
  2. Quit Claude Desktop fully — tray icon → Quit, not window close.
  3. Reopen Claude Desktop.
  4. Toggle the same preference OFF.

The write at step 4 serialises the entire file from current in-memory state. If groupings weren't rehydrated from the server between steps 3 and 4, customGroupAssignments and customGroupOrder are written as {}.

Trigger 2 — plain quit-and-reopen (observed once, not yet confirmed deterministic):

File dropped from 9,543 to 1,710 bytes on a quit-reopen cycle with no preference change in between.

Claude Model

None (configuration-layer bug)

Is this a regression?

Unknown — cannot determine which Desktop version introduced epitaxyPrefs / dframe-local-slice grouping storage.

Last Working Version

No response

Claude Code Version

Claude Desktop 1.7196.0 (2dbd78), Windows 11

Platform

Anthropic API

Operating System

Windows (confirmed). Mechanism is platform-agnostic — same file, same write path on macOS and Linux.

Terminal/Shell

PowerShell

Additional Information

Recovery: Only possible from a pre-wipe backup. Restore it only after quitting Desktop fully (tray icon → Quit + verify with tasklist /FI "IMAGENAME eq claude.exe"). Any preference toggle before fully quitting will re-trigger the wipe.

What is NOT affected: Session transcripts (.jsonl files under ~\.claude\projects\) and per-session metadata (claude-code-sessions\*\local_*.json) are untouched. Sessions created during the wiped window survive — they just appear ungrouped in the sidebar.

Prevention until fixed: Back up claude_desktop_config.json before toggling any Desktop preference, before quitting Desktop, and before installing or updating any MCP server entry. The same file holds mcpServers — this aggressive-rewrite behaviour has also been observed wiping that key in #34359 and #32345.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING