Follow Discord
Sweep 25 Sep 2026 · 19:33Z Build v2.1.283 504 read Stable v2.1.274 Latest v2.1.283 Next v2.1.283 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.281 ·

Plugin marketplaces no longer report a failed refresh as fresh, and can fall back to a stale cache

When a marketplace refresh falls back to the old copy, its last-updated time stays put, and stale catalog caches can now be used

Group of 2 You'll notice Improvements
JSON All of v2.1.281
You'll noticeTier: how much it should matter to you
2Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
PluginsArea: what it touches
ImprovementsKind: in v2.1.281,
ImprovementsSection of the release

What

A plugin marketplace is a catalog of plugins that Claude Code keeps as a local git copy (a clone) and refreshes from time to time. This release changes what happens when a refresh cannot reach the remote.

  • The git marketplace refresh now returns { kind: "current" } when the clone is already up to date. It returns { kind: "kept-stale" } when the remote is unreachable and CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE keeps the old clone. Both cases used to return nothing.
  • The marketplace load result now carries a keptStaleClone flag for the second case. The catalog-publish path always sets it to false.
  • When keptStaleClone is set, lastUpdated is not moved to now, the post-load step is skipped, and the plugin list is not reloaded. For the official marketplace, only installLocation is updated, and only if that path changed. Re-adding such a marketplace keeps its previous lastUpdated time.
  • The event for a failed cloud fetch that falls back to git is now also recorded when the result was a stale clone. The refresh also records whether it was triggered in the background or by an update.
  • Marketplace and plugin lookups take a new reason argument: install, update, load or other.
  • The plugin catalog cache reader gains an allowStale option that skips the "Plugin catalog cache is stale (>24 h old)" rejection. Before, a stale cache was always rejected.
  • A reserved-name check has a new special case, and two placeholder functions that only return nothing in this build were added.

Why

The "last updated" time for a marketplace now reflects its last successful refresh, so it no longer looks up to date after a git refresh that actually failed. Plugins can also keep working from an older cached catalog when the network is unavailable.

Read from
How sure we are
One source agreesOne thing we can check says the same as this entry.
Anthropic's release notes agreeFixed known_marketplaces.json recording a marketplace as refreshed when its remote could not be reached and…

See this entry in the whole of v2.1.281 →

Feedback