Skip to main content
You can get your organization’s own plugin to every member two ways, and each reaches different people:
  • Organization settings on claude.ai: members get the plugin on their accounts, where chat and Cowork use it. Plugins you add this way stay private to your organization
  • Claude Code managed settings: Claude Code installs the plugin on developers’ machines
This page is for the person rolling out a plugin their organization built, on a Team or Enterprise plan.

Choose a rollout route

The table compares organization settings on claude.ai with Claude Code managed settings on who receives the plugin and what each route asks of you. A plugin on a member’s account reaches Claude Code as a synced plugin in Cowork and in terminal sessions where the member signs in with their claude.ai account on Claude Code v2.1.273 or later. Plugins synced from claude.ai has the sign-in and timing rules. For developers whose terminal sessions don’t sync from a claude.ai account, use managed settings.

Roll out through both routes

Use both routes when the plugin is for people in chat and Cowork and also for developers whose Claude Code sessions don’t sync from a claude.ai account.
1

Lay out the repository as a marketplace

Put the plugin in a Git repository with a .claude-plugin/marketplace.json that lists it. You use the same repository for both routes. Create a marketplace in the Claude Code docs covers the format.
2

Check the repository against the organization sync rules

Organization sync is stricter than Claude Code about the repository’s visibility and about which plugin source types it accepts, and it rejects a plugin with a top-level bin/ directory. Check the plugin sources that organization sync accepts before you continue.
3

Sync the repository from organization settings

4

Register the same marketplace in managed settings

Set extraKnownMarketplaces and enabledPlugins as Pre-install and require plugins describes. To limit developers to your marketplace, see Restrict what users can install.
5

Confirm on each surface

  • In claude.ai: as a member, open Customize > Plugins and check that the plugin appears there
  • On a developer’s machine: start Claude Code and run /plugin, which lists the marketplace and the plugin

If a developer has the plugin from both routes

A developer can end up with the plugin from both routes. Claude Code loads one plugin per name. It loads the copy that managed settings install and reports the synced copy as not loaded, as Name conflicts describes.

Build one repository for both audiences

One plugin folder can serve both audiences, because each surface skips the components it doesn’t load. Hooks and agents load in Cowork and Claude Code and not in chat, and a local MCP server doesn’t run in chat. Check each component you include against Plugin feature support across platforms before you promise a behavior to people who only use chat.

Update a plugin you’ve rolled out

You release an update by pushing to the repository. How the update reaches people depends on the route.

Update through organization settings

Organization sync reads the repository’s default branch, and members get the new version after the marketplace syncs. It syncs when an Owner selects Re-sync or, with Sync automatically on, when someone pushes to the default branch. Nothing syncs on a schedule. Tags aren’t read, so a tag by itself releases nothing. Re-sync syncs the marketplace now, so members get the version on the default branch without waiting for a push. To re-sync:
2

Re-sync the marketplace

Open the menu in the marketplace’s row and select Re-sync.
3

Retry if you synced recently

If you see You synced recently, wait the number of seconds the message gives, then select Re-sync again.

Update through managed settings

Claude Code refreshes a marketplace and updates the plugins installed from it when auto-update is on for that marketplace. Set update policy covers turning it on for your fleet. If your plugin.json sets version, raise it with every release, because Claude Code compares it to decide whether an installed plugin has an update.

Next steps