#3114·ECC

hooks.json: unknown keys ($schema, id, description) ignored on Claude Code plugin hook load

Author: blazingbunnyCreated Sep 13, 2026Updated Sep 14, 2026

Description

Loading the ECC plugin's hooks/hooks.json (v2.2.1) produces a startup warning from Claude Code:

ecc: hooks.json: unknown keys "$schema", "description" in hooks.PreToolUse[0], "id" in hooks.PreToolUse[0], "description" in hooks.PreToolUse[1], "id" in hooks.PreToolUse[1] and 42 more ignored

Cause

hooks/hooks.json includes a root-level "$schema" key and, on every one of its 23 hook entries across all events (PreToolUse, PostToolUse, PostToolUseFailure, PreCompact, SessionStart, Stop, SessionEnd), extra "id" and "description" fields. Claude Code's plugin hook loader (tested on 2.1.270, the current latest release) only recognizes matcher and hooks (with type/command/timeout/statusMessage) on each entry, and the root schema only recognizes hooks. The extra fields are silently ignored functionally, but produce a noisy warning on every session start.

Impact

Cosmetic only — hooks still execute correctly since the recognized fields (matcher, hooks[].type, hooks[].command) are unaffected. But the warning fires on every session start for anyone using the plugin.

Suggested fix

Either drop the $schema/id/description fields from hooks/hooks.json (they appear to be authoring/documentation metadata not consumed by Claude Code), or move them into a comment/sibling metadata file that isn't parsed as part of the live hook config.

Environment

  • ECC plugin version: 2.2.1
  • Claude Code version: 2.1.270 (latest at time of filing)