You'll notice
Failed model-switch hook loads now give a specific, actionable error message.
When plugin-delivered PreModelSwitch hooks can't be loaded, the block reason is now a specific message explaining why, and notes that switching models again will re-check the hooks. PostModelSwitch hook-load failures similarly now include the underlying reason inline, instead of a generic message saying plugin hooks could not be loaded.
Names in the bundlePreModelSwitchPostModelSwitch
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 PostModelSwitch, on Hooks reference.
| SessionStart, SubagentStart, PostModelSwitch | Context only | `hookSpecificOutput.additionalContext` adds context for Claude. SessionStart also accepts [`initialUserMessage`, `watchPaths`, `sessionTitle`, and `reloadSkills`](#sessionstar…hooks see the edit
Confirmed since
Anthropic's documentation has since written up PreModelSwitch, on Hooks reference.
| PreModelSwitch | `hookSpecificOutput` or top-level `decision` | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` also [cancels the switch](#premodelswitch-decision-control) |hooks see the edit
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up PreModelSwitch, on Hooks reference.