Mods (function-hook plugins) load but never run in desktop Code tab; CLAUDE_CODE_PLUGIN_DIRS ignored
Status Open
Reported on v2.1.295
Maintainer reply None cached
Activity 0 comments · opened Oct 12, 2026
Environment
- Claude desktop app 2.31226.1, Code tab, local session (macOS, Darwin 25.5.0)
- Claude Code 2.1.295
- Team plan. No managed settings: no managed-settings.json, server-managed settings empty, no device profile.
What happened
- I wrote a mod in the session's dev-mods folder (
.claude-plugin/plugin.json,hooks/hooks.jsonwith"modules": ["./register.tsx"],hooks/register.tsx). The mod hookstool.call,prompt.submit,session.startandui.renderonAbovePrompt. - I accepted "Enable hot reloading for this session". The session reported the mod as loaded, and the engine wrote
.claude-plugin/types/andtsconfig.jsoninto the mod folder. - None of the hooks ever ran:
- No
AbovePromptband was drawn. - A
tool.callhook that calls$.ui.toast(...)and$.store.set(...)on every Bash call produced no toast and no store file. - Tested with 4 background Bash tasks, including after a full app restart.
- No error lines appeared in the transcript.
- Separately, setting
"env": { "CLAUDE_CODE_PLUGIN_DIRS": "~/.claude/mods/task-progress" }in~/.claude/settings.jsondoesn't load the mod in new desktop sessions. The engine never writes.claude-plugin/types/into that folder.
Expected
Per https://code.claude.com/docs/en/plugins/mods/overview, mods are on by default in the desktop Code tab from v2.1.286, so the hooks should run and the band should draw.