{"version":"2.1.246","anchor":"plugin-interfaces-are-checked-before-they-are-used","canonical_anchor":"plugin-interfaces-are-checked-before-they-are-used","heading":"Plugin interfaces are checked before they are used","tier":"notice","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246\/e\/plugin-interfaces-are-checked-before-they-are-used","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246","markdown":"### Plugin interfaces are checked before they are used\n\nA plugin publishing an interface for others now fails loudly if it isn't a proper object of functions.\n\n**What**\n\nWhen a plugin publishes an interface for other plugins to call, Claude Code now validates it: loading fails with a hooks error if the interface is not an object, or if any of its entries is not a function, and the message explains what an interface is meant to be.\n\n**Details**\n\n- A 43-entry list of recognised manifest and frontmatter keys was added, covering `name`, `description`, `model`, `allowed-tools`, `mcpServers`, `lspServers`, `workflows`, `monitors` and `userConfig` among others.\n- Plugin hook-file discovery now runs the manifest through an extra parsing step before reading its hooks.\n\n**Evidence**\n\n`is not a function; an interface is an object of methods (a value another plugin can call)`\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 3\/5"}