Claude Code: allowlist пропустил сервер — и он ЗАГРУЗИЛСЯ сам после обновления

Артур Хорошев
Артур Хорошев CEO Maya AI · Основатель «Ковчег»
Опубликовано:
Иллюстрация: разработчик проверяет терминал, в котором после обновления сам запустился сервер

После выхода обновления Claude Code под номером 2.1.305 локальные серверы расширений из общего файла настроек начали автоматически стартовать в сессиях терминала, даже если их не было в списке разрешённых. Раньше защитный фильтр надёжно отсекал любые инструменты, которых администратор не добавил в белый список. Теперь локальный процесс со скрытым в переменных окружения ключом загружается сам и не задаёт никаких вопросов. Если вы рассчитывали, что белый список надёжно изолирует терминал от лишних модулей, эту защиту после обновления придётся перепроверить вручную.

Как устроен общий файл и почему ключ прячут в окружении

Когда в компании настраивают Claude Code для команды, конфигурацию инструментов выносят в системный файл managed-mcp.json. На macOS он расположен в каталоге /Library/Application Support/ClaudeCode/, на Linux и WSL — в /etc/claude-code/, а на Windows хранится по пути C:\Program Files\ClaudeCode\. Этот файл централизованно описывает внешние MCP-серверы, открывающие помощнику дополнительные команды.

Файл доступен для чтения любому пользователю операционной системы. Записывать в него конфиденциальные API-ключи открытым текстом нельзя: любой соседний процесс сможет их прочитать. Поэтому документация прямо требует выносить секреты в переменные окружения через синтаксис ${VAR} внутри блока env. В общем файле остаётся лишь шаблон вызова, а рабочий токен подтягивается из окружения пользователя.

Почему фильтр разрешённых вдруг пропустил запуск

Параметр allowedMcpServers работает как белый список: запускаются только те серверы, чьи команды прямо указаны в перечне. Раньше серверы с переменными ${VAR} обязательно проверялись через этот список, поскольку их итоговые значения зависели от пользовательской среды.

В релизе 2.1.305 разработчики изменили эту логику: фильтр allowedMcpServers перестал отсекать локальные stdio-серверы из managed-mcp.json, если подстановка ${VAR} используется только в блоке env. Забытый или тестовый сервер, который раньше блокировался отсутствием в списке разрешённых, после обновления беспрепятственно стартует в рабочей сессии.

Страница релиза v2.1.305 с описанием изменений в фильтрации серверов
Официальный список изменений версии 2.1.305 с пометкой о загрузке серверов мимо списка разрешённых

Терминал считает корпоративный файл доверенным и не показывает предупреждений. В результате модель прямо во время работы получает доступ к командам сервера, который никто не собирался утверждать.

Схема: цепочка проверки серверов в Claude Code и обход списка разрешённых
Схема: цепочка проверки серверов в Claude Code и обход списка разрешённых

Разбор практических настроек ИИ-инструментов и безопасных сценариев автоматизации мы регулярно публикуем в канале Ковчег — подключайтесь, чтобы вовремя замечать подобные изменения в поведении моделей и терминалов.

Как остановить лишний модуль и где расходятся инструкции

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

При этом официальная документация на сайте отстаёт от реальности: справочные страницы на английском и русском языках всё ещё утверждают, что переменная ${VAR} в блоке env оставляет сервер на проверке белым списком. Сверяя настройки по инструкции, заметить тихое включение невозможно.

Проверить активные подключения в своей системе можно командой claude mcp list. Попытка вручную добавить новый сервер через claude mcp add при наличии корпоративного файла ожидаемо завершится ошибкой: система сообщит, что управление конфигурацией полностью передано общему файлу.

Почему песочница на Linux может открыть доступ к файлам

В релизе 2.1.305 появилась и настройка sandbox.allowNestedUserNamespaces для Linux. Встроенная песочница ограничивает консольные команды, защищая системные файлы. Однако инструментам вроде Chromium или контейнерам Podman без прав администратора требуются собственные пространства имён.

Новый переключатель разрешает их создание, но журнал изменений прямо предупреждает: вложенные пространства имён позволяют процессам обойти файловую защиту песочницы. В публичном справочнике настроек этого ключа пока нет — рядом описан лишь параметр enableWeakerNestedSandbox для работы внутри контейнеров Docker.

Документация с перечнем изменений версии 2.1.305
Журнал обновлений с описанием фильтра серверов и переключателя песочницы на Linux

Серверы MCP по умолчанию работают снаружи песочницы оболочки. Но если вы изолируете команды терминала и включите эту настройку, файловый барьер перестанет быть надёжной преградой.

Что проверить в рабочей сессии прямо сейчас

Утреннее обновление 2.1.306 устранило неприятную ошибку ложного превышения длины запроса, которая раньше сжимала контекст при большом числе подключённых инструментов. Но исходное поведение белого списка осталось в силе.

В работе с терминальными помощниками нельзя рассчитывать, что правила доступа неизменны между версиями. Запустите проверку через claude —version, посмотрите активные инструменты командой claude mcp list и внесите нежелательные модули в deniedMcpServers вместо надежды на белый список.

Поделиться статьей:
Telegram VK
Ссылка скопирована в буфер обмена
Артур Хорошев
Автор материала

Артур Хорошев

CEO Maya AI · Основатель «Ковчег»

Делюсь реальным опытом по вайбкодингу, автоматизации процессов в Make.com и созданию ИИ-агентов в Cursor. Автор курса и закрытого клуба «Контент-завод».

Клуб практиков

Создавайте контент и сервисы с помощью ИИ-агентов

В клубе «Контент-завод» — 181 практическое занятие, закрытые эфиры дважды в неделю (веду лично), готовые связки Make.com, MCP-серверы и круглосуточная поддержка.