{"version":"2.1.269","anchor":"new-pluginregister-admission-control-system-for-loading-plu","canonical_anchor":"plugin-hot-reload-now-runs-versioncompatibility-judges-befo","heading":"Plugins can now be refused at load and hot-reload time by other plugins","tier":"internal","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/new-pluginregister-admission-control-system-for-loading-plu","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269","markdown":"### Plugins can now be refused at load and hot-reload time by other plugins\n\nA new admission-control pipeline lets already-loaded plugins refuse to admit or hot-reload another plugin\n\n**What**\n\nClaude Code now runs plugin loading and reloading through an admission-control pipeline before a plugin takes effect:\n\n- Reloading a hooks module now computes where the reloaded plugin would be inserted among already-loaded plugins, and runs it past judges (checking its before\/after neighbors, whether it's native, and its tier) that can refuse the reload. If refused, the currently running version stays loaded instead of being silently swapped out.\n\n- A new pipeline runs a `plugin.register` hook event past other already-admitted plugins (acting as 'judges') before each plugin is admitted into a build. A plugin can be refused with a reason, which is logged as either `refused at plugin.register: ...` or `refused by <plugin>: ...`.\n\n**Why**\n\nThis gives already-loaded plugins a say in whether a new or reloaded plugin is allowed to take effect, and it surfaces a clear log message when a plugin is refused instead of failing silently or swapping in an incompatible version.\n\n- Area: Plugins\n- Names: `plugin.register`\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 3\/5"}