Skip to main content
Используйте эту страницу, когда плагин не загрузился, загрузилась другая копия, чем вы ожидали, или плагин не подхватил обновление, и вы хотите увидеть, какой источник, область параметров или файл на диске это решил. На ней приведены правила, которые Claude Code применяет при запуске сеанса и каждый раз при запуске /reload-plugins. Вы также можете попросить Claude прочитать эту страницу и диагностировать вашу конфигурацию.
Эти случаи рассмотрены на других страницах:
Начните с раздела Проверьте, на каком этапе находится плагин для трёх этапов, через которые проходит установленный плагин, или перейдите в раздел, соответствующий тому, что вы видите:

Проверьте, на каком этапе находится плагин

Запись enabledPlugins становится плагином, который вы можете использовать, в несколько этапов: ваши параметры объявляют его, Claude Code загружает его на диск, и работающий сеанс загружает его. Когда плагин ведёт себя не так, как предполагает файл параметров, проверьте, на каком этапе он находится:
  • Объявлен в параметрах: enabledPlugins указывает, какие плагины должны быть включены, а extraKnownMarketplaces указывает, какие маркетплейсы должны существовать. Когда вы запускаете claude plugin marketplace add, Claude Code записывает маркетплейс в extraKnownMarketplaces в ваши пользовательские параметры, а также на диск
  • Загружен на диск в ~/.claude/plugins/: записи о том, что Claude Code загрузил, и сами загруженные файлы:
    • known_marketplaces.json записывает каждый маркетплейс, который Claude Code загрузил, с его source, installLocation, lastUpdated и autoUpdate. На одного пользователя приходится один known_marketplaces.json, поэтому маркетплейс, который вы добавляете в одном проекте, доступен в каждом проекте
    • installed_plugins.json записывает каждую установку с её scope, installPath и version
    • cache/ содержит файлы плагинов
  • Загружен в работающем сеансе: набор плагинов, который Claude Code загрузил при запуске или при последнем /reload-plugins. Изменения параметров или диска не достигают этого уровня до тех пор, пока вы не запустите /reload-plugins или не начнёте новый сеанс. Вот почему claude plugin update заканчивается на Restart to apply changes. и фоновые обновления предлагают вам Run /reload-plugins to apply

Плагины и маркетплейсы, которых нет на диске при запуске сеанса

Плагины загружаются при запуске сеанса из installed_plugins.json и кэша без использования сети. После запуска сеанса Claude Code проверяет объявленные маркетплейсы в фоновом режиме:
  • Маркетплейс, который параметры объявляют, но known_marketplaces.json не содержит: Claude Code клонирует его, затем перезагружает плагины и загружает включённые плагины, которые ещё не кэшированы
  • Объявленный маркетплейс, чей источник изменился в параметрах: Claude Code повторно загружает его из нового источника и показывает Plugins changed. Run /reload-plugins to activate.
Включённый плагин, который ни один путь не загрузил и у которого нет пригодного для использования каталога кэша, показывает Plugin "<name>" not cached at <path> на вкладке /plugin Errors, и claude plugin list добавляет — run /plugin to refresh на ту же строку. Для исправления см. Plugin "<name>" not cached at <path>.

Найдите, откуда пришёл плагин

Каждый плагин имеет идентификатор вида <name>@<origin>, который вы видите в файлах параметров и в claude plugin list --json. Часть после @ говорит вам, где Claude Code нашёл плагин: Для плагина маркетплейса <name> — это имя записи в marketplace.json; для @inline и @skills-dir это name в манифесте плагина. Имена источников в этой таблице зарезервированы, поэтому ни один маркетплейс не может быть назван inline, skills-dir или synced.

Имя записи и имя манифеста

Плагин маркетплейса имеет два имени, и они могут отличаться:
  • Имя записи в marketplace.json: ключ установки и включения. Это то, что вы пишете в enabledPlugins, по чему назван каталог кэша, и что показывает claude plugin list
  • name в манифесте: то, под чем пространства имён компонентов плагина, и что сравнивают конфликты имён

