Follow Discord
Sweep 22 Oct 2026 · 04:32Z Build v2.1.308 527 read Stable v2.1.308 Latest v2.1.308 Next v2.1.308 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.236 ·

Plugin and skill sync abort when the sync directory has been tampered with

Sync aborts with a clear message if anything in the sync path looks tampered with.

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

Before writing, sync now checks every path component from the config home down to the sync root and its staging and staging_pid folders, and aborts the whole round if any of them is a symlink or not a directory. Failures show up as "sync root refused (a symlink or stray file is in the way, or it was removed mid-round)" instead of silently writing through.

Details
  • The root is re-verified partway through each round, when files are landed.
  • Replacing an existing plugin directory now moves the old one aside, either renaming it to a .replaced-<pid>-<rand> directory or moving it to a trash directory under the config home, and restores it if the replacement fails.
  • New warning telemetry: plugins_sync_root_refused, skills_sync_root_refused, plugins_sync_trash_move_failed, plugins_sync_promotion_failed, skills_sync_manifest_unreadable.
  • No flag guards this; it is the sync path for everyone on this build.
Evidence

sync root refused (a symlink or stray file is in the way, or it was removed mid-round)

Strings lifted out of the shipped bundle, so the claim above can be checked against them.

See this entry in the whole of v2.1.236 →

Feedback