Start Debugging

Claude Code 2.1.175 закрывает лазейку availableModels с помощью enforceAvailableModels

Месяцами availableModels ограничивал выбор моделей, но оставлял настежь открытым вариант Default. Claude Code 2.1.175 добавляет enforceAvailableModels, чтобы администраторы наконец могли зафиксировать строгий список разрешённых моделей.

Если ваша организация перешла на availableModels, чтобы контролировать, какие модели Claude могут запускать разработчики, в этом заборе всё это время была незаметная дыра. Список разрешённых моделей управлял /model, флагом --model, переменной ANTHROPIC_MODEL, субагентами и переопределениями советника, но он никогда не затрагивал тот единственный вариант, который показывает любой селектор: Default. Разработчик мог выбрать Default и оказаться на той модели, которая является системной по умолчанию для его уровня, благополучно минуя ваш тщательно составленный список. Claude Code 2.1.175, выпущенный 2026-06-12, наконец закрывает этот пробел новой управляемой настройкой: enforceAvailableModels.

Почему Default был утечкой

availableModels всегда был списком разрешённых именованных моделей. Запись Default особенная. Это не псевдоним модели, она разрешается в значение по умолчанию во время выполнения для уровня учётной записи (Opus 4.8 в Anthropic API для Max и оплаты по факту использования, Sonnet 4.6 для подписочных мест и так далее). Поскольку Default обходит именованный список, администратор, задавший такое:

{
  "availableModels": ["claude-sonnet-4-5", "haiku"]
}

всё равно не мог помешать пользователю выбрать Default и получить новейшую модель уровня. Для команд, фиксирующих конкретную версию из соображений стоимости или соответствия требованиям, это был реальный обход, а не теоретический.

Что на самом деле делает enforceAvailableModels

Установите его в true в управляемых или политических настройках вместе с непустым списком availableModels. Когда модель по умолчанию для уровня отсутствует в списке разрешённых, Default теперь разрешается в первую разрешённую запись вместо модели по умолчанию для уровня.

{
  "model": "claude-sonnet-4-5",
  "availableModels": ["claude-sonnet-4-5", "haiku"],
  "enforceAvailableModels": true,
  "env": {
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"
  }
}

Эти две настройки охватывают разные области. enforceAvailableModels заставляет Default подчиняться списку разрешённых, тогда как блок env фиксирует, в какую версию разрешается такой допустимый псевдоним, как sonnet. Одна оговорка, которую стоит запомнить: пустой availableModels: [] никогда не включает принуждение, поэтому пользователи сохраняют свой Default для уровня, что бы ни говорил enforceAvailableModels.

Усиление в версии 2.1.176

Днём позже 2.1.176 закрыл два смежных края. Выбор модели по псевдониму больше нельзя перенаправить на заблокированную модель через переменные окружения ANTHROPIC_DEFAULT_*_MODEL, а /fast теперь отказывается переключаться, когда переключение привело бы к модели вне списка разрешённых.

Не менее важно поведение слияния. Когда availableModels задан в управляемых или политических настройках, это значение полностью заменяет результат слияния. Записи, добавленные в пользовательских или проектных настройках, не могут его расширить, и enforceAvailableModels заменяется таким же образом. Начиная с 2.1.175 это единственный способ обеспечить строгий список разрешённых; более ранние версии сливали управляемый список с записями более низкого приоритета, что означало, что разработчик мог незаметно его дополнить.

Если вы используете Claude Code в команде и вам важно, какие модели действительно выполняются, обновитесь до 2.1.175 или новее и сочетайте availableModels с enforceAvailableModels. Полные правила приоритета приведены в документации по настройке моделей.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад