[BUG] Desktop 1.25927.0: every session/config save fails with "create-path redirected through a planted symlink" (false positive on enterprise Windows profile) — chat history vanishes from nav
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Since desktop app 1.25927.0 first launched on this machine, every persisted write that goes through the app's symlink-guarded save path fails with create-path redirected through a planted symlink: <path under %APPDATA%\Claude>. No symlink or reparse point exists anywhere on the affected paths (evidence in Additional Context). Each failed save leaves a 0-byte .tmp file.
User-visible result: no session metadata is ever persisted, so every chat created since the update silently disappears from the left-hand nav on the next app restart, and continued chats freeze under stale dates. It presents as total chat-history loss, though CLI-written transcripts under ~/.claude/projects are intact. The same guard also blocks scheduled-task saves, claude_desktop_config.json, extensions-blocklist.json, and RemotePluginManager/SkillsPlugin sync. Failures appear only in main.log; the UI shows no error.
The machine trait appears to be an enterprise-managed Windows profile (profile management maintains a local cache profile at C:\Users\local_<user>, and %TEMP% resolves through its 8.3 short name LOCAL_~1). Expect this to hit corporate fleets as the rollout + relaunch cycle spreads.
What Should Happen?
Saves under %APPDATA%\Claude should succeed when no symlink/reparse point is present on the path — the guard should only reject genuinely redirected paths (e.g. gate on FILE_ATTRIBUTE_REPARSE_POINT on the resolved path, and/or normalize case and 8.3 short names before comparing). At minimum the error should log the resolved path alongside the expected one so false positives are diagnosable, and the UI should surface that history isn't being saved.
Error Messages/Logs
2026-08-06 16:06:54 [error] Failed to save session local_b33e3d08-842d-400f-b9ed-203030b969e1: create-path redirected through a planted symlink: C:\Users\<user>\AppData\Roaming\Claude\claude-code-sessions\<orgId>\<userId>\...
2026-08-06 16:05:23 [error] [ScheduledTasks] Failed to save scheduled tasks: create-path redirected through a planted symlink: C:\Users\<user>\AppData\Roaming\Claude\local-agent-mode-sessions\<orgId>\<userId>\...
2026-08-06 16:05:24 [error] Failed to save blocklists: Error: create-path redirected through a planted symlink: C:\Users\<user>\AppData\Roaming\Claude\extensions-blocklist.json.tmp
2026-08-06 16:05:24 [error] [RemotePluginManager] Sync failed: create-path redirected through a planted symlink: ...
2026-08-06 16:02:24 [warn] [SkillsPlugin] Periodic sync failed: create-path redirected through a planted symlink: ...
# on-disk effect in claude-code-sessions\<orgId>\<userId>\:
8/6/2026 3:17 PM 0 bytes local_9ec3cae6-....json.tmp (created, never written, never renamed)
8/6/2026 4:05 PM 0 bytes local_8e43deab-....json (new session entry created 0-byte)
Steps to Reproduce
- Windows 11 Enterprise machine with enterprise profile management (local profile cache at C:\Users\local_<user>; %TEMP% resolves via 8.3 name).
- Update desktop app to 1.25927.0 and relaunch so the new version activates.
- Start or continue any chat; watch %APPDATA%\Claude\logs\main.log — every session save fails with the planted-symlink error and .tmp files stay at 0 bytes.
- Restart the app: the chat is gone from the nav (its entry was never persisted). Transcript under ~/.claude/projects is intact and claude --resume <cliSessionId> still works.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
1.24012.11 (desktop). Onset correlates to the second: Squirrel-ProcessStart.log shows first launch of app-1.25927.0 at 2026-08-05 21:05:39; first failure in main.log at 21:05:47. Rotated logs from 1.24012.11 contain zero occurrences.
Claude Code Version
Desktop app 1.25927.0 (main.log: desktop commit 003700efafbc2ccb4b1177a5e637b14da381799e)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
Evidence the guard is false-positiving (no symlink exists):
- No reparse points on any path component — Attributes -band ReparsePoint is False for C:\Users through ...\Claude\claude-code-sessions.
- Node's fs.realpathSync.native() on the sessions directory returns the input path unchanged.
- Every other process writes to the exact same directories without error (PowerShell, the CLI writing transcripts), and the app itself writes non-guarded files fine (config.json, Preferences, logs, LevelDB).
- Same machine/profile on 1.24012.11: weeks of logs, zero failures.
Related sharp edge found while recovering: LocalSessions.getAll silently drops any index entry failing IPC validation — e.g. "promptSuggestion": null discards the entire session from the nav with only a log warning (Dropping session local_... — fails IPC validation (field: promptSuggestion)). Consider ignoring/coercing invalid optional fields instead of dropping entries.
Workaround for affected users: rebuild local_<id>.json entries from transcripts with an external script (external writes succeed; only the app's guarded writes fail), then restart the app.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