[BUG] claude_desktop_config.json mcpServers entries silently deleted on every write — no state in which entry both persists and loads (Windows MSIX)
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?
Preflight Checklist
I have searched existing issues and this hasn't been reported yet
(note: closely related to #56296 — this report adds read-only-file testing and EPERM log evidence not covered there)
This is a single bug report (not multiple issues combined)
I am using the latest version of Claude Desktop
Manually-added mcpServers entries in claude_desktop_config.json are silently deleted on the app's own config writes, which fire on both app launch and account login/logout state transitions. There is no file-permission state in which a manually-added entry both survives on disk and actually loads into the running app — this was tested exhaustively (see table below), ruling out user error as the cause.
Actual Behavior
Entry is silently deleted on the next config write — no warning, no backup, and (in the read-only test) no successful fallback either, just an unhandled EPERM.
What Should Happen?
Expected Behavior
Manually-added mcpServers entries persist across restarts and account state changes, merged with the app's own preference writes.
Error Messages/Logs
[warn] rename(claude_desktop_config.json.tmp → claude_desktop_config.json) failed (EPERM), falling back to direct write
[error] Error reading or parsing config file: Error: EPERM: operation not permitted, open 'claude_desktop_config.json'
Steps to Reproduce
- Add a valid
mcpServersentry (e.g. annpx/mcp-remote-based server) as a top-level key inclaude_desktop_config.json - Fully quit Claude Desktop (confirm process exit via Task Manager)
- Relaunch and immediately check Settings → Developer
- Entry is absent; re-checking the file on disk shows it's been replaced with a preferences-only stub
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
1.26832.0 (Claude Desktop app — this report is not about Claude Code CLI)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
| File state | mcpServers placement | Result |
|---|---|---|
| Writable | Nested incorrectly (under preferences.epitaxyPrefs, from a copy-paste error) | Silently overwritten |
| Writable | Correct — top-level key, JSON validated with a parser | Silently overwritten |
| Read-only | Correct — top-level key | Survives on disk, but app fails to load it |
Happy to provide the full main.log if useful for triage. This blocked a working integration with an external MCP server (Zerodha Kite) for several days before the root cause was isolated to this rather than the external server itself.