2.1.295: headless load of a function-hooks plugin no longer writes .claude-plugin/types/
Claude Code 2.1.295 (Windows 11). A plugin whose hooks module loads fine no longer gets its engine types written to <plugin>/.claude-plugin/types/. 2.1.293 and 2.1.294 write them.
Repro
Same copy of a plugin, types dir deleted before each run:
echo /cost | claude -p --plugin-dir <plugin> --setting-sources '' --no-session-persistence --debug-file out.log
- 2.1.294: exit 0,
.claude-plugin/types/{claude-code,claude-code-tools,claude-code-mcp}/written. The log hastype root of <plugin> at ...: entries claude-code, ...; wrote .... - 2.1.295: exit 0, only
plugin.jsonremains. The log has no "type root" line at all.
Ruled out
The plugin's path (a copy in %TEMP% fails the same), a missing plugin install, and --setting-sources (unset, project, user and '' all fail). claude plugin validate and claude plugin test write no types either.
Suspicion
The code is still in the binary (the "type root of ${name} not laid" and "... wrote" messages). The list of plugins it runs for is filtered by a function that differs between 2.1.294 and 2.1.295 (an account/entitlement-looking check in the 2.1.295 filter), so I suspect the plugin is filtered out before types are laid.
Is the change intended? If so, what is the supported way to get a plugin's engine types without an interactive session?