Plugin hooks.json does not register the MessageDisplay hook event (other events load fine)

Resolved 💬 3 comments Opened Jun 18, 2026 by pleasedodisturb Closed Jun 22, 2026

What happened

A plugin that declares a MessageDisplay hook in its hooks/hooks.json never gets that hook fired — even though every other hook event in the same manifest (UserPromptSubmit, PreToolUse, PostToolUse, Stop, PreCompact) loads and fires correctly. Moving the identical MessageDisplay entry into ~/.claude/settings.json makes it work immediately (no restart needed).

Steps to reproduce

  1. Install a plugin whose hooks/hooks.json includes a MessageDisplay entry shaped exactly like its other (working) hook entries:

``json
"MessageDisplay": [
{ "hooks": [ { "type": "command", "command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/message-display.js", "timeout": 10 } ] }
]
``

  1. Use the VS Code extension panel.
  2. The MessageDisplay hook never fires (no on-screen effect); the plugin's other hooks fire normally.
  3. Move that same entry into ~/.claude/settings.json hooks → it fires immediately.

Expected

MessageDisplay should register from a plugin hooks.json like every other hook event.

Actual

Only MessageDisplay fails to wire from a plugin manifest; the byte-identical entry in settings.json works.

Environment

  • Claude Code 2.1.181, VS Code extension, Windows 11
  • Plugin installed via the plugins array in ~/.claude/settings.json (absolute path)
  • Reproduced by @Non-Dev-Contributor; plugin: pleasedodisturb/chronoclaude
  • On macOS, the plugin-loaded MessageDisplay does fire — so this may be Windows- or install-method-specific.

Notes

Surfaced while resolving #44763. The plugin's MessageDisplay entry is byte-identical in shape to its working UserPromptSubmit/Stop entries, so this looks like a loader gap for the MessageDisplay event type rather than a manifest error. Workaround for affected users is to register MessageDisplay directly in settings.json.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