{"version":"2.1.311","anchor":"sealed-plugin-read-path-for-organization-managed-plugins-wit","canonical_anchor":"sealed-plugin-read-path-for-organization-managed-plugins-wit","heading":"Organization-managed plugins with a hooks module are verified by folder digest before loading","tier":"notice","area":"Plugins","scope":"both","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311\/e\/sealed-plugin-read-path-for-organization-managed-plugins-wit","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.311","markdown":"### Organization-managed plugins with a hooks module are verified by folder digest before loading\n\nSealed organization plugins are now checked by a sha256 digest of their folder and their manifest before they load, and are refused if anything does not match\n\n**Unclear.** It is not clear whether any organization's plugins are currently checked this way.\n\n**What**\n\nA plugin is an add-on package for Claude Code. A hooks module is the code a plugin runs at set points in a session. Organization-managed plugins that carry a hooks module now go through a sealed read before they load:\n\n- Folder check: Claude Code walks the plugin folder. It refuses symlinks (shortcut files that point elsewhere) and names that are not valid UTF-8 text, and it caps the number and size of files.\n\n- Digest: it computes a sha256 digest (a fingerprint of the whole folder's contents), which must be in the list of allowed digests.\n\n- Manifest: the plugin manifest (its description file) must match what the loader read, must declare no hooks of its own, and must list exactly one hooks module, which is also checked against what the loader read.\n\n- Refusal: a plugin that fails is logged as 'is not treated as the organization's, and does not load', and `plugin_sealed_read` is recorded as a failure.\n\n- Unsealed plugins: plugins that are not sealed take the old path, which only checks policy.\n\n**Why**\n\nIf the files of an organization-managed plugin are changed after approval, the plugin is refused instead of running altered code.\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 3\/5\n- Scope: both\n- Heads-up: yes"}