Плагины, общие через репозиторий

Чтобы поделиться плагином через репозиторий, перечислите его под enabledPlugins в .claude/settings.json или поместите его в .claude/skills/. Claude Code не сканирует каталог .claude/plugins/ проекта. Облачный сеанс не добавляет маркетплейсы, которые репозиторий перечисляет под extraKnownMarketplaces, потому что это требует диалога доверия рабочей области, который облачный сеанс никогда не показывает. Плагин каталога навыков с областью проекта загружается только из .claude/skills/ основного рабочего каталога сеанса и только после того, как вы примете диалог доверия рабочей области для этого каталога. Он не ищет родительские каталоги вверх до корня репозитория так, как это делают обычные навыки и команды. Если вы запустите из подкаталога, плагин в корне репозитория не загрузится. Запустите из корня репозитория вместо этого, или переместите сеанс туда с помощью /cd на v2.1.246 или позже. Плагин с областью проекта проверяется в репозиторий и достигает каждого сотрудника, который его клонирует. Поскольку это содержимое поступает из репозитория, а не от вас, оно загружается только после той же проверки доверия, которая применяется к правилам разрешения проекта в .claude/settings.json. Доверие к родительской папке или запуск с -p недостаточно. Компоненты, которые выполняют код, имеют дополнительные ограничения:
  • MCP серверы, которые он объявляет, проходят через то же одобрение для каждого сервера, что и проект .mcp.json
  • MCP серверы, которые он объявляет как MCP пакет, файл .mcpb или .dxt, или из файла вне каталога плагина, пропускаются. Объявляйте их встроенными или в .mcp.json внутри каталога плагина
  • Фоновые мониторы не загружаются
Плагины с областью пользователя не имеют этих ограничений. О том, как писать плагины --plugin-dir и каталога навыков, см. Создание плагинов.

Плагины, синхронизированные с claude.ai

Плагин, который вы включаете для своей учётной записи claude.ai, также загружается в Claude Code рядом с плагинами, которые вы устанавливаете из маркетплейсов. Это включает плагины, которые ваша организация включает для своих членов. Каждый из этих плагинов загружается как <name>@synced, без маркетплейса и без записи об установке. В сеансах терминала навыки, агенты, hooks, MCP серверы и LSP серверы синхронизированного плагина все загружаются с тем же доверием, что и плагин маркетплейса, который вы установили. О компонентах, которые загружает Cowork, см. Плагины на claude.ai и в Cowork на claude.com. Синхронизированные плагины загружаются в сеансах Cowork и в сеансах терминала, где вы входите с помощью своей учётной записи claude.ai:
  • Cowork: Claude Code загружает их в собственную среду сеанса при запуске сеанса
  • Сеансы терминала: каждый раз, когда вы запускаете Claude Code, он синхронизируется один раз в фоновом режиме, загружая новые и обновлённые плагины и удаляя те, которые вы или ваша организация отключили. Синхронизация в сеансах терминала требует Claude Code v2.1.273 или позже

Время синхронизации в сеансах терминала

Поскольку синхронизация терминала выполняется в фоновом режиме, она может завершиться после запуска вашего сеанса. Когда она добавляет, обновляет или удаляет синхронизированный плагин в интерактивном сеансе, вы видите Plugins changed. Run /reload-plugins to activate. Запустите /reload-plugins, чтобы загрузить изменение в этом сеансе, или оставьте его на следующий раз, когда вы запустите Claude Code. Если вы включите плагин на claude.ai во время работы сеанса, плагин загрузится в следующий раз, когда вы запустите Claude Code.

Требования входа для синхронизации терминала

В вашем терминале плагины синхронизируются только в сеансах, где вы входите с помощью своей учётной записи claude.ai. Если вы вошли в более ранней версии Claude Code, этот вход не охватывает плагины до тех пор, пока Claude Code не обновит его в фоновом режиме. Чтобы получить доступ раньше, запустите /login снова. Синхронизация плагинов затем начнётся в следующий раз, когда вы запустите Claude Code.

