Releases: docker/docker-agent
v1.46.0
This release adds OAuth credential configuration for MCP servers, evaluation testing improvements, and numerous stability fixes.
What's New
- Adds support for explicit OAuth credentials configuration for remote MCP servers that don't support Dynamic Client Registration
- Adds
--repeatflag to eval command for running evaluations multiple times - Adds support for
xhigheffort level in Anthropic adaptive thinking (Claude Opus 4.7+) - Adds
task_budgetconfiguration field for Claude Opus 4.7 to cap total tokens across multi-step tasks - Adds markdown rendering support in user_prompt dialog messages
Improvements
- Improves image attachment handling by inlining as base64 data URLs for cross-provider compatibility
- Improves robots.txt caching to store parsed data per host instead of boolean results
- Improves session database version detection with clear upgrade messages for newer databases
Bug Fixes
- Fixes
--attachflag being silently ignored when used without a message argument - Fixes data race in AddMessageUsageRecord by adding mutex lock
- Fixes data race in rule-based router by protecting lastSelectedID with mutex
- Fixes panic in extractSystemBlocks when system message is empty with CacheControl
- Fixes empty messages slice handling in SendUserMessage path
- Fixes symlink-based path traversal vulnerability in ACP filesystem toolset
- Fixes OAuth callback CSRF vulnerability by rejecting when expected state is not set
- Fixes MCP tryRestart to use context-aware select instead of time.Sleep
- Fixes assistant text being discarded when tool calls are present in Responses API conversion
- Fixes MCP OAuth token refresh by remembering the discovered auth server
Technical Changes
- Updates mutex handling for MCP Toolset.Instructions() method
- Updates Go dependencies including Anthropic SDK and various UI libraries
What's Changed
- docs: update CHANGELOG.md for v1.45.0 by @docker-read-write[bot] in #2427
- fix: reject OAuth callback when expected state has not been set (CSRF) by @dgageot in #2434
- fix: prevent symlink-based path traversal in ACP filesystem toolset by @dgageot in #2433
- fix: guard against empty messages slice in SendUserMessage path by @dgageot in #2432
- fix: prevent panic in extractSystemBlocks on empty system message wit… by @dgageot in #2431
- fix: hold mutex for instructions read in MCP Toolset.Instructions() by @dgageot in #2430
- fix: add mutex to protect lastSelectedID in rule-based router by @dgageot in #2429
- fix: add mutex lock to AddMessageUsageRecord to prevent data race by @dgageot in #2428
- Add --repeat flag to eval command for running evaluations multiple times by @dgageot in #2440
- fix: replace time.Sleep with context-aware select in MCP tryRestart by @dgageot in #2436
- fix: preserve assistant text when tool calls present in Responses API conversion by @dgageot in #2438
- fix: detect newer session database and show clear upgrade message by @dgageot in #2441
- Support explicit OAuth credentials for remote MCP servers by @dgageot in #2394
- fix: cache parsed robots.txt per host instead of boolean result by @dgageot in #2437
- bump direct Go dependencies by @dgageot in #2444
- Render markdown in user_prompt dialog messages by @dgageot in #2446
- Add a pokemon example by @dgageot in #2445
- Add an advanced coder example by @dgageot in #2447
- fix(mcp): reuse discovered auth server for token refresh by @pandego in #2448
- Fix --attach flag by @rumpl in #2449
- Support xhigh effort for Anthropic adaptive thinking (Opus 4.7+) by @dgageot in #2450
- feat(anthropic): add task_budget for Claude Opus 4.7 by @dgageot in #2453
- chore: update cagent-action to v1.4.1 by @derekmisler in #2454
Full Changelog: v1.45.0...v1.46.0
v1.45.0
This release improves template expression handling, adds circular navigation to completions, and fixes issues with skills and MCP toolset loading.
Bug Fixes
- Fixes evaluation of JavaScript template expressions to handle failures independently - when one expression fails, other valid expressions in the same template are still expanded
- Fixes skills loading functionality
- Fixes retry behavior for MCP toolset startup when server is unavailable
- Fixes MCP toolset creation to proceed even when command binary is unavailable
Improvements
- Adds circular navigation wrapping to completion component, allowing users to cycle through completion options
What's Changed
- docs: update CHANGELOG.md for v1.44.0 by @docker-read-write[bot] in #2403
- add circular navigation wrapping to completion component by @maxcleme in #2407
- fix: evaluate JS template expressions independently on failure by @dgageot in #2400
- fix: retry stdio MCP toolset when binary is unavailable at startup by @simon-agent-go-expert in #2413
- Fix skills loading by @dgageot in #2414
Full Changelog: v1.44.0...v1.45.0
v1.44.0
This release introduces TUI customization capabilities, session management improvements, and OAuth security enhancements, along with numerous bug fixes and stability improvements.
What's New
- Adds support for extending and customizing TUI with additional commands through new
Immediateflag andParserstruct - Adds session delete functionality to session browser
- Adds click-to-select support for agents in the sidebar
- Adds
/forkslash command to duplicate current session into a new tab - Adds mid-turn message steering for running agent sessions with new
/steerand/followupAPI endpoints - Adds OAuth token storage in OS keychain with silent refresh token support
- Adds debug OAuth commands: list, remove, and login
- Adds support for shell expansions (~, env vars) in config paths
- Adds total session count display in session browser dialog title
Improvements
- Improves TUI rendering to match sandbox template
- Makes Ctrl+W context-aware to preserve word deletion in editor when focused
- Makes
/exitclose only the current tab when multiple tabs are open
Bug Fixes
- Fixes crash when opening empty websocket frames in OpenAI provider
- Fixes Gemini thinking tokens not included in output token count for cost calculation
- Fixes tool calls getting stuck as running when moved out of active reasoning block
- Fixes missing type in schema and orphaned function calls in Responses API
- Fixes spurious blank line appearing in every assistant message
- Fixes layout shift when hovering over assistant messages to reveal copy button
- Fixes concurrent RunSession calls causing tool_use/tool_result mismatch
- Fixes panic in code mode when tool handler is nil
- Fixes suggestion ghost text remaining when completion dialog closes on backspace
- Fixes skill frontmatter parsing when description contains a colon
- Fixes sidebar agent click zones mapping all lines to first agent
- Fixes OAuth token security vulnerabilities and infinite recursion issues
- Fixes auto-detect tool install failures being treated as fatal
- Fixes background agent context being cancelled with parent message lifecycle
Technical Changes
- Stores OAuth tokens in OS keychain with graceful fallback to in-memory storage
- Serializes concurrent RunSession calls to prevent race conditions
- Sanitizes message history to ensure all tool calls have results
- Adds regression tests for SSE comment lines from OpenRouter
- Uses in-memory store in keyring tests to avoid macOS keychain permission dialog
- Separates steer and follow-up into distinct queues with lock/confirm semantics
- Adds documentation for OpenAPI toolset
- Optimizes PR CI build process
What's Changed
- docs: update CHANGELOG.md for v1.43.0 by @docker-read-write[bot] in #2347
- Better sandbox by @dgageot in #2348
- support session delete to session browser by @shaj13 in #2352
- fix: include Gemini thinking tokens in output token count for cost calculation by @dgageot in #2353
- fix(openai): ignore empty websocket frames by @pandego in #2350
- Store OAuth tokens in OS keychain and add silent refresh token support by @dgageot in #2355
- bump direct Go dependencies by @dgageot in #2358
- Allow to extend and customize TUI with additional commands by @shaj13 in #2346
- Debug oauth by @dgageot in #2365
- fix: handle missing type in schema and orphaned function calls in Responses API by @dgageot in #2362
- Fix tool call stuck as running when moved out of active reasoning block by @dgageot in #2360
- Add regression tests for SSE comment lines from OpenRouter by @dgageot in #2359
- feat: click on agent in sidebar to switch to it by @dgageot in #2356
- fix(tui): remove spurious blank line from every assistant message by @steilerDev in #2369
- fix: use in-memory store in keyring tests to avoid macOS keychain permission dialog by @dgageot in #2367
- docs: add documentation for OpenAPI toolset by @dgageot in #2371
- fix(tui): reserve stable top row for copy icon to prevent layout shift by @dgageot in #2374
- fix: serialize concurrent RunSession calls to prevent tool_use/tool_result mismatch by @dgageot in #2375
- Faster PR CI by @rumpl in #2378
- Sanitize message history by @rumpl in #2377
- fix(toolinstall): soft-fail auto-detect installs by @pandego in #2386
- fix: prevent panic in code mode when tool handler is nil by @dgageot in #2388
- optional title and app name by @shaj13 in #2366
- fix: /exit closes only the current tab when multiple tabs are open by @dgageot in #2387
- Add support for shell expansions (~, env vars) in config paths by @dgageot in #2389
- Bump direct Go dependencies by @dgageot in #2398
- fix: OAuth token security and bug fixes by @dgageot in #2395
- fix: decouple background agent context from parent message lifecycle by @dgageot in #2392
- Show total session count in session browser dialog title by @dgageot in #2391
- fix: make Ctrl+W context-aware to preserve word deletion in editor by @dgageot in #2390
- Add /fork slash command to duplicate current session into a new tab by @shaj13 in #2385
- Fix: allow tab auto-complete without executing by @joshbarrington in #2325
- Fix skill frontmatter parsing when description contains a colon by @dgageot in #2401
- fix: clear suggestion ghost text when completion dialog closes on backspace by @dgageot in #2399
- Add mid-turn message steering for running agent sessions by @trungutt in #2363
- Fix sidebar agent click zones mapping all lines to first agent by @dgageot in #2402
New Contributors
- @pandego made their first contribution in #2350
- @steilerDev made their first contribution in #2369
- @joshbarrington made their first contribution in #2325
Full Changelog: v1.43.0...v1.44.0
v1.43.0
This release adds non-interactive mode capabilities, improves TUI interactions with mouse support, and includes several bug fixes for RAG tools and streaming responses.
What's New
- Adds auto-stop for max iterations in non-interactive mode to prevent hanging when tools are approved
- Adds non-interactive mode flag to distinguish from tools approval scenarios
- Adds mouse drag-to-move support for TUI dialogs, allowing repositioning by clicking and dragging the title area
- Adds custom session ID support through WithID option instead of relying on UUID generation
- Adds support for custom providers in RAG embedding and reranking models
- Adds underline styling for URLs on mouse hover
Improvements
- Evolves providers config to support any provider type with shared model defaults
- Improves mise build output to show go build command and resulting binary
- Exempts background-agent polling from loop-termination detection to prevent false positives
Bug Fixes
- Fixes agent accent color application for working spinners in sidebar
- Fixes duplicate RAG tool names and nil pointer panic in file watcher
- Fixes toolset startup triggering from emitToolsChanged callback to avoid spurious timeout warnings
- Fixes missing Models map in RAG ManagersBuildConfig for model alias resolution
- Fixes nil pointer dereference in BM25Strategy.watchLoop during session teardown
- Fixes extraction of reasoning_content from DMR streaming responses
- Fixes scrollbar rendering in web terminals by replacing problematic characters
Technical Changes
- Adds nocgo build support for rag/treesitter
- Updates error message display when only one model is available
What's Changed
- docs: update CHANGELOG.md for v1.42.0 by @docker-read-write[bot] in #2317
- fix: use agent accent color for working spinners in sidebar by @jiahuipaung in #2315
- Exempt background-agent polling from loop-termination detection by @krissetto in #2319
- fix: pass Models map to RAG ManagersBuildConfig for model alias resolution by @dgageot in #2324
- fix: avoid triggering toolset startup from emitToolsChanged callback by @dgageot in #2323
- fix: resolve duplicate RAG tool names and nil pointer panic in file watcher by @dgageot in #2322
- rag/treesitter: add nocgo build support by @shaj13 in #2329
- Bump go dependencies by @dgageot in #2330
- session: add WithID option for custom session IDs by @shaj13 in #2331
- feat(runtime): add auto-stop for max iterations in non-interactive mode by @tdabasinskas in #2208
- Fix nil pointer dereference in BM25Strategy.watchLoop during session teardown by @dgageot in #2334
- Fix scrollbar rendering in web terminals by @dgageot in #2340
- Improve mise build output to show go build command and resulting binary by @dgageot in #2338
- fix: extract reasoning_content from DMR streaming responses by @dgageot in #2335
- feat: add mouse drag-to-move support for TUI dialogs by @dgageot in #2339
- Evolve providers to support any provider type with shared model defaults by @dgageot in #2343
- feat: support custom providers in RAG embedding and reranking models by @dgageot in #2344
- Underline URLs on mouse hover by @dgageot in #2316
- Nicer message by @rumpl in #2345
New Contributors
- @jiahuipaung made their first contribution in #2315
- @shaj13 made their first contribution in #2329
Full Changelog: v1.42.0...v1.43.0
v1.42.0
This release improves evaluation output with structured JSON results and fixes several Windows compatibility issues.
What's New
- Adds URL click detection for terminals with mouse tracking support
- Includes structured results, run configuration, and summary in evaluation JSON output
- Includes judge reasons for passed relevance criteria in evaluation results
Bug Fixes
- Fixes Windows OS detection typo in session environment (corrects "window" to "windows")
- Replaces removed claude-3-7-sonnet-latest alias with explicit model ID in examples
- Uses platform-aware shell detection for Windows compatibility in skill expansion, script_shell, post-edit hooks, and bang commands
Technical Changes
- Pre-populates criterion names in CheckRelevance results
- Fixes lint issues including gci formatting and testifylint float comparisons
What's Changed
- docs: update CHANGELOG.md for v1.41.0 by @docker-read-write[bot] in #2307
- eval: include structured results, run config, and summary in JSON output by @hamza-jeddad in #2309
- fix: correct Windows OS detection typo in session environment by @trungutt in #2312
- fix: replace removed claude-3-7-sonnet-latest alias in examples by @trungutt in #2313
- fix: use platform-aware shell for skill expansion, script_shell, post-edit hooks, and bang command by @trungutt in #2314
- tui/messages: Add URL click detection for terminals with mouse tracking by @vvoland in #2308
Full Changelog: v1.41.0...v1.42.0
v1.41.0
This release introduces a new models discovery command, contextual help system, and several TUI improvements including persistent warnings and simplified lean mode.
What's New
- Adds
docker agent modelscommand to list available models for the--modelflag - Adds contextual help dialog accessible via Ctrl+H (or F1/Ctrl+?) showing all keyboard shortcuts
- Adds
--leanflag for simplified TUI mode with minimal interface (just message stream and editor) - Adds copy button on hover for assistant messages to copy content to clipboard
- Adds Vertex AI Model Garden support for non-Gemini models (Claude, Llama) hosted on Google Cloud
Improvements
- Makes TUI warnings persist until manually dismissed instead of auto-dismissing after 3 seconds
- Preserves recent messages during session compaction to maintain conversational context
- Shows elapsed time and warning for long-running tool calls in the TUI
- Adds desktop_uuid in telemetry alongside user_uuid for better tracking
Bug Fixes
- Fixes markdown rendering in callout notes by adding markdown="1" attribute
- Fixes panic on closed channel by making chanSend non-blocking
- Fixes recursive run_skill loop in context:fork skill sub-sessions
- Fixes docker run --sandbox functionality
- Fixes eval tool_call_response to use correct event field names
- Fixes guard against nil tool_definition in buildTranscript
Technical Changes
- Replaces kin-openapi with pb33f/libopenapi for OpenAPI parsing
- Removes trailing headers handling for rate limit headers
- Tracks command errors with success=false and error details in telemetry
- Ports build system to mise
- Updates Go module dependencies
What's Changed
- Add desktop_uuid in telemetry (next to user_uuid) by @gtardif in #2279
- docs: update CHANGELOG.md for v1.40.0 by @docker-read-write[bot] in #2281
- Preserve recent messages during session compaction by @rumpl in #2259
- Make TUI warnings persist until manually dismissed by @dgageot in #2252
- Fix markdown rendering in documentation callout notes by @dgageot in #2285
- go mod tidy by @dgageot in #2292
- docs: add Vertex AI Model Garden section to Google provider docs by @dgageot in #2290
- Add copy button on hover for assistant messages by @dgageot in #2288
- Add Vertex AI Model Garden support for non-Gemini models by @dgageot in #2287
- fix: make chanSend non-blocking to prevent panic on closed channel by @dgageot in #2286
- tui: show elapsed time and warning for long-running tool calls by @dgageot in #2291
- Bump direct Go module dependencies by @dgageot in #2284
- Fix TUI stuck in Working state after failed sub-agent transfer_task by @dgageot in #2294
- Add --lean flag for simplified TUI mode by @dgageot in #2253
- Port to mise by @dgageot in #2293
- Track command errors with success=false and error details by @gtardif in #2283
- Remove trailing headers handling for rate limit headers by @dgageot in #2298
- fix: prevent recursive run_skill loop in context:fork skill sub-sessions by @dgageot in #2289
- Replace kin-openapi with pb33f/libopenapi for OpenAPI parsing by @dgageot in #2299
- fix: eval tool_call_response uses correct event field names by @hamza-jeddad in #2302
- Fix
docker run --sandboxby @dgageot in #2301 - use DD proxy when available, also from WSL by @gtardif in #2306
- Add contextual help dialog (Ctrl+H) by @masegraye in #2305
- feat: add
docker agent modelscommand by @masegraye in #2304
New Contributors
- @hamza-jeddad made their first contribution in #2302
- @masegraye made their first contribution in #2305
Full Changelog: v1.40.0...v1.41.0
v1.40.0
This release improves AI assistant capabilities with better response tracking and Google integration, plus fixes a critical exit hang issue.
What's New
- Adds Google Search, Google Maps, and code execution capabilities for Gemini models
- Surfaces finish_reason information on assistant messages and token usage events to track why the AI stopped generating responses
Bug Fixes
- Fixes process hang when using
/exitcommand due to bubbletea renderer deadlock
Technical Changes
- Adds tests reproducing bubbletea renderer deadlock on exit
- Adds safety-net exit mechanism for bubbletea renderer deadlock prevention
What's Changed
- docs: update CHANGELOG.md for v1.39.0 by @docker-read-write[bot] in #2265
- Fix process hang on /exit due to bubbletea renderer deadlock by @aheritier in #2269
- Fix url by @dgageot in #2277
- Google grounding by @dgageot in #2276
- Surface finish_reason on assistant messages and token usage events by @trungutt in #2254
Full Changelog: v1.39.0...v1.40.0
v1.39.0
This release adds new color themes for the terminal interface and includes internal version management updates.
What's New
- Adds Calm Roots theme with warm white accents, sage green info messages, and charcoal background
- Adds Neon Pink theme with vibrant pink tones and high-contrast white accents for readability
Technical Changes
- Freezes v7 version
- Updates CHANGELOG.md for v1.38.0
What's Changed
- docs: update CHANGELOG.md for v1.38.0 by @docker-read-write[bot] in #2256
- Add Calm Roots and Neon Pink themes by @ambigois in #2260
- Freeze v7 by @dgageot in #2264
Full Changelog: v1.38.0...v1.39.0
v1.38.0
This release improves OAuth configuration and fixes tool caching issues with remote MCP server reconnections.
Improvements
- Changes OAuth client name to "docker-agent" for better identification
- Reworks compaction logic to prevent infinite loops when context overflow errors occur repeatedly
Bug Fixes
- Fixes tool cache not refreshing after remote MCP server reconnects, ensuring updated tools are available after server restarts
Technical Changes
- Updates CHANGELOG.md for v1.37.0 release documentation
What's Changed
- docs: update CHANGELOG.md for v1.37.0 by @docker-read-write[bot] in #2243
- Change the oauth client name to docker-agent by @rumpl in #2245
- fix: refresh tool and prompt caches after remote MCP server reconnect by @dgageot in #2246
- Refactor compaction by @dgageot in #2242
Full Changelog: v1.37.0...v1.38.0
v1.37.0
This release adds support for forwarding sampling parameters to provider APIs, introduces global user-level permissions, and includes several bug fixes and improvements.
What's New
- Adds support for forwarding sampling provider options (top_k, repetition_penalty, etc.) to provider APIs
- Adds global-level permissions from user config that apply across all sessions and agents
- Adds a welcome message to the interface
- Adds custom linter to enforce config version import chain
Improvements
- Refactors RAG from agent-level config to standard toolset type for consistency with other toolsets
- Restores RAG indexing event forwarding to TUI after toolset refactor
- Simplifies RAG event forwarding and cleans up RAGTool
Bug Fixes
- Fixes Bedrock interleaved_thinking defaults to true and adds logging for provider_opts mismatches
- Fixes issue where CacheControl markers were preserved during message compaction, exceeding Anthropic's limit
- Fixes tool loop detector by resetting it after degenerate loop error
- Fixes desktop proxy socket name on WSL where http-proxy socket is not allowed for users
Technical Changes
- Documents max_old_tool_call_tokens and max_consecutive_tool_calls in agent config reference
- Documents global permissions from user config in permissions reference and guides
- Pins GitHub actions for improved security
- Updates cagent-action to latest version with better permissions
What's Changed
- docs: update CHANGELOG.md for v1.36.1 by @docker-read-write[bot] in #2227
- Add custom linter to enforce config version import chain by @dgageot in #2225
- feat: forward sampling provider_opts (top_k, repetition_penalty) to provider APIs by @dgageot in #2226
- Refactor RAG from agent-level config to standard toolset type by @dgageot in #2210
- docs: add max_old_tool_call_tokens and max_consecutive_tool_calls to agent config reference by @dgageot in #2229
- Pin GitHub actions by @dgageot in #2231
- update cagent-action to latest (with better permissions) by @derekmisler in #2233
- Bump direct Go module dependencies by @dgageot in #2238
- fix: strip CacheControl from messages during compaction by @dgageot in #2236
- Reset tool loop detector after degenerate loop error by @dgageot in #2237
- Add global-level permissions from user config by @trungutt in #2230
- docs: document global permissions from user config by @trungutt in #2241
- Fix desktop proxy socket name on WSL by @gtardif in #2240
Full Changelog: v1.36.1...v1.37.0