Skip to content

Releases: docker/docker-agent

v1.32.2

12 Mar 15:25
cf98b63

Choose a tag to compare

This release focuses on security improvements and bug fixes, including prevention of PATH hijacking vulnerabilities and fixes to environment file support.

Bug Fixes

  • Fixes prevention of PATH hijacking and TOCTOU (Time-of-Check-Time-of-Use) vulnerabilities in shell/binary resolution (CWE-426)
  • Fixes --env-file support for the gateway

Technical Changes

  • Removes debug code from codebase
  • Reverts user prompt options feature that was previously added

What's Changed

  • docs: update CHANGELOG.md for v1.32.1 by @docker-read-write[bot] in #2084
  • fix: prevent PATH hijacking and TOCTOU in shell/binary resolution by @dgageot in #2083
  • Remove debug code by @dgageot in #2086
  • Fix --env-file support for the gateway by @dgageot in #2085
  • Revert "Add options-based selection to user_prompt tool" by @trungutt in #2088

Full Changelog: v1.32.1...v1.32.2

v1.32.1

12 Mar 13:13
59828bf

Choose a tag to compare

This release fixes several issues with session handling, tool elicitation, and MCP environment variable validation.

Bug Fixes

  • Fixes corrupted session history by filtering sub-agent streaming events from parent session persistence
  • Fixes elicitation requests failing in sessions with ToolsApproved=true by decoupling elicitation channel from ToolsApproved flag
  • Fixes MCP environment variable validation being skipped when any gateway preflight errors occur

Improvements

  • Prevents sidebar from scrolling to top when clicking navigation links in documentation

Technical Changes

  • Adds end-to-end test for tool result block validation
  • Updates CHANGELOG.md for v1.32.0 release

What's Changed

  • docs: update CHANGELOG.md for v1.32.0 by @docker-read-write[bot] in #2072
  • Don't scroll sidebar to the top by @dgageot in #2076
  • Fix corrupted session history by @dgageot in #2077
  • Fix MCP env var check skipped when any gateway preflight errors by @dgageot in #2081
  • fix: decouple elicitation channel from ToolsApproved flag by @dgageot in #2080

Full Changelog: v1.32.0...v1.32.1

v1.32.0

12 Mar 08:26
c17d1a8

Choose a tag to compare

This release adds support for newer Gemini models, improves toolset documentation, and enhances user interaction capabilities.

What's New

  • Adds options-based selection to user_prompt tool, allowing the agent to present users with labeled choices instead of free-form input
  • Documents {ORIGINAL_INSTRUCTIONS} placeholder for enriching toolset instructions rather than replacing them

Bug Fixes

  • Fixes support for Gemini 3.x versioned models (e.g., gemini-3.1-pro-preview) to ensure proper model recognition and thinking configuration
  • Fixes gateway handling when using docker agent without a command
  • Fixes broken links in documentation

Technical Changes

  • Adds check for broken links in CI
  • Updates .gitignore to exclude cagent-* binaries from being committed

What's Changed

  • docs: update CHANGELOG.md for v1.31.0 by @docker-read-write[bot] in #2063
  • doc: document {ORIGINAL_INSTRUCTIONS} placeholder for toolset instructions by @dgageot in #2062
  • fix: support Gemini 3.x versioned models (e.g., gemini-3.1-pro-preview) by @dgageot in #2054
  • Fix gateway handling with docker agent without command by @dgageot in #2064
  • Fix broken links by @dgageot in #2067
  • gitignore cagent-* binaries by @derekmisler in #2069
  • Check for broken links by @dgageot in #2068
  • Add options-based selection to user_prompt tool by @trungutt in #2071

Full Changelog: v1.31.0...v1.32.0

v1.31.0

11 Mar 14:55
9e1ea09

Choose a tag to compare

This release enhances the cost dialog with detailed session statistics and improves todo tool reliability for better task completion tracking.

What's New

  • Adds total token count, session duration, and message count to cost dialog
  • Adds reasoning tokens display for supported models (e.g. o1)
  • Adds average cost per 1K tokens and per message metrics to cost analysis
  • Adds cost percentage breakdown per model and per message
  • Adds cache hit rate and per-entry cached token count display

Improvements

  • Improves todo tool reliability by reminding LLM of incomplete items and including full state in all responses

Bug Fixes

  • Fixes Sonnet model name
  • Fixes various edge-case bugs in cost dialog formatting

Technical Changes

  • Adds cache to building hub image in CI
  • Optimizes CI by building and testing Go on the same runner to avoid duplicate compilation
  • Freezes config to v6
  • Deduplicates tool documentation into individual pages
  • Adds docs-serve task for local Jekyll preview via Docker

