LiteLLM выпустила два релиза с разницей в пять минут ранним утром 23 августа: v1.99.0-rc.1, prerelease, в 00:23 UTC, и v1.98.0, stable, в 00:28 UTC. В заметках к стабильному релизу указан исправленный баг в аутентификации. Коммит, который отменил это исправление, находится в той же истории.

Что исправляло изменение

PR #36837 озаглавлен «fix(auth): stop the team fallback from widening model access». LiteLLM определяет, к каким моделям может получить доступ вызывающий, в том числе на основе записи этой команды в team record. Когда поиск команды не удается, код переходил к полям, передаваемым в самом токене, — и на этом пути fallback пустой список team_models читался как разрешение на любую модель, а не на отсутствие доступа. Исправление превращало отсутствие команды в жесткий отказ.

Почему его откатили

Admin UI подписывает ключ своей сессии с помощью sentinel team ID, litellm-dashboard, у которого намеренно нет строки в базе данных. Исправление воспринимало отсутствие этой строки как основание для отказа, поэтому все запросы к панели возвращали 404, а все администраторы были заблокированы. PR #36982 откатил это изменение 14 августа, восстановив fallback, основанный на токене.

Искажение: запись в changelog — не то же самое, что состояние в продакшене

Чтение заметок к v1.98.0 подсказывает, что брешь в team-fallback закрыта. Просмотр истории коммитов показывает, что исправление было внесено, сломало панель управления и было откатано за девять дней до выхода этого релиза. Оба факта публичны; в changelog попадает только один из них. В этом и заключается общий риск восприятия release notes как журнала безопасности — они фиксируют то, что было смержено, а не то, что уцелело.

Откат честно говорит о своей цене

Он не преподносит себя как исправление. В описании сказано, что он восстанавливает fallback, основанный на токене, чтобы устранить регрессию при одновременном признании, что это вновь открывает дыру в безопасности, связанную с расширением доступа к моделям, и что нужна более аккуратная реализация. Для отката это необычно откровенная формулировка — и именно эта часть не отображается на странице релиза.

Что операторам следует проверить самостоятельно

Можно ли сказать, что исправленная реализация уже присутствует в release candidate v1.99.0, по публичным заметкам о релизе установить нельзя, и здесь это не утверждается. Всем, кто полагается на ограничения доступа к моделям на уровне команды, следует проверить поведение на собственном развертывании — в частности, что именно может вызвать ключ с неразрешимой командой и пустым списком моделей, — а не делать вывод по одной строке changelog.