{"version":"2.1.299","anchor":"plugin-state-checking-can-use-a-contract-and-refusal-text","canonical_anchor":"plugin-state-checking-can-use-a-contract-and-refusal-text","heading":"Plugin validation can check state keys against a contract","tier":"notice","area":"Plugins","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299\/e\/plugin-state-checking-can-use-a-contract-and-refusal-text","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.299","markdown":"### Plugin validation can check state keys against a contract\n\nValidating a plugin can now check the state keys it uses against an expected contract, with a custom message when one is refused\n\n**What**\n\nPlugins are add-on packages that extend Claude Code. When a plugin is validated (checked for problems), its state keys, the names it stores data under, can now be checked against a contract, an agreed description of what is allowed. A custom refusal message can be shown when a key does not fit. Before, only the types in the plugin's manifest (its description file) were checked against a contract this way.\n\nAccesses that refused plugins make to their own state are left out of this check, and state belonging to other plugins is not checked.\n\n**Why**\n\nThis gives plugin authors earlier warning when the state their plugin uses does not match what is expected.\n\n- Area: Plugins\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: no"}