What's Changed

  • docs: update CHANGELOG.md for v1.30.1 by @docker-read-write[bot] in #2050
  • Add cache to building hub image in CI by @gtardif in #2037
  • cost dialog: enrich with session stats, per-model percentages, and formatting fixes by @dgageot in #2046
  • Fix sonnet model name by @dgageot in #2052
  • fix: improve todo completion reliability by @trungutt in #2048
  • Freeze config v6 by @dgageot in #2059
  • Improve the toolsets documentation by @dgageot in #2056

Full Changelog: v1.30.1...v1.31.0

v1.30.1

11 Mar 09:48
27ee4cd

Choose a tag to compare

This release improves command history handling, adds sound notifications, and includes various bug fixes and performance optimizations.

What's New

  • Adds sound notifications for long-running tasks and errors (opt-in feature, disabled by default)
  • Adds LSP multiplexer to support multiple LSP toolsets simultaneously
  • Adds per-toolset model routing via model field on toolsets configuration
  • Adds click-to-copy functionality for working directory in TUI sidebar
  • Makes background_agents a standalone toolset that can be enabled independently

Improvements

  • Improves tmux experience with better keyboard enhancements and focus handling
  • Optimizes BM25 scoring strategy for better performance
  • Reduces redundant work during evaluation runs
  • Fixes animated spinners inside terminal multiplexers
  • Repaints terminal on focus to fix broken display after tab switch in Docker Desktop

Bug Fixes

  • Fixes loading very long lines in command history that previously caused crashes
  • Fixes LSP server being killed by context cancellation and restart failures
  • Fixes session-pinned agent usage in RunStream instead of shared currentAgent
  • Fixes sidebar context percentage flickering during sub-agent transfers
  • Fixes concurrent map writes by moving registerDefaultTools to constructor
  • Returns clear error when OPENAI_API_KEY is missing for speech-to-text

Technical Changes

  • Splits monolithic runtime.go into focused files by concern
  • Refactors code to use slices and maps stdlib functions instead of manual implementations
  • Enables modernize and perfsprint linters with all findings resolved
  • Migrates tool output to structured JSON schemas for todo tools
  • Replaces json.MarshalIndent with json.Marshal in builtin tools
  • Uses errors.AsType consistently instead of errors.As with pre-declared variables

