Follow Discord
Sweep 22 Sep 2026 · 17:19Z Build v2.1.280 501 read Stable v2.1.267 Latest v2.1.280 Next v2.1.280 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.267 ·

Plugin/hook capability API expands: renamed fs actions, new env/settings/session capabilities, and a terminal UI surface system

Plugins and hooks gain renamed filesystem actions, new capabilities for settings/env/session usage, stricter validation, and a new terminal UI system

TierUse it nowhow much it should matter to you
Useful4my rating, 1 to 5
Signal4worth watching, 1 to 5
AreaHookswhat it touches
KindNew Featuresin v2.1.267,
Group of 6 Use it now Notable

Plugins and hooks gain renamed filesystem actions, new capabilities for settings/env/session usage, stricter validation, and a new terminal UI system

What

  • The plugin capability actions fs.readFile, fs.writeFile, and fs.listDir are renamed to fs.read, fs.write, and fs.list (including the underlying IPC event name).
  • Plugins and hooks gain four new capabilities: session.usage (read session usage stats), settings.read (read merged settings from a named source), and env.get/env.set (read and write environment variables) — all fully wired with permission checks and handlers.
  • New validation guards these and other hook APIs: a hook's on('event') matcher can't be a nested object matched against a primitive; next(e) handlers for env.get/env.set can only change the value's data, not other fields; and ui.message calls can't rewrite fields like surface, component, requestId, element, or module (only data may change), and are rejected if their serialized data is too deeply nested or too large.
  • A large new subsystem lets plugins mount custom terminal UI elements ("Clients") declared via a surface field in hooks.json. It handles rendering, mounting/unmounting, resizing, mouse and keyboard input, hover/focus state, a row-budget that can reject renders pushing a dialog over its row limit, and message dispatch between the plugin and its UI.

Why Together these give plugins and hooks a broader, more capable API — access to environment variables, settings, and session usage, plus the ability to draw real interactive terminal UI — while the renamed, more consistent action names and new validation keep that expanded surface from letting a plugin corrupt data it shouldn't touch or send oversized payloads.

Read from
Names in the bundlesessionenv
Since it was published

The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.

Confirmed since Anthropic's documentation has since written up env, on Use Claude Code with Chrome. In [plan mode](/docs/en/permission-modes#analyze-before-you-edit-with-plan-mode), a permission prompt appears before Claude records a GIF, opens a new tab, or runs a shortcut. If [bypass permissions mode is available](/docs/en/permission-m… chrome see the edit
Confirmed since Anthropic's documentation has since written up session, on Troubleshoot Claude Tag setup. Most of the silence problems in this section span a whole workspace or channel and come down to configuration. If Claude stays silent in one thread but answers everywhere else, a setting isn't the cause. Either Claude's session for that th… claude-tag/admins/troubleshooting see the edit
Added since A small documentation edit on Claude Code changelog touched a line naming session after this was published. * Fixed read-only git commands in Bash unexpectedly asking for permission after a session had been running for a while (regression in 2.1.269) changelog see the edit
Added since A small documentation edit on Connect a service that isn't in the list touched a line naming env after this was published. Claude can call the endpoint with `curl`, an AWS SDK, or the AWS CLI. The sandbox holds no real AWS credentials, so a CLI or SDK signs the request with placeholder values; Agent Proxy strips that signature and re-signs with the stored cred… claude-tag/admins/connections/custom see the edit
Confirmed since Anthropic's documentation has since written up session.usage, on Events. - `type: "session.usage"` api/beta/sessions/events see the edit
How sure we are
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agreesAnthropic's documentation has since written up session.usage, on Events.

See this entry in the whole of v2.1.267 →

Feedback