{"version":"2.1.257","anchor":"new-claude-plugin-data-placeholder-allowed-in-hook-file-pa","canonical_anchor":"new-claude-plugin-data-placeholder-allowed-in-hook-file-pa","heading":"New CLAUDE_PLUGIN_DATA placeholder; script-type hooks recognized but not runnable","tier":"use","area":"Hooks","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.257\/e\/new-claude-plugin-data-placeholder-allowed-in-hook-file-pa","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.257","markdown":"### New CLAUDE_PLUGIN_DATA placeholder; script-type hooks recognized but not runnable\n\nHook file paths may expand a new ${CLAUDE_PLUGIN_DATA} placeholder, and nothing else.\n\nThe hooks system now recognizes a hook `type: \"script\"` distinct from existing command hooks, with dedicated path anchoring supporting `${CLAUDE_PROJECT_DIR}`, `${CLAUDE_PLUGIN_ROOT}`, and the new `${CLAUDE_PLUGIN_DATA}` substitution plus `~`-expansion, and a description formatter for it. However, the function that actually executes a script hook throws unconditionally at the point of use, from both the main hook-execution path (where hooks are matched by type) and a second call site, so script hooks do not actually run yet.\n\nHook config validation was also updated to explicitly whitelist `${CLAUDE_PROJECT_DIR}`, `${CLAUDE_PLUGIN_ROOT}`, and the new `${CLAUDE_PLUGIN_DATA}` as the only expandable placeholders allowed in a hook's `file` field; any other $-expansion, backtick, or `%NAME%` pattern is flagged as invalid.\n\n- Area: Hooks\n- Tier: Use it now\n- Useful: 5\/5\n- Signal: 4\/5"}