{"version":"2.1.283","anchor":"installed-pluginsjson-unreadable-or-foreign-records-are-ke","canonical_anchor":"installed-pluginsjson-unreadable-or-foreign-records-are-ke","heading":"Plugin list file is protected from being overwritten by a build that cannot read it","tier":"notice","area":"Plugins","url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283\/e\/installed-pluginsjson-unreadable-or-foreign-records-are-ke","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.283","markdown":"### Plugin list file is protected from being overwritten by a build that cannot read it\n\nWhen installed_plugins.json holds records or a format this build cannot read, Claude Code keeps them and refuses plugin changes and installs\n\n**What**\n\n`installed_plugins.json` is the file where Claude Code records which plugins (add-on packages) are installed. Claude Code is now careful not to erase records in it that it does not understand.\n\n- Records under a valid plugin id that this build cannot parse, perhaps written by a newer build, make the list count as unreadable. This build will not replace the file while they remain.\n\n- Plugin changes are then refused, with guidance to update Claude Code, uninstall with the version that wrote the record, or delete the record by hand and run `\/reload-plugins`.\n\n- Plugin installs, from the interface and from the command line, now read the file first. If it cannot be read, the install stops with reason `installed-list-held` and an error saying the plugin \"was not installed\", telling you to update Claude Code or use the version that wrote the file. The command-line path reports failureCode `install_records_unreadable`.\n\n- Records whose key is not a valid plugin id are set aside and copied to a dated side file on the next write. If that copy cannot be written, the file is left unchanged and you are told to make the path writable or move what is there.\n\n- A wholly unreadable file has its contents saved to a side file before it is rebuilt, but only when it is a plain single-link file.\n\n- A file with a format version above 2 is refused.\n\n**Why**\n\nIf you run more than one version of Claude Code on the same machine, an older one can no longer silently wipe out plugin records written by a newer one. Expect plugin installs and changes to stop with an explanation until the unreadable records are dealt with.\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5"}