Контролируйте, какие синхронизированные плагины загружаются

Вы можете отключить синхронизированные плагины по одному, кроме плагина, который требует ваша организация, или отключить все синхронизированные плагины на машине:
  • Один плагин: claude plugin disable <name>@synced в вашей оболочке и вкладка /plugin Installed в сеансе оба сохраняют "<name>@synced": false в вашем пользовательском уровне enabledPlugins. Чтобы держать плагин вне проекта в каждой среде, установите тот же ключ в коммитированный .claude/settings.json проекта
  • Все синхронизированные плагины на машине: установите syncClaudeAiPlugins в false в ваших пользовательских параметрах, или ваша организация устанавливает это в управляемых параметрах. Claude Code прекращает загрузку, и в следующий раз, когда вы его запустите, он перемещает плагины, которые он уже синхронизировал, в ~/.claude/plugins/.trash/ и больше их не загружает. Если ваша организация отключит Skills на claude.ai, плагины также перестанут синхронизироваться
  • Плагин, который требует ваша организация: плагин, который ваша организация отмечает как обязательный на claude.ai, загружается даже если вы его отключили ранее. claude plugin disable отказывает ему с Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it., и claude plugin list отмечает его required by your org
О удалении плагина на claude.ai см. Управление установленными плагинами.

Найдите, где плагин включен

Вы можете установить запись enabledPlugins в любом из шести источников. Таблица перечисляет их от самого низкого приоритета к самому высокому и указывает, к кому применяется каждый. Для самих файлов параметров см. Файлы параметров и кто они затрагивают. Эти источники объединяются ключ за ключом. Для каждого идентификатора плагина применяемое значение — это значение из источника с наивысшим приоритетом, который упоминает идентификатор. Источник, который не упоминает идентификатор, оставляет значение из источника с более низким приоритетом в силе.

Отключено в пользовательских параметрах, но всё ещё загружается

Если вы установили плагин в false в ~/.claude/settings.json и он всё ещё загружается, true в источнике с более высоким приоритетом его переопределяет. Строка плагина в claude plugin list и в /plugin показывает Disabled in ~/.claude/settings.json but still loads — project settings enable it, which overrides your user setting. Сообщение называет источник, который вас переопределил: project, project, gitignored для .claude/settings.local.json, cli flag, или managed. Чтобы отказаться от плагина, включённого проектом, на вашей машине, установите идентификатор в false в .claude/settings.local.json, который имеет более высокий приоритет, чем файл проекта.

Включено в параметрах проекта, но не установлено

Когда единственный true плагина находится в .claude/settings.json проекта, Claude Code не загружает его на машину, где он не установлен, если только его запись маркетплейса не имеет источника с относительным путём или каталог семян уже его содержит. Вместо этого вкладка /plugin Errors показывает Plugin "<name>" is enabled in project settings but isn't installed here. Плагин с относительным путём не нуждается в записи об установке, потому что он загружается из самого маркетплейса. Claude Code загружает плагин с внешним источником только когда один из этих источников устанавливает его в true:
  • Ваши пользовательские параметры
  • .claude/settings.local.json, который git не отслеживает
  • Флаг --settings
  • Управляемые параметры

Найдите плагины на диске

Claude Code хранит файлы плагинов и записи состояния в одном корне плагинов, который является ~/.claude/plugins, если вы не установили CLAUDE_CODE_PLUGIN_CACHE_DIR. Каждый путь в таблице относителен к этому корню. Поскольку ${CLAUDE_PLUGIN_ROOT} указывает на каталог версии, путь корня плагина изменяется с каждой версией. Сохраняйте постоянные файлы плагина в ${CLAUDE_PLUGIN_DATA} вместо этого.

Плагины на месте и скопированные плагины

