Перейти к содержанию

Claude Code

Claude Code 2.1.259 раздаёт MCP-серверы всей организации

5 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →

В Claude Code 2.1.259, вышедшем 2 сентября, у администраторов появился третий способ управлять MCP-серверами в организации. Новая настройка managedMcpServers выдаёт всем пользователям общий список удалённых серверов. Серверы, которые люди подключили сами, при этом остаются на месте.

Этот пункт стоит первым в списке изменений на GitHub. Тем, кто отвечает за корпоративную установку, стоит прочитать ещё два: поменялось поведение allowedMcpServers, а с битым файлом политики Claude Code не запускается. Остальные изменения касаются безголовых запусков, правил запрета для Bash и параллельных сессий.

Третья схема для MCP

По умолчанию любой пользователь Claude Code может подключить любой MCP-сервер. Прежде чем добавить коннектор в Anthropic Directory, Anthropic проверяет его по своим критериям, но сами MCP-серверы не аудирует и не управляет ими. Всё остальное организация настраивает сама.

В документации Claude Code теперь описаны три схемы. Файл managed-mcp.json задаёт фиксированный набор. Если он развёрнут, Claude Code загружает только его серверы, серверы из managedMcpServers, встроенные серверы приложения, которое запустило сессию (например, сервер расширения VS Code или коннекторы десктопного приложения), и Claude in Chrome, если он разрешён. Всё остальное пользователю недоступно, в том числе серверы из плагинов и переданные через --mcp-config. Пара allowedMcpServers и deniedMcpServers фильтрует то, что пользователи настраивают сами. managedMcpServers встаёт между ними: каждый получает серверы из списка администратора и сохраняет свои.

managed-mcp.json - отдельный файл, поэтому доставить его через серверные managed settings нельзя. Если серверы нужно раздать через managed settings и при этом не забирать у пользователей полный контроль, документация предлагает managedMcpServers.

Записи в новой настройке устроены так же, как в .mcp.json, но поддерживаются только HTTP и SSE. Записи с командой запуска пропускаются. Значит, stdio-сервер, который Claude Code запускает локальным процессом на машине пользователя, так раздать не получится, и централизованно можно выдать только то, что уже работает где-то в сети.

Безголовые хосты и запреты на чтение

Флаг --permission-prompts none рассчитан на хосты, где за сессией никто не следит. Всё, что вызвало бы запрос разрешения, автоматически отклоняется. При этом активный режим разрешений, включая auto, продолжает решать сам: то, что он пропускает, проходит как обычно, просто до человека дело не доходит. К тем же сценариям относятся ещё два пункта. Удалённые и запланированные сессии перестали простаивать, если запрос на инструмент коннектора одобрили, пока сессия стояла на паузе. А в headless-режиме и SDK первый ход начинается до 50 мс раньше, когда MCP-серверы заканчивают подключаться.

В правилах Read() для Bash закрыли несколько обходов. Раньше они не срабатывали на файлы, переданные как значение опции (--ignore-revs-file=.env, -f.env, @file), на файловые аргументы git diff и git grep и на связки вида cd DIR && cat FILE. В 2.1.259 все три случая закрыты. Вдобавок grep -r и cp -r по каталогу, где лежит запрещённый файл, требуют подтверждения.

Параллельные сессии и кеш

Сессии, запущенные одновременно, могли молча откатывать изменения друг друга в ~/.claude.json. Из-за этого сбрасывалось доверие к workspace, а состояние MCP и проекта терялось. В 2.1.259 это исправили.

Ещё несколько исправлений касаются кеша промптов и рассуждений модели. Кеш перестал сбрасываться при обновлении OAuth-токена в сессиях с отключённой телеметрией. Блокирующий Stop-хук раньше стирал рассуждения модели в ходе после блокировки, а на некоторых моделях этот ход вдобавок промахивался мимо кеша промптов. Починили и разговоры, в которых thinking однажды отклонили: раньше отказ повторялся на каждом следующем ходе.

Отдельно поправили поле model: во frontmatter команд и навыков. В интерактивных сессиях оно игнорировалось. В auto mode оно, наоборот, срабатывало даже для модели, которую этот режим не поддерживает, а после исправления ход в таком случае остаётся на модели сессии. CLAUDE_CODE_MAX_CONTEXT_TOKENS учитывается и для идентификаторов в стиле Vertex с суффиксом @YYYYMMDD, если Claude Code не знает такую версию модели.

Другие пункты релиза:

  • команды glab mr create/merge/close/reopen/note/update распознаются: GitLab merge request отображается как MR !N в свёрнутой сводке инструментов и обновляет бейдж MR в футере;
  • claude plugin validate --json выдаёт отчёт о валидации в машиночитаемом виде;
  • /install-github-app в GitLab-репозитории объясняет, что работает только с GitHub, и отправляет к документации по GitLab CI/CD;
  • в VS Code в боковой панели сессий появились фильтр Active и фильтр по статусу: Needs input, Working, Completed;
  • Stop в сессиях remote-control действительно останавливает фоновых агентов и workflows, а убитые задачи остаются видны, пока не завершатся их процессы;
  • в метриках и событиях OpenTelemetry из облачных сессий снова есть user.email, organization.id и user.account_uuid;
  • сессии с изоляцией worktree перестали отказывать в обычных циклах Bash, конвейерах с xargs и командах через лаунчеры, которые не могут добраться до основного checkout;
  • --resume и --continue открывают сохранённые сессии с пустыми вложениями.

Битая политика и allowlist

Если файл managed settings не удавалось разобрать, он просто не применялся, и политика молча переставала действовать. Так было с основным файлом, drop-in, MDM plist и значением в HKLM. В 2.1.259 Claude Code в таком случае отказывается запускаться и называет источник ошибки. Заодно исправили игнорирование forceRemoteSettingsRefresh при старте, если до этого уже отработал policy helper, настроенный через MDM или файл managed settings. А MCP-сервер, который отключился, пока при старте получали список его инструментов, сообщает об ошибке. Раньше он числился подключённым, но без инструментов.

Поменялось и поведение allowedMcpServers: настройка действует только на серверы, которые добавляют сами пользователи. В issue на GitHub пользователь ранее сообщал, что на версии 2.1.70 allowedMcpServers из managed-settings.json обходился флагами --mcp-config и --allowedTools при запуске, а managed-mcp.json такой запуск блокировал.

Если ваш allowlist отсекал часть собственного managed-mcp.json, после обновления такой сервер загрузится. Чтобы он оставался выключенным, внесите его в deniedMcpServers.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.