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

Claude Code v2.1.247 ·

Plugin file access is checked against the session root as well as the project root, and can list ancestor files

Plugin file access is now checked against the session root too, and plugins can list files in parent directories.

Under the hood No documentation found New Features
JSON All of v2.1.247
Under the hoodTier: how much it should matter to you
2Useful: my rating, 1 to 5
3Signal: worth watching, 1 to 5
PluginsArea: what it touches
New FeaturesKind: in v2.1.247,
New FeaturesSection of the release
What

File operations from plugins (fs.listDir, fs.exists, fs.stat, writes) now pass the calling plugin's working directory along with the request, and the path check confirms the target sits inside the session root as well as the project root before allowing it. A new fs.ancestors operation lets a plugin ask for named files in the directories above its working directory.

Details
  • Path vetting resolves several roots (the dispatch root, its real path, and the real session path) instead of one project root, and both roots are handed to the check for configuration files that have been moved elsewhere.
  • Plugins call the new op as ancestors: (t) => e("fs.ancestors", { names: t.names }).
  • Neither the operation nor its handler existed in 2.1.246.
Evidence

"fs.ancestors"

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

Read from
Names in the bundlefs.ancestors

See this entry in the whole of v2.1.247 →

Feedback