Claude Code загружает некоторые плагины на месте из того места, где вы их храните, и копирует остальные в кэш, в соответствии с их источником:
  • Плагины --plugin-dir и каталога навыков: каталог загружается на месте и никогда не копируется. Архив --plugin-url или .zip --plugin-dir сначала извлекается во временный каталог сеанса
  • Плагины с относительным путём в маркетплейсе, который вы добавили из локального каталога: плагин загружается на месте из его пути внутри папки маркетплейса. Ваши правки в исходный каталог вступают в силу при следующем запуске сеанса или /reload-plugins, и вам не нужно увеличивать версию. Процессы hooks плагина и серверы MCP и LSP получают CLAUDE_PLUGIN_ROOT, который указывает на исходный каталог. О его зависимостях пакета Node.js см. Когда запускается установка зависимостей
  • Плагины источника command в режиме ссылки: каталог, который напечатала команда, загружается на месте через ссылки в записи кэша
  • Каждый другой плагин маркетплейса: Claude Code копирует плагин в cache/<marketplace>/<plugin>/<version>/ при установке и загружает эту копию. Файлы вне каталога плагина не копируются, поэтому когда скрипт внутри скопированного плагина читает путь выше корня плагина, такой как ../shared, он их не находит

Пути, которые выходят за пределы каталога плагина

Загружается ли плагин на месте или из кэшированной копии, Claude Code не позволяет ему объявлять компоненты вне его собственного каталога. Он отклоняет путь компонента, который разрешается вне корня плагина, независимо от того, объявлен ли путь в plugin.json или в записи маркетплейса:
  • Путь, который указывает вне плагина в написанном виде, такой как ../shared-utils
  • Символическая ссылка, которая ведёт вне плагина, кроме ссылок между плагинами в одном маркетплейсе
  • На macOS и Linux, путь, который содержит обратную косую черту где-либо в нём, даже когда путь остаётся внутри плагина. Компоненты, объявленные с путями обратной косой черты, поэтому загружаются только на Windows, поэтому пишите пути компонентов с прямыми косыми чертами, такие как ./commands/deploy.md
Отклонённый путь появляется как ошибка path escapes plugin directory, и плагин загружается без этого компонента.

Очистка предыдущих версий

Когда вы обновляете или удаляете плагин, Claude Code записывает маркер .orphaned_at в каталог предыдущей версии. Он удаляет этот каталог в фоновой очистке через 14 дней, поэтому сеанс, который уже загрузил старую версию, продолжает работать. Очистка выполняется только пока installed_plugins.json записывает по крайней мере одну установку. После удаления последнего плагина осиротелые каталоги остаются до тех пор, пока вы не установите другой.

Зависимости пакета Node.js

Когда Claude Code копирует плагин в кэш, он также устанавливает зависимости пакета Node.js плагина там, поэтому hooks и MCP серверы плагина могут их загружать. Этот раздел охватывает пакеты npm и Bun, которые плагин объявляет в своём собственном package.json. О плагинах, которые зависят от других плагинов, см. версии зависимостей плагина.

Когда запускается установка зависимостей

Claude Code запускает установку внутри скопированного каталога версии каждый раз, когда создаёт один:
  • Когда вы устанавливаете плагин
  • Когда Claude Code обновляет плагин до новой версии
  • При запуске сеанса, когда включённый плагин ещё не кэширован, например, на новой машине
Для плагина с относительным путём загруженного на месте из маркетплейса локального каталога Claude Code не устанавливает зависимости в исходный каталог. Установите их там сами, или из hook в ${CLAUDE_PLUGIN_DATA}. Установка запускается только когда каталог корня плагина содержит как package.json, так и поддерживаемый файл блокировки. Файл блокировки решает, какую команду запускает Claude Code: Если плагин содержит более одного из этих файлов блокировки, Claude Code использует первое совпадение, проверяя по порядку: bun.lock, bun.lockb, npm-shrinkwrap.json, package-lock.json. Claude Code пропускает установку для файлов блокировки Yarn и pnpm и для bunfig.toml рядом с файлом блокировки Bun:
  • Если ваш плагин имеет только yarn.lock или pnpm-lock.yaml, замените его файлом блокировки npm
  • Если bunfig.toml находится в том же каталоге, что и файл блокировки Bun, удалите bunfig.toml, или замените файл блокировки Bun файлом блокировки npm
