[BUG] settings.json enabledPlugins wiped during crash recovery in v2.1.83

Resolved 💬 3 comments Opened Mar 25, 2026 by ericismyeldestson Closed Mar 28, 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?

Title: settings.json enabledPlugins wiped during crash recovery in v2.1.83

Description:

After upgrading to v2.1.83, all enabledPlugins in settings.json were lost. Investigation revealed this was caused by a crash recovery process that completely recreated settings.json from scratch instead of
preserving existing user configuration.

Timeline (from file timestamps):

2026-03-24 20:26 .claude.json.corrupted created (0 bytes) ← config corrupted (likely during previous update)
2026-03-25 00:23 .claude.json.backup #1 created (13161 bytes)
2026-03-25 00:25 .claude.json.backup #2 created (13161 bytes)
2026-03-25 00:27 .claude.json.backup #3 created (15303 bytes) ← size jump, recovery process active
2026-03-25 00:28 .claude.json.backup #4 created (15290 bytes)
2026-03-25 00:30 settings.json completely recreated ← enabledPlugins wiped

Root cause: When Claude Code v2.1.83 started and detected the corrupted .claude.json, it triggered a recovery process that also recreated settings.json from scratch, discarding all existing user
configuration including enabledPlugins.

Impact:

  • All enabled plugins lost (discord@claude-plugins-official, github@claude-plugins-official, etc.)
  • Users have no way to recover which plugins were enabled without manually checking conversation history

Expected behavior: The crash recovery process should preserve the existing settings.json content, or at minimum merge it rather than overwrite it.

Environment:

  • Claude Code version: 2.1.83
  • OS: Windows 11 Pro

What Should Happen?

When .claude.json becomes corrupted and Claude Code initiates a recovery process, settings.json should be treated as a separate, independent file and left untouched. The recovery should only restore the
corrupted file, not recreate unrelated configuration files. If settings.json must be modified during recovery, the existing content should be read first and merged with any new defaults — never overwritten
from scratch. All user-configured values (such as enabledPlugins, model, permissions) must be preserved across updates and recovery events.

Error Messages/Logs

Steps to Reproduce

  1. Have plugins enabled in settings.json (e.g. discord@claude-plugins-official, github@claude-plugins-official)
  2. A crash or incomplete write corrupts .claude.json (can happen during an update or abnormal shutdown)
  3. Launch Claude Code — the recovery process triggers automatically
  4. After startup completes, open settings.json
  5. Observe that settings.json has been completely recreated with a new CreationTime matching the launch time, and all enabledPlugins entries are gone

Note: The corruption and recovery may happen silently in the background during an auto-update, with no warning shown to the user. The only evidence is the .claude.json.corrupted file left in
~/.claude/backups/.

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.81

Claude Code Version

2.1.83

Platform

Other

Operating System

Windows

Terminal/Shell

PowerShell

Additional Information

The .claude.json.corrupted file (0 bytes) found in ~/.claude/backups/ is direct evidence that the corruption occurred on 2026-03-24 at 20:26, approximately 4 hours before the recovery process wiped
settings.json. The corrupted file was likely caused by an incomplete write during a prior auto-update or abnormal shutdown — Claude Code wrote nothing to disk before the process was interrupted.

The backups/ directory contained the following files as evidence of the recovery sequence:

~/.claude/backups/
.claude.json.corrupted.1774409195377 2026-03-24 20:26 0 bytes
.claude.json.backup.1774423546880 2026-03-25 00:23 13161 bytes
.claude.json.backup.1774423640678 2026-03-25 00:25 13161 bytes
.claude.json.backup.1774423708993 2026-03-25 00:27 15303 bytes
.claude.json.backup.1774423708993 2026-03-25 00:28 15290 bytes

~/.claude/settings.json
CreationTime: 2026-03-25 00:30:38 ← matches recovery window exactly
LastWriteTime: 2026-03-25 00:30:38 ← identical, confirms full recreation not modification

The fact that settings.json CreationTime equals LastWriteTime is conclusive proof the file was deleted and recreated from scratch, not modified in place.

Configuration files attached:

  • ~/.claude/settings.json (post-recovery, user config lost)
  • ~/.claude/backups/.claude.json.backup.1774423708993 (last backup before recreation, contains lastOnboardingVersion: "2.1.81" confirming last working version)

Suggested fix: In the recovery path, before writing a new settings.json, check if the file already exists — if so, read and merge its contents rather than overwriting.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