{"version":"2.1.268","anchor":"org-required-plugins-can-no-longer-be-disableduninstalled","canonical_anchor":"new-required-plugin-installation-preference-can-force-a-pl","heading":"Plugins can be marked 'required' by an organization and protected from being disabled or uninstalled","tier":"use","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.268\/e\/org-required-plugins-can-no-longer-be-disableduninstalled","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.268","markdown":"### Plugins can be marked 'required' by an organization and protected from being disabled or uninstalled\n\nOrg-required plugins can no longer be disabled\/uninstalled, and enable\/disable failures now report a machine-readable failure code\n\n**What**\n\nAn organization can now mark a plugin as `required` via its marketplace\/installation preference. Claude Code enforces this in several places:\n\n- Attempting to disable a required plugin (or its synced counterpart) now fails with `Plugin \"<name>\" is required by your organization and can't be disabled here. Contact your admin to change it.` A related check also blocks disabling a plugin that other required plugins depend on, unless a `bypassDependentsBlock` option is passed.\n\n- Uninstalling a plugin, and the \"disable all enabled plugins\" bulk action, now also skip org-required plugins (and anything they depend on), and report how many plugins were skipped as a result.\n\n- The plugin details screen shows a new \" \u00b7 Required by your org\" label next to a required plugin's enabled\/disabled status.\n\n- A new internal helper can force a plugin to be treated as enabled - bypassing user-disable and managed-disable checks - when it's marked required for its marketplace.\n\n- Plugin enable\/disable\/uninstall failures now include a machine-readable `failureCode` field (e.g. `not_installed_at_scope`, `settings_write_failed`, `already_in_goal_state`, `required_by_dependents`, `dependency_missing`, `dependency_disabled`, `dependency_policy_blocked`, `plugin_policy_blocked`, `ambiguous_marketplace`, `managed_name_locked`, `required_by_organization`, `builtin`, `not_installed`, `enabled_at_project_scope`, `partial_failure`) alongside the existing human-readable message.\n\n**Why**\n\nThis lets organizations lock in plugins they consider mandatory (for security, compliance, or workflow reasons) so users and scripts can't accidentally or deliberately turn them off, while giving tooling a stable code to key off instead of parsing free-text error messages.\n\n- Area: Plugins\n- Names: `installationPreference`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 2\/5"}