This release adds sandbox authentication improvements, compaction-model context visibility in the TUI, MCP lifecycle enforcement, and a range of bug fixes across the TUI, CLI, and OpenAI integration.
What's New
- Adds
sbx-logininjection for gateway authentication in sandbox environments, replacing the previous file-based token-forwarding mechanism - Defaults sandbox creation to the
docker/docker-agent-sbx-templates:latesttemplate - Creates sandboxes under the canonical
docker-agentname - Makes
oauth clientIdoptional for remote MCP toolsets, supporting Dynamic Client Registration and interactive credential flows - Surfaces the compaction-model context-limit cap explicitly in the
/contextdialog and sidebar, so users can see when a dedicated compaction model is imposing a smaller context window than the primary model - Adds segment-aware click detection on the sidebar Token Usage reading: clicking the token count/percentage opens
/context, clicking the cost/⚠ cappedarea opens/cost; the "Token Usage" title is no longer clickable - Enforces
lifecycle.call_timeoutfor MCP tool calls, which was previously parsed but never acted on - Exposes spawned TUI tabs (opened with ctrl+t) on the
--listencontrol plane so control-plane clients can observe all active sessions - Adds GitHub Copilot to
docker agent setupanddoctor, recognizing bothGITHUB_TOKENandGH_TOKEN
Bug Fixes
- Fixes copy buttons rendering in contexts where they were never wired up for hit-testing (reasoning blocks, elicitation dialogs, lean TUI, shell output, welcome messages)
- Fixes the "copied" flash background on user-message copy labels, which previously rendered with a transparent background
- Fixes mouse hit-testing falling out of sync when layout shifts without a terminal resize (e.g., after loading a past session with
/session) - Fixes an infinite loop in
backgroundAtwhen encountering invalid UTF-8 bytes - Fixes capability handlers (OAuth elicitation, etc.) not being forwarded to inner toolsets when
code_mode_tools: trueis set - Fixes data races in deferred tools and the BM25 RAG strategy, and prevents a TUI editor panic
- Fixes wrapped URLs losing their clickability in tool output
- Fixes the
⚠ cappedmarker on the sidebar opening/costinstead of/context - Fixes
docker agent debugnot appearing in the root help output - Fixes
docker agent setupprovider path labels to clarify built-in cloud providers vs. custom OpenAI-compatible endpoints - Fixes OpenAI Responses API function arguments not being recovered when providers omit
response.function_call_arguments.delta
Technical Changes
- Refactors sandbox integration to assume the modern CLI surface shared by both backends
- Removes all references to the discontinued
agentcatalogDocker Hub namespace, replacing examples with neutralmyorg/agentplaceholders - Freezes config schema v14 and advances
latestto v15 - Refactors board internals: deduplicates column lookup with a
columnIndexLockedhelper, deduplicates stored-project access with aprojectsLockedhelper, and consolidates per-card controller state into a singlecardStatemap
What's Changed
- fix(tui): never render dead code-block copy buttons by @dgageot in #3789
- docs: update CHANGELOG.md for v1.115.0 by @docker-read-write[bot] in #3790
- sandbox: rely on sbx-login injection for gateway auth, modern sandbox CLI surface by @dgageot in #3791
- docs: update slash command and permission pattern docs for recent changes by @aheritier in #3794
- feat(config): make oauth clientId optional for remote MCP toolsets by @dgageot in #3796
- fix(tui): keep copy label background under "copied" flash by @dgageot in #3797
- fix(tui): guard backgroundAt against infinite loop on invalid UTF-8 by @dgageot in #3799
- fix(tui): keep mouse hit-testing in sync when the layout shifts without a resize by @dgageot in #3798
- chore: remove every trace of the discontinued agent catalog by @dgageot in #3804
- chore: bump direct Go dependencies by @dgageot in #3801
- fix(cli): add GitHub Copilot to setup and doctor by @stkevintan in #3793
- feat(config): freeze config v14 and start v15 as latest by @dgageot in #3807
- docs: auto-update for merged PRs (2026-07-23) by @aheritier in #3812
- docs: improve Ollama and local models discoverability by @aheritier in #3810
- fix(codemode): forward capability handlers to inner toolsets by @aheritier in #3809
- docs: auto-update for merged PRs (2026-07-24) by @aheritier in #3815
- feat(tui): open /context or /cost from the sidebar token-usage reading by @aheritier in #3813
- feat(tui): surface compaction-model context-limit cap in the TUI by @aheritier in #3811
- chore: bump direct Go dependencies by @dgageot in #3816
- refactor(board): simplify app and controller internals by @dgageot in #3817
- feat: enforce lifecycle.call_timeout for MCP tool calls by @jedp-docker in #3814
- feat(run): expose spawned TUI tabs on the --listen control plane by @dgageot in #3819
- fix: resolve data races in deferred tools and BM25 strategy, prevent TUI editor panic by @Piyush0049 in #3822
- fix(tui): keep wrapped URLs clickable by @Sayt-0 in #3823
- fix(setup): clarify model provider paths by @Sayt-0 in #3824
- fix(openai): recover final response tool arguments by @Sayt-0 in #3825
- fix(tui): open /context (not /cost) when clicking the ⚠ capped marker by @aheritier in #3826
- fix(cli): show debug command in help by @Sayt-0 in #3827
New Contributors
- @stkevintan made their first contribution in #3793
Full Changelog: v1.115.0...v1.116.0