Sweep 19 Sep 2026 · 02:36Z Build v2.1.278 500 read Stable v2.1.267 Latest v2.1.278 Next v2.1.278 Feeds RSS JSON llms.txt Unofficial
Claude Code v2.1.269 ·

Plugin admission state now enforced for cross-plugin calls and hook loading

Claude Code now checks whether a plugin has actually been admitted (not just loaded) before letting it make cross-plugin calls or keeping its hooks registered

TierUnder the hoodhow much it should matter to you
Useful1my rating, 1 to 5
Signal2worth watching, 1 to 5
AreaPluginswhat it touches
KindBug Fixesin v2.1.269,
Group of 3 Under the hood

Claude Code now checks whether a plugin has actually been admitted (not just loaded) before letting it make cross-plugin calls or keeping its hooks registered

What

  • Cross-plugin calls (using the $.<name>.<method> syntax one plugin uses to call into another) now check whether the target plugin's environment has actually been admitted, and reject with a clear error if it hasn't — previously this only checked whether the plugin was loaded at all.
  • The code that loads a plugin's hook modules was reworked from a single pass into a loop that admits or refuses each module. If a module that already ran its engine.create hook later turns out to be refused, the whole set of already-admitted modules is discarded and reloading is retried without it, with a log message noting this happened. The loop repeats until no plugin still needs to be recreated.

Why

These changes make sure a plugin can't act (call other plugins, or keep hooks registered) unless it has genuinely passed admission, closing a gap where a loaded-but-not-admitted plugin could previously be treated as usable.

See this entry in the whole of v2.1.269 →