Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.318 Next v2.1.319 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.267 ·

hooks.json can now declare a surface module

hooks.json can now declare a separate 'surface' module for drawing a hook module's UI elements

Use it now New Features
JSON All of v2.1.267
Use it nowTier: how much it should matter to you
3Useful: my rating, 1 to 5
3Signal: worth watching, 1 to 5
PluginsArea: what it touches
New FeaturesKind: in v2.1.267,
What probably matters to youSection of the release
What

A plugin's hooks.json configuration file can now include an optional surface field, naming a module (a code file separate from the main hooks module) whose job is to render the hooks module's Client UI elements onto a display surface. This field requires the modules field to also be present, and its format is checked by a new validation rule: it must be a path relative to the hooks.json file and cannot start with $.

Why

This gives plugin authors a way to separate the code that renders UI elements from the main hooks logic, which is useful for plugins that need to show their own interface elements.

Read from
Names in the bundlesurface
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.

Added since A small documentation edit on TypeScript SDK V2 session API (removed) touched a line naming surface after this was published. V2 was an experimental session API that removed the need for async generators and yield coordination. Instead of managing generator state across turns, each turn was a separate `send()`/`stream()` cycle. The API surface reduced to creating… agent-sdk/typescript-v2-preview see the edit
Confirmed since Anthropic's documentation has since written up surface, on List Events. When set, this event was cross-posted from a subagent's thread to surface its custom tool use on the primary thread's stream. Empty on the thread's own events. Echo this on a `user.custom_tool_result` event to route the result back. api/beta/sessions/events/list 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 surface, on List Events.

See this entry in the whole of v2.1.267 →

Feedback