Bug
/reload-plugins does not reload plugin hook scripts into the running session. After updating a plugin that changes a hook, the old hook code continues to execute until the Claude Code process is killed and restarted.
Steps to reproduce
- Install a plugin with a
PreToolUse hook (e.g., one that denies certain shell commands).
- Publish a new plugin version that changes the hook logic (e.g., removes an entry from a deny list).
- Run
/plugin marketplace update <name> — succeeds, new version appears on disk.
- Run
/reload-plugins — reports success with a count of loaded items.
- Trigger the hook — old behavior persists. The denied command is still denied despite the fix being on disk.
Evidence
Plugin version 1.4.11 had uv in a HOST_TOOLS deny list. Version 1.4.12 removed it. After update + reload:
/Users/.../.claude/plugins/cache/.../1.4.12/hooks/scripts/lib/host-container-tools.sh — correct (no uv)
- Running session still blocks
uv with the 1.4.11 error message
The only workaround is to kill and restart the Claude Code session.
Impact
Hooks are the primary mechanism for enforcing agent behavior constraints (blocking dangerous commands, enforcing workflow rules, etc.). When a hook has a bug that incorrectly blocks valid commands, the inability to hot-reload the fix means:
- Every running session must be killed and restarted
- There is no way to verify which hook version is loaded without filesystem inspection
/reload-plugins gives false confidence — it reports success but hooks remain stale
Expected behavior
/reload-plugins should reload ALL plugin components: skills, hooks, settings, and any other plugin-provided artifacts. If it cannot reload certain components, it should clearly state what was and was not reloaded.
Environment
- Claude Code CLI (macOS, Darwin 25.3.0)
- Claude Opus 4.6
Bug
/reload-pluginsdoes not reload plugin hook scripts into the running session. After updating a plugin that changes a hook, the old hook code continues to execute until the Claude Code process is killed and restarted.Steps to reproduce
PreToolUsehook (e.g., one that denies certain shell commands)./plugin marketplace update <name>— succeeds, new version appears on disk./reload-plugins— reports success with a count of loaded items.Evidence
Plugin version 1.4.11 had
uvin a HOST_TOOLS deny list. Version 1.4.12 removed it. After update + reload:/Users/.../.claude/plugins/cache/.../1.4.12/hooks/scripts/lib/host-container-tools.sh— correct (nouv)uvwith the 1.4.11 error messageThe only workaround is to kill and restart the Claude Code session.
Impact
Hooks are the primary mechanism for enforcing agent behavior constraints (blocking dangerous commands, enforcing workflow rules, etc.). When a hook has a bug that incorrectly blocks valid commands, the inability to hot-reload the fix means:
/reload-pluginsgives false confidence — it reports success but hooks remain staleExpected behavior
/reload-pluginsshould reload ALL plugin components: skills, hooks, settings, and any other plugin-provided artifacts. If it cannot reload certain components, it should clearly state what was and was not reloaded.Environment