What's Changed

  • Don't ignore GITHUB_TOKEN by @dgageot in #2002
  • history: Fix loading very long lines by @vvoland in #1940
  • docs: update CHANGELOG.md for v1.30.0 by @docker-read-write[bot] in #2003
  • Fix broken links to pages subsections by @gtardif in #2005
  • feat: add sound notifications for task completion and errors by @Mostamhd in #1870
  • Add LSP multiplexer to support multiple LSP toolsets by @dgageot in #1970
  • fix(#2012): Return clear error when OPENAI_API_KEY is missing for speech-to-text by @aheritier in #2013
  • Bump direct Go dependencies by @dgageot in #2011
  • Fix LSP server killed by context cancellation and restart failures by @dgageot in #2008
  • Replace duplicated mockEnvProvider test types with shared environment providers by @dgageot in #2014
  • fix: use session-pinned agent in RunStream instead of shared currentAgent by @dgageot in #2009
  • docs: fix hallucinated CLI flags, commands, and config formats by @dgageot in #2020
  • refactor: use slices and maps stdlib functions instead of manual implementations by @dgageot in #2021
  • refactor(anthropic): deduplicate sequencing, media-type, and test helpers by @dgageot in #2019
  • refactor: split runtime.go and extract pkg/modelerrors by @dgageot in #2010
  • tui: improve tmux experience and simplify keyboard enhancements by @dgageot in #2017
  • codemode: fix Start() fail-fast and use tools.As for wrapper unwrapping by @dgageot in #2007
  • Simplify rulebased router: remove redundant types and score aggregation by @dgageot in #2016
  • Unify streamAdapter/betaStreamAdapter retry logic into generic retryableStream by @dgageot in #2018
  • Fix task deploy-local by @dgageot in #2024
  • fix: default sound notifications to off (opt-in) by @dgageot in #2025
  • feat: add per-toolset model routing via model field on toolsets by @dgageot in #2015
  • refactor: use errors.AsType consistently instead of errors.As with pre-declared variables by @dgageot in #2028
  • tui: repaint terminal on focus to fix broken display after tab switch by @dgageot in #2026
  • Enable modernize and perfsprint linters, fix all findings by @dgageot in #2027
  • update Slack link in readme by @derekmisler in #2032
  • Replace json.MarshalIndent with json.Marshal in builtin tools by @dgageot in #2031
  • refactor(dmr): split client.go into focused files by concern by @dgageot in #2029
  • Fix last brew install cagent mention by @gtardif in #2034
  • tui: fix animated spinners inside terminal multiplexers by @dgageot in #2035
  • refactor(runtime): split monolithic runtime.go into focused files by @dgageot in #2030
  • feat: click to copy working directory in TUI sidebar by @dgageot in #2036
  • Use ResultSuccess/ResultError helpers in tasks and user_prompt tools by @dgageot in #2040
  • fix: move registerDefaultTools to constructor to prevent concurrent map writes by @dgageot in #2041
  • Fix sidebar context % flickering during sub-agent transfers by @dgageot in #2042
  • eval: reduce redundant work during evaluation runs by @dgageot in #2047
  • perf: optimize BM25 scoring strategy by @dgageot in #2043
  • refactor: remove duplication in model resolution, thinking budget, and message construction by @dgageot in #2038
  • feat: make background_agents a standalone toolset by @dgageot in #2033
  • todo: migrate tool output to structured JSON schemas by @dgageot in #2045

Full Changelog: v1.30.0...v1.30.1

v1.30.0

09 Mar 12:27
78c0a3c

Choose a tag to compare

This release introduces file drag-and-drop support, background agent tasks, and completes the transition from "cagent" to "docker-agent" branding throughout the codebase.

What's New

  • Adds file drag-and-drop support for images and PDFs with visual file type indicators and 5MB size limit per file
  • Adds background agent task tools (run_background_agent, list_background_agents, view_background_agent, stop_background_agent) for concurrent sub-agent dispatch
  • Adds --sandbox flag to run command for Docker sandbox isolation
  • Adds model_picker toolset for dynamic model switching between LLM models mid-conversation
  • Adds search, update, categories, and default path functionality to memory tool
  • Adds MiniMax as a built-in provider alias with MINIMAX_API_KEY support
  • Adds top-level mcps section for reusable MCP server definitions in agent configs
  • Adds support for OCI/catalog and URL references as sub-agents and handoffs

Improvements

  • Auto-continues max iterations in --yolo mode instead of prompting
  • Improves toolset error reporting to show specific toolset information
  • Improves user_prompt TUI dialog with title, free-form input, and navigation
  • Auto-pulls DMR models in non-interactive mode
  • Animates window title while working for tmux activity detection
  • Supports comma-separated string format for allowed-tools in skills

Bug Fixes

  • Fixes thread blocking when attachment file is deleted
  • Fixes max iterations handling in JSON output mode
  • Fixes text to speech on macOS
  • Fixes context window overflow with auto-recovery and proactive compaction
  • Fixes data races in Session Messages slice and test functions
  • Fixes SSE streaming by disabling automatic gzip compression
  • Applies ModifiedInput from pre-tool hooks to tool call arguments

Technical Changes

  • Completes rename from "cagent" to "docker-agent" throughout codebase, documentation, and repository URLs
  • Supports both DOCKER_AGENT_* and legacy CAGENT_* environment variables
  • Removes --exit-on-stdin-eof flag and ConnectRPC code
  • Adds timeouts to shutdown contexts to prevent goroutine leaks
  • Extracts TodoStorage interface with in-memory implementation
  • Refactors listener lifecycle to return cleanup functions
  • Updates Dockerfile to use docker-agent binary with cagent as compatible symlink

What's Changed

Read more

v1.29.0

03 Mar 21:24
5302781

Choose a tag to compare

This release adds automated issue triage capabilities and new CLI configuration options for directory overrides.

What's New

  • Adds auto issue triage workflow that automatically evaluates bug reports and can create fix PRs
  • Adds --config-dir, --data-dir, and --cache-dir global CLI flags to override default paths

Bug Fixes

  • Fixes result marker parsing in auto-issue-triage workflow to handle LLM output with trailing empty lines
  • Fixes GitHub Pages deployment issues

Technical Changes

  • Updates nightly scanner documentation and configuration
  • Removes draft status from PR creation workflow steps
  • Adds tip about the default agent in documentation

What's Changed

  • docs: update CHANGELOG.md for v1.28.1 by @docker-read-write[bot] in #1902
  • Fix the github pages? by @dgageot in #1903
  • Fix GitHub pages deployment by @dgageot in #1901
  • feat: add auto issue triage workflow by @derekmisler in #1888
  • Replace the brittle tail -n 1 parsing with something that searches for the marker by @derekmisler in #1905
  • Add tip about the default agent by @dgageot in #1906
  • Add --config-dir and --data-dir global CLI flags to override default paths by @dgageot in #1907

Full Changelog: v1.28.1...v1.29.0

v1.28.1

03 Mar 13:08
ed9f9f9

Choose a tag to compare

This release adds image support for AI agents, improves cross-platform compatibility, and includes various stability fixes.

What's New

  • Adds image support to read_file tool and MCP tool results, allowing agents to view and describe images
  • Adds content-based MIME detection and automatic image resizing for vision capabilities
  • Strips image content for text-only models using model capabilities detection

Improvements

  • Reduces builtin tool prompt lengths while preserving key examples for better performance
  • Skips hidden directories in recursive skill loading to avoid walking large trees like .git and .node_modules
  • Only uses insecure TLS for localhost OTLP endpoints for better security

Bug Fixes

  • Fixes Esc key not interrupting sub-agents in multi-agent sessions
  • Fixes slice bounds out of range panic for short JWT tokens
  • Fixes goroutine tight loop in LSP readNotifications
  • Fixes race condition with elicitation events channel
  • Avoids looping forever on symlinks during skill loading
  • Handles json.Marshal errors for tool Parameters and OutputSchema

Technical Changes

  • Replaces syscall.Rmdir with golang.org/x/sys for cross-platform directory removal
  • Removes per-chunk UpdateMessage debug log from SQLite store to reduce log noise
  • Stops tool sets for team loaded in GetAgentToolCount
  • Migrates GitHub pages to markdown with Jekyll

What's Changed

  • docs: update CHANGELOG.md for v1.28.0 by @docker-read-write[bot] in #1892
  • Replace syscall.Rmdir with golang.org/x/sys for cross-platform directory removal by @rumpl in #1885
  • Remove per-chunk UpdateMessage debug log by @trungutt in #1896
  • Fixes to the documentation by @dgageot in #1893
  • Pushes docker/docker-agent next to docker/cagent hub image by @gtardif in #1897
  • Reduce builtin tool prompt lengths while preserving key examples by @dgageot in #1879
  • Daily fixes of the bot-detected issues by @dgageot in #1895
  • Skip hidden directories in recursive skill loading by @dgageot in #1875
  • 👀 Vision 👀 by @rumpl in #1889
  • Migrate our GitHub pages to markdown, with Jekyll by @dgageot in #1900
  • fix: Esc key not interrupting sub-agents in multi-agent sessions by @dgageot in #1899

Full Changelog: v1.28.0...v1.28.1

v1.28.0

03 Mar 08:29
796af82

Choose a tag to compare

This release improves authentication debugging, session management, and MCP server reliability, along with UI enhancements to the command palette.

What's New

  • Adds 'debug auth' command to inspect Docker Desktop JWT with optional JSON output
  • Adds automatic retry functionality for all models, including those without fallbacks

Improvements

  • Improves MCP server lifecycle with caching and auto-restart capabilities using exponential backoff
  • Sorts command palette actions alphabetically within each group
  • Uses tea.View.ProgressBar instead of raw escape codes for better display

Bug Fixes

  • Fixes session derailment by preserving user messages during conversation trimming
  • Fixes duplicate Session header in command palette on macOS
  • Fixes mcp/notion not working with OpenAI models by properly walking additionalProperties in schemas
  • Defaults to string type for script tool arguments when type is not specified

Technical Changes

  • Updates tool filtering documentation
  • Updates CHANGELOG.md for v1.27.1
  • Updates Charm libraries to stable v2.0.0 releases (bubbletea, bubbles, lipgloss)

What's Changed

  • docs: update CHANGELOG.md for v1.27.1 by @docker-read-write[bot] in #1862
  • Fix mcp/notion not working with OpenAI models by @vvoland in #1871
  • Fix script args with DMR by @dgageot in #1859
  • Add 'debug auth' command to inspect Docker Desktop JWT by @dgageot in #1861
  • Improve MCP server lifecycle: caching and auto-restart by @dgageot in #1872
  • fix(#1863): preserve user messages in trimMessages to prevent session derailment by @aheritier in #1864
  • Improve tool filtering doc by @dgageot in #1874
  • Improve Commands dialog by @dgageot in #1877
  • Bump dependencies by @dgageot in #1876
  • Add retries even for models without fallbacks by @rumpl in #1886

Full Changelog: v1.27.1...v1.28.0

v1.27.1

26 Feb 16:20
449e081

Choose a tag to compare

This release improves the user interface experience with better message editing capabilities and fixes several issues with token usage tracking and session loading.

What's New

  • Adds on_user_input hook that triggers when the agent is waiting for user input or tool confirmation

Improvements

  • Improves multi-line editing of past user messages
  • Adds clipboard paste support during inline message editing
  • Makes loading past sessions faster
  • Updates TUI display when the current agent changes

Bug Fixes

  • Fixes token usage being recorded multiple times per stream, preventing inflated telemetry counts
  • Fixes empty inline edit textarea expanding to full height
  • Fixes docker ai shellout to cagent for standalone invocations

Technical Changes

  • Updates schema tests to only run for latest version
  • Fixes documentation issues

What's Changed

New Contributors

Full Changelog: v1.27.0...v1.27.1