Включите файл блокировки npm, чтобы достичь большинства пользователей. Claude Code запускает менеджер пакетов файла блокировки из PATH пользователя и не пытается использовать другой файл блокировки вместо этого, если этот менеджер пакетов отсутствует. Для плагина, распространяемого через источник npm, используйте npm-shrinkwrap.json, потому что npm исключает package-lock.json из опубликованных пакетов.

Ограничения на установку зависимостей

Claude Code ограничивает эту установку зависимостей так, чтобы никакой код из плагина или его пакетов не выполнялся во время неё, и ограничивает, как долго она может выполняться:
  • Замороженное разрешение: Bun и npm устанавливают ровно то, что файл блокировки закрепляет, и отказывают, а не переразрешают версии, когда package.json и файл блокировки не согласны
  • Нет скриптов жизненного цикла: --ignore-scripts предотвращает запуск скриптов preinstall, install и postinstall, поэтому зависимости, которые собирают собственные модули в этих скриптах, загружаются, но не компилируются во время этой установки
  • Тайм-аут 60 секунд: Claude Code останавливает установку, которая выполняется дольше, и рассматривает её как неудачную
Claude Code загружает плагин источника npm перед этой установкой зависимостей, и ни один из собственных скриптов установки пакета не запускается во время загрузки. См. источник плагина npm. Вы не можете отключить автоматическую установку. Ни один параметр или переменная окружения её не отключает. В ограниченных сетях см. требования доступа в сеть для хостов, которые нужно разрешить.

Когда установка зависимостей не удаётся или пропускается

Неудачная или пропущенная установка никогда не блокирует плагин, и каждый случай оставляет другой знак:
  • Неудачная установка, или одна пропущенная из-за файла блокировки Yarn или pnpm или bunfig.toml, появляется как предупреждение в выводе claude --debug
  • Плагин с package.json и без файла блокировки пропускается без записи в журнал
  • Истёкшая по времени установка может оставить частичное дерево node_modules в кэшированной копии
Когда автоматическая установка не может предоставить зависимость, установите её из hook в каталог постоянных данных. Это включает пакеты, которым нужны их скрипты жизненного цикла для сборки, зависимости Python и плагины, заблокированные Yarn или pnpm.

Версии и обновления

Если автор плагина отправил новые коммиты и claude plugin update печатает <name> is already at the latest version (<version>)., версия, которую Claude Code вычисляет для плагина, не изменяется, поэтому ничего не изменяется на диске. Claude Code вычисляет версию для каждого плагина, который он устанавливает, и эта версия — это то, как он обнаруживает обновление. claude plugin update и фоновое автоматическое обновление вычисляют версию снова и пропускают плагин, когда она совпадает с тем, что записывает installed_plugins.json. Версия также называет каталог кэша плагина. Манифест, который закрепляет "version", — это один способ, которым вычисленная версия остаётся неизменной при коммитах. См. Как Claude Code вычисляет версию для порядка разрешения. Плагин загруженный на месте из маркетплейса локального каталога загружает свои текущие исходные файлы при каждом запуске сеанса, независимо от того, что говорит его строка версии. Для плагина из маркетплейса, размещённого на claude.ai, версия, которую claude.ai записывает для плагина, — это его версия, и version манифеста не читается.

Как Claude Code вычисляет версию

Для маркетплейса, который вы добавили по источнику, Claude Code выбирает правило по типу source записи маркетплейса плагина. Справочник маркетплейса перечисляет типы источников. Для каждого типа источника в этом списке, кроме command:
  1. Поле version в манифесте плагина идёт первым
  2. Затем поле version в записи маркетплейса плагина
  3. Когда ни один не установлен, версия поступает из типа источника:
