[BUG] claude_desktop_config.json mcpServers entries silently deleted on every write — no state in which entry both persists and loads (Windows MSIX)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 8, 2026

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

  1. Add a valid mcpServers entry (e.g. an npx/mcp-remote-based server) as a top-level key in claude_desktop_config.json
  2. Fully quit Claude Desktop (confirm process exit via Task Manager)
  3. Relaunch and immediately check Settings → Developer
  4. 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.

View original on GitHub ↗