What
Changes to the list of installed plugin marketplaces (refresh times, installs, auto-update toggles) now take a lock file first and re-read the current file inside it, so two Claude Code sessions running at once no longer overwrite each other's entries.
Details
- The helper acquires a
.lockalongsideknown_marketplaces.jsonwith retries, applies the mutation to freshly read state, and skips the write entirely when nothing changed. - If the lock cannot be taken or is compromised, it logs
known_marketplaces.json lock compromised:, writes anyway, and reportstengu_known_marketplaces_fallback_write. - Marketplaces whose install location sits inside a bundled plugin directory return no write at all, so those entries are never rewritten.
Evidence
tengu_known_marketplaces_fallback_write, known_marketplaces.json lock compromised:
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
One source agreesOne thing we can check says the same as this entry.
Anthropic's release notes agree
Fixed a startup race that could silently unregister a plugin marketplace due to concurrent writes to known_marketplaces.json