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

Plugins cannot forge another plugin's buttons or rewrite the render envelope

Plugins can no longer forge another plugin's buttons or rewrite the rendering envelope around them.

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

Plugin hooks that alter the UI are now validated. A hook that returns a button it did not itself draw throws, and any rewrite must keep the surface, component and request id the engine set, keep the plugin identity, and preserve the origin on a user-message row. Hooks that answer with an origin or a wait the engine never set are rejected the same way.

Details
  • Applies to the chain of hooks plugins register on rendered UI, not to a specific plugin type.
  • The rejection names which field changed and states that the envelope belongs to the engine.
Evidence

a changed ${r} (the envelope is the engine's; a rewrite keeps surface, component and requestId)

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.247 →

Feedback