Open PluginsSupported Agents

For Plugin Builders

For Agent Builders

Installation

How plugins are installed, scoped, cached, and resolved by conformant tools.

This document defines how plugins are installed, scoped, cached, and resolved by conformant tools.

Installation Scopes

When a plugin is installed, it is associated with a scope that determines where it is available and who can use it.

ScopeTypical Settings FileUse Case
user~/.config/<tool>/settings.jsonPersonal plugins available across all projects. Default scope.
project.config/<tool>/settings.json in project rootTeam plugins shared via version control.
local.config/<tool>/settings.local.json in project rootProject-specific plugins, not committed to version control.
managedManaged by external toolingOrganization-managed plugins. Read-only for end users.

Tools MUST support at least the user scope. Tools SHOULD support project and local scopes. The managed scope is OPTIONAL.

Scope Precedence

When the same plugin is installed at multiple scopes, tools MUST apply the following precedence (highest to lowest):

  1. local
  2. project
  3. managed
  4. user

A plugin disabled at a higher-precedence scope overrides it being enabled at a lower-precedence scope.

Settings File Format

{
  "enabledPlugins": [
    "plugin-name",
    "another-plugin"
  ],
  "disabledPlugins": [
    "disabled-plugin"
  ]
}

Installed plugins SHOULD be stored in .agents/plugins/ at the appropriate scope level.

ScopeRecommended Path
User~/.agents/plugins/<plugin-name>/
Project<project-root>/.agents/plugins/<plugin-name>/

Plugin Caching

Tools SHOULD copy installed plugins to a local plugin cache rather than using them in-place.

  1. When a plugin is installed, the tool copies the plugin directory to the cache.
  2. Subsequent loads use the cached copy.
  3. The version field determines whether the cache is stale.
  4. Symlinks MUST be followed when copying to the cache.
  5. Paths containing ../ that escape the plugin root MUST be rejected.

Plugin Resolution

When loading plugins, tools resolve them in this order:

  1. Direct directory (--plugin-dir): Load directly, no caching. Used for development.
  2. Cache: Load from cache if up-to-date.
  3. Source: Copy to cache, then load from cache.

Development Mode

# Load a plugin in development
<tool> --plugin-dir ./my-plugin

In development mode, the plugin is loaded directly — no caching, changes take effect on restart.

Uninstallation

When a plugin is uninstalled:

  1. It is removed from enabledPlugins.
  2. The cached copy MAY be deleted.
  3. Any running MCP or LSP servers MUST be stopped.

Update Flow

  1. The tool checks the source for a newer version.
  2. If newer, the cache is refreshed.
  3. Running servers MAY need to be restarted.