2.1.295: headless load of a function-hooks plugin no longer writes .claude-plugin/types/

Status Open
Reported on v2.1.295
Maintainer reply None cached
Activity 0 comments · opened Oct 9, 2026

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 has type root of <plugin> at ...: entries claude-code, ...; wrote ....
  • 2.1.295: exit 0, only plugin.json remains. 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?

View original on GitHub ↗