Claude Code v2.1.277 · 18 Sep 2026
Plugin hook dispatch deep-copies input for a fixed set of UI/registration events
Plugin hooks now receive a deep copy of the event payload for UI and registration events, not the original
Under the hood Tier: how much it should matter to you
2 Useful: my rating, 1 to 5
2 Signal: worth watching, 1 to 5
Plugin Hooks Area: what it touches
Internal Changes Kind: in v2.1.277, 18 Sep 26
Internal Changes Section of the release
What
For a fixed list of plugin events, ui.open , ui.toast , ui.status , ui.log , ui.notice, ui.ask, tool.register, command.register , agent.register , prompt.fill , and prompt.suggest , Claude Code now passes hooks a deep copy of the event's data instead of the original object, before any hook has a chance to see or change it.
Why
This stops a plugin hook from being able to mutate the original event data that Claude Code itself still relies on, isolating hook side effects to their own copy for these UI and registration events.
See this entry in the whole of v2.1.277 →
← Previous · 310 of 402
Hook manifest scan capability list expanded
Under the hood Plugin Hooks
In v2.1.277 Internal Changes release-page order
Next → · 312 of 402
Hooks-module-not-loaded diagnostics reformatted to identify the module, not just the…
Under the hood Plugin Hooks