The post has been translated automatically. Original language: Russian
The Agent Development Kit for Python, Google's open source toolkit for building agents based on language models, received version 2.9.0 (September 10, 2026), followed by version 2.9.1 (September 15). The release is small, but noticeable in its consequences: automatic switching to a backup model, runtime for voice and phone scenarios, workflow graphs in YAML, and several behavior changes that are visible in the already written code.
Reserve in case of model failure
The main novelty is the FallbackModel. If the main model responds with an error, the agent automatically switches to predefined replacement models. Previously, everyone wrote such logic themselves on top of the client: they caught an exception, counted attempts, and substituted another provider. Now it is a regular element of the agent configuration. The transfer_reason parameter has also been added when transferring control to another agent, so that the task does not go in circles.
Voice, telephony, and graphs in the configuration
A LiveKit—based runner has been added: voice and phone agents are assembled on it - previously, you had to do a bunch of media streams and models manually.
The second practical thing is that ADK 2.0 workflow graphs can be written and loaded directly from declarative YAML files. The launch scheme ceases to be a code and becomes a configuration: it is easier to compare it by version and edit it without rebuilding the application.
Compatible with MCP SDK 2.x
The set has learned how to work with Model Context Protocol servers not only on SDK 1.x, but also on 2.x. By default, installation is still allowed in 1.x - the second branch must be set consciously. Important detail: in 2.x, data models have become private, so fields that the server sends but the SDK does not declare are discarded during validation and do not reach the calling code — both as a result of calling the tool and in its description. The exception is the _meta field: it is declared and arrives as before, and vendor extensions are recommended for server authors to transfer it there.
Breaking Changes
There are three of them, and each one manifests itself silently.:
- The workflow node that crashed is now running anew when resumed, rather than being reproduced as successfully completed. If a node does an external side effect and then crashes, the effect will repeat each time it resumes.
- Object storage tools read and write local files only inside the directory specified by the local_file_root setting; without this setting, access to local files is completely prohibited. The path can be absolute or relative, and it decides where it eventually resolves to.
- The in-memory session service throws an error when adding an event to an unknown session instead of accepting the event and losing it. Services on top of the database have behaved this way before.
The fourth change will only affect those who set up retries: the nested workflow is now repeated when the node inside it crashes. Version 2.9.1 adds one fix: with adaptive reasoning of Claude models, the set requests visible reasoning steps, so that the intermediate steps are viewable again.
What does this mean in practice?
The first thing worth re—reading is the node bodies of the workflows: the new behavior when resuming turns any non-idempotent operation into a potential duplicate. Debiting funds, sending a letter, creating an entry in an external system — all this now needs to be protected with an idempotence key or an existence check.
The second is setting up local_file_root. Its absence does not give a warning at the start, it simply closes local access, and the script will crash when the queue actually reaches the file.
And third: do not transfer the project to the MCP SDK 2.x "along with the update". Non—standard fields are discarded without exception and without being recorded in the log. When integrating with someone else's MCP server, this is the most unpleasant class of defects. If your servers transmit vendor fields, first move them under _meta.
The draft text was prepared with the participation of AI, the facts were checked against the original source — the official release notes of the Agent Development Kit for Python in the project repository.
Agent Development Kit для Python — открытый набор инструментов Google для сборки агентов на языковых моделях — получил версию 2.9.0 (10 сентября 2026 года) и следом уточняющую 2.9.1 (15 сентября). Релиз невелик, но заметен по последствиям: автоматическое переключение на резервную модель, рантайм для голосовых и телефонных сценариев, графы рабочих процессов в YAML — и несколько изменений поведения, которые видны на уже написанном коде.
Резерв на случай отказа модели
Главная новинка — FallbackModel. Если основная модель отвечает ошибкой, агент автоматически переключается на заранее заданные запасные. Раньше такую логику каждый писал сам поверх клиента: ловил исключение, считал попытки, подставлял другого провайдера. Теперь это штатный элемент конфигурации агента. Добавлен и параметр transfer_reason при передаче управления другому агенту — чтобы задача не ходила по кругу.
Голос, телефония и графы в конфигурации
Добавлен раннер на базе LiveKit: на нём собираются голосовые и телефонные агенты — раньше связку медиапотока и модели приходилось делать вручную.
Вторая практичная вещь — графы рабочих процессов ADK 2.0 можно писать и загружать прямо из декларативных YAML-файлов. Схема запуска перестаёт быть кодом и становится конфигурацией: её проще сравнивать по версиям и править без пересборки приложения.
Совместимость с MCP SDK 2.x
Набор научился работать с серверами Model Context Protocol не только на SDK 1.x, но и на 2.x. По умолчанию установка по-прежнему разрешается в 1.x — вторую ветку нужно ставить осознанно. Важная деталь: в 2.x модели данных стали закрытыми, поэтому поля, которые сервер присылает, но SDK не объявляет, отбрасываются при валидации и до вызывающего кода не доходят — и в результате вызова инструмента, и в его описании. Исключение — поле _meta: оно объявлено и приходит как раньше, и вендорные расширения авторам серверов рекомендуют переносить именно туда.
Ломающие изменения
Их три, и каждое проявляется молча:
- Узел рабочего процесса, который упал, при возобновлении теперь выполняется заново, а не воспроизводится как успешно завершённый. Если узел делает внешний побочный эффект и затем падает, эффект повторится при каждом возобновлении.
- Инструменты объектного хранилища читают и пишут локальные файлы только внутри каталога, заданного настройкой local_file_root; без этой настройки доступ к локальным файлам запрещён полностью. Путь может быть абсолютным или относительным, решает то, куда он в итоге разрешается.
- Сессионный сервис в памяти при добавлении события в неизвестную сессию бросает ошибку вместо того, чтобы принять событие и потерять его. Сервисы поверх базы данных так себя вели и раньше.
Четвёртое изменение заденет лишь тех, кто настраивал повторные попытки: вложенный рабочий процесс теперь повторяется, когда падает узел внутри него. Версия 2.9.1 добавляет одно исправление: при адаптивных размышлениях моделей Claude набор запрашивает видимые шаги рассуждения, так что промежуточные шаги снова доступны для просмотра.
Что это значит на практике
Первое, что стоит перечитать, — тела узлов рабочих процессов: новое поведение при возобновлении превращает любую неидемпотентную операцию в потенциальный дубль. Списание средств, отправка письма, создание записи во внешней системе — всё это теперь нужно защищать ключом идемпотентности или проверкой на существование.
Второе — настройка local_file_root. Её отсутствие не даёт предупреждения на старте, просто закрывает локальный доступ, и сценарий упадёт тогда, когда до файла реально дойдёт очередь.
И третье: не переводите проект на MCP SDK 2.x «заодно с обновлением». Нестандартные поля отбрасываются без исключения и без записи в лог — при интеграции с чужим MCP-сервером это самый неприятный класс дефектов. Если ваши серверы передают вендорные поля, сначала перенесите их под _meta.
Черновик текста подготовлен с участием ИИ, факты сверены с первоисточником — официальные заметки к релизам Agent Development Kit для Python в репозитории проекта.