The post has been translated automatically. Original language: Russian
On September 24, Docker Agent 1.143.0 was released, a runtime AI agent from Docker with a terminal interface, support for MCP servers and the ACP protocol for connecting external clients. The release is mainly dedicated to ACP compatibility: new protocol methods have been added, and most of the 23 fixes relate to access rights, file management, and session tracking. At the same time, the code base was transferred to the new features of the Go standard library.
What's new in the ACP protocol
Through ACP, an external client creates agent sessions, resumes them, and sends requests. In this version appeared:
- session/load method: The client reconnects to an existing session, and the agent first replays the saved history, and then responds to the request.;
- support for stdio MCP servers, which are transmitted by the client itself when creating or resuming a session. They are initialized immediately and belong to a specific session.;
- slash commands /compact, /usage, and /new with full-fledged cancellation and queuing of moves;
- The correct response completion codes are end_turn, max_tokens, refusal, max_turn_requests, and error. Previously, the agent always returned end_turn, and the client could not distinguish between a normal response and a token limit.;
- page-by-page list of sessions: no more than 50 per page, sorted by creation time, filtered by working directory.
Rights and file related fixes
For those who let the agent into the working repository, this is the most important part of the release.:
- The "allow and remember" button now remembers the consent only for the selected instrument. Prior to the correction, the permission was extended to the entire session.;
- When the iteration limit is reached, continuation is accepted only for the exact continue option, and empty, unknown, and otherwise typed responses are rejected.;
- file policies and hooks after editing are applied before read, write, and edit operations, and "hanging" symbolic links are rejected.;
- when the session resumes, the working directory is checked via os.SameFile, the registry of tools and providers is downloaded anew for each session, and paths are no longer resolved relative to someone else's directory.;
- closing the session now waits for the current move to complete and the instruments to stop, which removes the race and resumes.
In addition, the skill_content_guard and prompt_file_guard hook events have been added: the operator can intercept the loading of skill contents and files with prompta before they get into the model.
Providers and cost accounting
The provider_opts.extra_body parameter forwards vendor-specific fields to Chat Completions, such as reasoning_effort or enable_thinking. In multi-agent scenarios, costs are now accumulated for each session, rather than being wiped out by the costs of the child agent. The GOOGLE_GENAI_USE_VERTEXAI variable is parsed as a boolean value: the values false and 0 really disable routing in Vertex AI.
Upgrading the Go code
The project switched to the uuid package from the Go 1.27 standard library and removed the external dependency from the main code path, and the generalized errors.AsType replaced the template with errors.As in 34 locations. Competitive tests have been transferred to synctest, and goroutine leaks have been eliminated in TUI when the session is closed.
What does this mean in practice?
If the agent is connected to the editor via ACP, it is worth updating for the sake of correcting with memorizing permissions: previously, one "remember" extended to the entire session, and not to a specific tool. After the update, be prepared that the agent will start asking for confirmation more often — this is expected behavior, not regression.
Check the configurations with symbolic links inside the working directory: links to nowhere are now rejected, and the script that used to "somehow work" may start to crash. If you parse the agent's responses programmatically, consider the new completion codes: a code waiting only for end_turn will skip the token limit break.
The draft text was prepared with the participation of AI, the facts are checked against the original source — official release notes of the Docker Agent project on GitHub
24 сентября вышел Docker Agent 1.143.0 — рантайм ИИ-агентов от Docker с терминальным интерфейсом, поддержкой MCP-серверов и протокола ACP для подключения внешних клиентов. Релиз в основном посвящён совместимости с ACP: добавлены новые методы протокола, а большая часть из 23 исправлений касается прав доступа, работы с файлами и учёта сессий. Параллельно кодовую базу перевели на новые возможности стандартной библиотеки Go.
Что нового в протоколе ACP
Через ACP внешний клиент создаёт сессии агента, возобновляет их и отправляет запросы. В этой версии появились:
- метод session/load: клиент переподключается к существующей сессии, и агент сначала воспроизводит сохранённую историю, а потом отвечает на запрос;
- поддержка stdio MCP-серверов, которые передаёт сам клиент при создании или возобновлении сессии. Они инициализируются сразу и принадлежат конкретной сессии;
- slash-команды /compact, /usage и /new с полноценной обработкой отмены и очереди ходов;
- корректные коды завершения ответа: end_turn, max_tokens, refusal, max_turn_requests и error. Раньше агент всегда возвращал end_turn, и клиент не мог отличить нормальный ответ от упёршегося в лимит токенов;
- постраничная выдача списка сессий: не больше 50 на страницу, сортировка по времени создания, фильтр по рабочему каталогу.
Исправления, связанные с правами и файлами
Для тех, кто пускает агента в рабочий репозиторий, это самая важная часть релиза:
- кнопка «разрешить и запомнить» теперь запоминает согласие только для выбранного инструмента. До исправления разрешение распространялось на всю сессию;
- при достижении лимита итераций продолжение принимается только по точному варианту continue, а пустые, неизвестные и набранные в другом регистре ответы отклоняются;
- файловые политики и хуки после правки применяются до операций чтения, записи и редактирования, а «висячие» символические ссылки отвергаются;
- при возобновлении сессии рабочий каталог сверяется через os.SameFile, реестр инструментов и провайдеров загружается заново для каждой сессии, и пути больше не разрешаются относительно чужого каталога;
- закрытие сессии теперь дожидается завершения текущего хода и остановки инструментов, что убирает гонку с последующим возобновлением.
Кроме того, добавлены события хуков skill_content_guard и prompt_file_guard: оператор может перехватить загрузку содержимого навыков и файлов с промптами до того, как они попадут в модель.
Провайдеры и учёт стоимости
Параметр provider_opts.extra_body пробрасывает в Chat Completions поля конкретного вендора, например reasoning_effort или enable_thinking. В многоагентных сценариях расходы теперь копятся по каждой сессии, а не затираются расходами дочернего агента. Переменная GOOGLE_GENAI_USE_VERTEXAI разбирается как логическое значение: значения false и 0 действительно отключают маршрутизацию в Vertex AI.
Модернизация кода на Go
Проект перешёл на пакет uuid из стандартной библиотеки Go 1.27 и убрал внешнюю зависимость из основного пути кода, а обобщённый errors.AsType заменил шаблон с errors.As в 34 местах. Конкурентные тесты переведены на synctest, в TUI устранены утечки горутин при закрытии сессии.
Что это значит на практике
Если агент подключён к редактору через ACP, стоит обновиться ради исправления с запоминанием разрешений: раньше одно «запомнить» распространялось на всю сессию, а не на конкретный инструмент. После обновления будьте готовы, что агент начнёт спрашивать подтверждение чаще — это ожидаемое поведение, а не регрессия.
Проверьте конфигурации с символическими ссылками внутри рабочего каталога: ссылки в никуда теперь отклоняются, и сценарий, который раньше «как-то работал», может начать падать. Если вы разбираете ответы агента программно, учтите новые коды завершения: код, ожидающий только end_turn, пропустит обрыв по лимиту токенов.
Черновик текста подготовлен с участием ИИ, факты сверены с первоисточником — официальные release notes проекта Docker Agent на GitHub