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.269 ·

New session.surfaces plugin/hook endpoint added alongside session.surface

Plugins and hooks gain a session.surfaces (plural) endpoint listing all attached drawing surfaces, plus a matching lifecycle hook event

TierUnder the hoodhow much it should matter to you
Useful2my rating, 1 to 5
Signal2worth watching, 1 to 5
AreaPlugin Hookswhat it touches
KindInternal Changesin v2.1.269,
Group of 3 Under the hood No documentation found

Plugins and hooks gain a session.surfaces (plural) endpoint listing all attached drawing surfaces, plus a matching lifecycle hook event

What

  • A new plugin lifecycle hook event, session.surfaces (plural), was added alongside the existing session.surface, running a different handler against the plugin.
  • A new $.session.surfaces control endpoint was added, returning the list of all attached drawing surfaces (terminal first, if bound); the existing session.surface endpoint now derives its answer from the same shared helper.
  • The allow-listed set of capability names available to the plugin/hook SDK grew to include session.surfaces (alongside the existing session.surface) and config.list (alongside existing capabilities like tool.register/command.list).

Why Previously plugins/hooks could only ask about a single bound surface; session.surfaces lets them see everything a session has attached, which matters for plugins that need to target or coordinate across multiple surfaces.

Read from
Names in the bundlesession.surfacesconfig.list

See this entry in the whole of v2.1.269 →

Feedback