This release adds shared toolsets, a new plan builtin toolset for multi-agent collaboration, and a readonly attribute for toolsets and agents, alongside several MCP OAuth reliability fixes and improvements to attachment forwarding and deterministic prompt ordering.
What's New
- Adds a top-level
toolsetsmap to the config schema, allowing toolset definitions to be shared and referenced by name from any agent via a newuse_toolsetsfield - Adds a
planbuiltin toolset that provides agents a shared, persistent scratchpad (write_plan,read_plan, and related tools) for multi-agent collaboration across turns - Adds a
readonlyboolean attribute to bothToolsetandAgentConfig, restricting agents or toolsets to read-only tools when set - Adds
styles.RegisterBuiltinThemes(fsys fs.FS)for Go SDK embedders to contribute additional built-in themes from a filesystem - Adds
SessionIDtoErrorEventand session-aware constructors soisRootEventcorrectly filters child-session errors
Bug Fixes
- Fixes image and PDF attachments being silently dropped for DMR-hosted models that are absent from the models.dev catalog
- Fixes MCP OAuth auto-recovery: a server-side
401 invalid_tokenrejection now evicts and refreshes the token instead of burning all reconnect attempts and enteringStateFailed - Fixes a retry storm on permanent OAuth reconnect errors in MCP
- Fixes non-interactive sessions stalling silently when an OAuth-protected MCP server has no cached token; now fails fast with an error
- Fixes
BuildAuthorizationURLincorrectly appending a second?when the OAuth authorization endpoint already contains a query string - Fixes eval runs failing with
unknown provider type "anthropic"by building the judge model from the populated provider registry - Fixes a TUI dialog being silently dropped when a nested sub-agent stream started in the same session, leaving the run blocked on user input
- Fixes non-deterministic prompt ordering in
ScriptToolSetby sortingshellToolsandtool.Argskeys before iteration, preventing Anthropic prompt-cache misses - Fixes provider registry being empty for RAG toolsets and other code paths after an earlier refactor emptied the default registry
- Fixes a compile error caused by a call site using the old unexported name
interactivePromptsAllowedafter it was renamed toInteractivePromptsAllowed
Technical Changes
- Converts bug and feature GitHub issue templates from markdown to issue forms (
.yml) - Makes registered theme precedence last-wins, using
slices.Backwardfor iteration - Surfaces re-auth notices and ensures background MCP OAuth reconnects are non-interactive
What's Changed
- docs: update CHANGELOG.md for v1.86.0 by @docker-read-write[bot] in #3212
- Let embedders register built-in themes via RegisterBuiltinThemes by @EronWright in #3182
- docs: update API server, CLI, DMR provider, and Go SDK for PRs #3199 #3201 #3206 #3182 by @aheritier in #3215
- docs: add Snapshots feature page by @dgageot in #3218
- fix(eval): build judge model from the populated provider registry by @Sayt-0 in #3222
- chore: bump docker-agent-action to v2.0.1 by @docker-agent in #3214
- fix: forward image and PDF attachments for DMR models by @Sayt-0 in #3197
- fix(mcp): auto-recover remote MCP OAuth on server-side invalid_token by @aheritier in #3207
- chore: convert bug/feature issue templates to issue forms by @aheritier in #3134
- fix(tui): keep pending dialog when a nested sub-agent stream starts by @aheritier in #3221
- fix: restore provider registry after cf5a430 emptied the default by @dgageot in #3196
- Add SessionID to ErrorEvent so isRootEvent correctly filters child errors by @simonferquel-clanker in #3224
- fix: fail fast on OAuth MCP auth in non-interactive sessions by @Sayt-0 in #3213
- fix: correct exported name InteractivePromptsAllowed in OAuth MCP handler by @dgageot in #3225
- feat: add readonly attribute for toolsets and agents by @dgageot in #3226
- ci: don't cancel in-progress runs on main by @dgageot in #3228
- feat: add top-level shared toolsets with use_toolsets agent field by @dgageot in #3232
- feat: add plan builtin toolset for shared multi-agent collaboration by @dgageot in #3227
- fix(mcp/oauth): merge query params when building authorize URL (#3229) by @aheritier in #3230
- fix: sort script toolset keys for deterministic prompt ordering by @simonferquel-clanker in #3235
New Contributors
- @EronWright made their first contribution in #3182
Full Changelog: v1.86.0...v1.87.0