Claude Code не берёт версию из репозитория, который охватывает путь установки, такого как управляемый git ~/.claude. Для источника command Claude Code всегда выводит версию из того, что произвела команда: 12-символьный хэш сам по себе, или <manifest version>-<hash>, когда манифест устанавливает один. version записи маркетплейса игнорируется для источников команд. О том, что охватывает хэш, см. Режим копирования и режим ссылки. Поскольку манифест идёт первым, манифест, который закрепляет "version": "1.0.0", держит каждого пользователя на кэшированной копии до тех пор, пока его автор не изменит строку, сколько бы коммитов они ни отправили. Чтобы позволить пользователям отслеживать коммиты вместо этого, оставьте version вне манифеста и записи. Размещение маркетплейса охватывает, какой выбор подходит для какой установки выпуска.

Когда Claude Code обновляет маркетплейс перед установкой

Когда вы устанавливаете плагин, Claude Code ищет его в своей локальной копии каталога маркетплейса. Вы можете запустить /plugin install в сеансе или claude plugin install в вашей оболочке и назвать плагин с его маркетплейсом или без. Таблица показывает, какие из этих комбинаций обновляют локальную копию. Обновление перед установкой name@marketplace не зависит от параметра автоматического обновления маркетплейса или от DISABLE_AUTOUPDATER. Когда обновление не удаётся, установка продолжается из кэшированного каталога и claude plugin install сообщает marketplace not refreshed. Claude Code пропускает обновление перед установкой name@marketplace, когда:
  • Маркетплейс был добавлен из локального источника file или directory, или определён встроенным в параметрах с источником settings
  • Каталог семян предоставляет маркетплейс
  • Claude Code обновил маркетплейс в течение последних 30 секунд
  • Вы установили CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • Управляемые параметры блокируют маркетплейс, в этом случае Claude Code также отказывает в установке

Когда запускается автоматическое обновление

В интерактивном сеансе, после того как вы отправите своё первое сообщение, Claude Code ждёт случайную задержку до десяти минут. Затем он обновляет каждый маркетплейс с включённым автоматическим обновлением и обновляет плагины, установленные из них, на диске. Работающий сеанс сохраняет версии, которые он загрузил, и вы видите Plugin updated: <name> · Run /reload-plugins to apply. Загружаете ли вы или нет, новые версии загружаются при следующем запуске.

Какие маркетплейсы и плагины автоматически обновляются

Автоматическое обновление маркетплейса следует первому из этих, что установлено:
  1. autoUpdate на его записи extraKnownMarketplaces в файле параметров
  2. autoUpdate на его записи known_marketplaces.json, которую переключатель Enable auto-update под /plugin Marketplaces пишет. Когда файл параметров также объявляет маркетплейс под extraKnownMarketplaces, переключатель пишет autoUpdate в эту запись параметров также
  3. По умолчанию: включено для официальных маркетплейсов Anthropic, таких как claude-plugins-official, отключено для knowledge-work-plugins и first-party-plugins, включено для маркетплейсов, добавленных с claude.ai, и отключено для каждого другого маркетплейса
Если вы установите DISABLE_UPDATES=1, DISABLE_AUTOUPDATER=1 или CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1, весь проход отключен и переключатель Enable auto-update скрыт, если вы также не установите FORCE_AUTOUPDATE_PLUGINS=1. Справочник переменных окружения охватывает более широкий эффект каждой переменной. Автоматическое обновление также пропускает плагин, чья запись маркетплейса объявляет headersHelper. Установки и обновления, которые отказывают команде вместо запроса объясняют, когда такой плагин появляется на вкладке /plugin Errors и как вы его обновляете оттуда. Когда скопированный плагин обновляется в середине сеанса, команды hooks, мониторы, MCP серверы и LSP серверы продолжают использовать путь предыдущей версии. Запустите /reload-plugins, чтобы переключить hooks, MCP серверы и LSP серверы на новый путь. Мониторы требуют перезагрузки сеанса.

Когда источник команды повторно запускается

Плагины с источником command не ждут прохода автоматического обновления. Напечатанный каталог отражает состояние инструмента в момент запуска команды, поэтому Claude Code запускает команду, которую вы приняли, снова в эти моменты:
  • Каждый раз, когда вы устанавливаете или обновляете плагин
  • Один раз за сеанс для каждого включённого плагина с источником команды, в фоновом режиме, вскоре после запуска сеанса. Этот запуск не зависит от параметра автоматического обновления маркетплейса или от DISABLE_AUTOUPDATER
  • При запуске или на /reload-plugins, когда установленная версия включённого плагина отсутствует в кэше плагина
Claude Code пропускает два фоновых запуска, когда вы установили CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC. Явные установки и обновления всё ещё запускают команду с этой переменной установленной. Когда хэшированный вывод команды изменился, Claude Code устанавливает результат как новую версию и перезагружает его в работающем интерактивном сеансе, переключая те же компоненты, которые переключает /reload-plugins. Вы видите уведомление о том, что плагин был перезагружен. Если перезагрузка на месте сделает кэш подсказок сеанса недействительным, Claude Code вместо этого предлагает вам запустить /reload-plugins, который предупреждает о стоимости кэша и применяется при повторном запуске с --force.

Конфликты имён

Когда включённые плагины из разных источников имеют одно имя манифеста, этот порядок решает, какой загружается, от наивысшего приоритета к самому низкому:
  1. Плагин, чей идентификатор появляется в управляемых параметрах enabledPlugins, как true или false. Копия --plugin-dir, чьё имя манифеста совпадает с частью имени идентификатора, не загружается, и вы видите --plugin-dir copy of "<name>" ignored: plugin is locked by managed settings
  2. Включённый плагин --plugin-dir, --plugin-url или CLAUDE_CODE_PLUGIN_DIRS. Он заменяет установленный плагин маркетплейса с тем же именем или плагин каталога навыков:
    • Установленный плагин маркетплейса: заменён молча. claude plugin list всё ещё показывает строку маркетплейса как включённую, потому что эта строка отражает ваши параметры. Только журнал, который Claude Code пишет в ~/.claude/debug/, когда вы запускаете с --debug, записывает Plugin "<name>" from --plugin-dir overrides installed version
    • Плагин каталога навыков: заменён строкой вкладки /plugin Errors, которая читает Not loaded — the name "<name>" is already taken by a session-only plugin (--plugin-dir / --plugin-url), which takes precedence
  3. Установленный плагин маркетплейса. Плагин каталога навыков с тем же именем получает ту же строку Not loaded, называя установленный плагин
  4. Плагин каталога навыков. Между двумя из них копия под ~/.claude/skills/ загружается и копия проекта .claude/skills/ отбрасывается, со строкой, которая говорит, какой путь её затенил
  5. Плагин синхронизированный с claude.ai. Когда включённый плагин из любого другого источника совпадает с его именем, Claude Code загружает этот плагин и сообщает о синхронизированной копии как не загруженной. Чтобы использовать копию claude.ai вместо этого, отключите свою собственную копию
Поскольку порядок сравнивает имена манифестов, плагин --plugin-dir с именем hello-plugin заменяет hello@example-marketplace, когда манифест этого плагина также говорит "name": "hello-plugin".

Держите плагин только для сеанса от загрузки

Чтобы плагин --plugin-dir не затенял ничего, или чтобы отключить его, когда родительский процесс передаёт флаг для вас, установите его идентификатор в false в любом файле параметров. Для плагина, чьё имя манифеста — hello-plugin, запись — "enabledPlugins": {"hello-plugin@inline": false}. Отключённый плагин только для сеанса не затеняет, поэтому вместо этого загружается копия маркетплейса или каталога навыков.

Следующие шаги