Skip to content

docker-agent

v1.89.0 Feature

This release adds 4 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agents ai

Summary

AI summary

Broad release touches Technical Changes, What's New, Bug Fixes, and feat.

Full changelog

This release brings significant new capabilities including a safety-check hook system, TUI improvements with retry support and new slash commands, expanded hook and config features, and a large number of internal quality improvements around context threading, linting, and test performance.

What's New

  • Adds usage and cost fields to the after_llm_call hook payload, exposing per-turn token usage and computed USD cost
  • Adds a triage-prs skill for triaging open pull requests
  • Adds a TUI e2e test harness (tuitest) with VCR cassette support, plus live/frame-dump debugging, mouse, and clipboard helpers
  • Adds a retry button to TUI error messages, allowing one-click recovery after agent turn failures
  • Adds key/value metadata field to tool-call confirmation events, rendered in the TUI confirmation dialog
  • Adds ${env.X} expansion support in toolset env values (in addition to the existing ${X} syntax)
  • Adds triage-prs skill for automated PR classification and triage
  • Adds fork suffix deduplication across sibling forks so parallel forks of the same parent get unique (fork N) suffixes
  • Adds tool-scoping for fork-mode skills via allowed_tools and toolsets frontmatter fields
  • Adds url field support in agent /commands config, opening a URL in the user's default browser instead of sending a prompt
  • Adds {{session_id}} expansion in URL commands
  • Persists agent failures as first-class Error session items so errors survive session reload and appear in the TUI
  • Adds instruction_file field to agent config for referencing external instruction files
  • Adds open_url built-in toolset for agents to open a configured URL in the user's default browser
  • Adds preempt_yolo flag on pre_tool_use hook entries and a safer_shell builtin that classifies shell commands and forces confirmation for destructive operations
  • Adds file-based plan revisions, free-form status field, and optimistic locking to the plan toolset, including new export_plan_to_file and update_plan_from_file tools
  • Embeds a models.dev catalog snapshot as a binary fallback for offline/air-gapped environments
  • Adds timing instrumentation to the model picker pipeline
  • Adds /feedback and /bug slash commands to the TUI
  • Adds WrapErrors lint cop to catch fmt.Errorf calls that discard error chains
  • Adds constructor side-effect lint cops preventing goroutines, command execution, and network I/O in constructors
  • Adds deferred mutex unlock lint cop and converts existing terminal unlocks to deferred form
  • Adds ContextConnectivity whole-program lint cop and threads context throughout the codebase
  • Builtin hooks now honor working_dir and env fields

Improvements

  • Returns 1,000,000-token context window for Claude Opus 4.6/4.7/4.8 families instead of the 200k fallback
  • Reuses a single warmed models.dev store across runtime, server, and embedded-chat paths instead of warming independently per session
  • Caps oversized tool result payloads (filesystem, shell, MCP, and A2A) at 2,000 lines / 50 KiB, saving the full output to a temp file
  • Removes redundant agent-switch and thinking-level toast notifications whose results are already visible in the UI
  • Speeds up Go test suite by ~37% with shared shims and offline fixtures

Bug Fixes

  • Fixes per-model attachment capability override so custom/aliased OpenAI-compatible providers (Ollama, xai, mistral, etc.) can declare image/PDF support when absent from models.dev
  • Fixes cycling thinking level in the lean TUI via Shift+Tab
  • Fixes ctrl+1ctrl+9 agent quick-switch shortcuts broken under the Kitty keyboard protocol
  • Fixes lock-state modifiers being incorrectly applied to ctrl+N agent switch
  • Fixes MCP OAuth token persistence in sandboxes by falling back to a file-backed keyring when the OS keyring is unavailable, using a per-install random passphrase
  • Fixes data races in scroll state and session store updates
  • Fixes suppression of re-emitted UserMessageEvent before StreamStarted on retry
  • Fixes ~ expansion to respect the HOME environment variable before falling back to os.UserHomeDir()
  • Fixes DMR model selection to prefer locally pulled models and surface actionable pull errors
  • Fixes recovery from corrupted partial model downloads (HTTP 416)
  • Fixes URL validation before handing URLs to the OS opener
  • Fixes context cancellation being passed to the browser opener (strips it before launch)
  • Fixes Tool.Metadata serialization to avoid duplicate/stale wire fields
  • Fixes session working directory usage in TUI so /shell opens in the worktree directory rather than the process CWD
  • Fixes context-cancelled errors being cached in the model picker
  • Fixes branching and cloning sessions that contain error items

Technical Changes

  • Freezes config schema v10 and starts v11 as latest
  • Parallelizes build-image CI job across native runners
  • Switches CI Task installation from source compilation to prebuilt binary (~51s → 1s)
  • Adds t.Parallel() to 1,216 eligible top-level tests across 165 files
  • Refactors Coordinator methods to be receiver-based, keeping package-level shims for compatibility
  • Extracts buildDefaultStore for testability and adds fallback-ordering tests
  • Extracts isClaudeOpus46To48 helper to deduplicate Opus matching logic
  • Threads context through Runtime interface methods, RAG helpers, DB setup, memory initialization, sound playback, and other call paths
  • Uses context.WithoutCancel for shutdown and flush paths
  • Resolves proxy allowlist at dial time and caches it at construction
  • Speeds up custom linters using new rubocop-go helpers

What's Changed

  • feat(skills): add triage-prs skill by @aheritier in https://github.com/docker/docker-agent/pull/3249
  • freeze config v10 and start v11 as latest by @dgageot in https://github.com/docker/docker-agent/pull/3248
  • fix: cycle thinking level in lean tui by @rumpl in https://github.com/docker/docker-agent/pull/3246
  • docs: update CHANGELOG.md for v1.88.1 by @docker-read-write[bot] in https://github.com/docker/docker-agent/pull/3251
  • feat: add TUI e2e test harness by @dgageot in https://github.com/docker/docker-agent/pull/3252
  • feat: add retry button to TUI error messages by @dgageot in https://github.com/docker/docker-agent/pull/3253
  • fix(providers): add per-model attachment capability override (#2741) by @Sayt-0 in https://github.com/docker/docker-agent/pull/3205
  • feat(server): bump fork suffix across sibling forks by @trungutt in https://github.com/docker/docker-agent/pull/3254
  • ci: parallelize build-image across native runners by @dgageot in https://github.com/docker/docker-agent/pull/3258
  • feat(config): accept ${env.X} in toolset env values (#2615) by @dgageot in https://github.com/docker/docker-agent/pull/3257
  • feat: support URL-opening /commands in agent config by @dgageot in https://github.com/docker/docker-agent/pull/3261
  • refactor(tui): remove redundant agent-switch and thinking-level toasts by @dgageot in https://github.com/docker/docker-agent/pull/3266
  • feat: return 1M context for Claude Opus 4.6/4.7/4.8 families by @dgageot in https://github.com/docker/docker-agent/pull/3267
  • feat: persist agent failures in the session by @dgageot in https://github.com/docker/docker-agent/pull/3259
  • feat: add tool-scoping for fork-mode skills by @dgageot in https://github.com/docker/docker-agent/pull/3260
  • fix(tui): restore ctrl+1..ctrl+9 agent quick-switch shortcuts by @dgageot in https://github.com/docker/docker-agent/pull/3265
  • fix: persist MCP OAuth tokens in sandboxes via file-backed keyring fallback (#3037) by @dgageot in https://github.com/docker/docker-agent/pull/3255
  • feat: add key/value metadata to tool-call confirmation events by @dgageot in https://github.com/docker/docker-agent/pull/3256
  • docs: document URL-opening /commands and clean up /feedback and /bug by @dgageot in https://github.com/docker/docker-agent/pull/3270
  • ci: install Task from prebuilt binary instead of compiling by @dgageot in https://github.com/docker/docker-agent/pull/3269
  • fix(dmr): prefer local models and surface actionable pull errors by @Sayt-0 in https://github.com/docker/docker-agent/pull/3268
  • feat(runtime): expose per-turn usage and cost in the after_llm_call hook payload by @kimizuka in https://github.com/docker/docker-agent/pull/2994
  • feat(config): support external instruction files via instruction_file by @Sayt-0 in https://github.com/docker/docker-agent/pull/3272
  • feat(plan): file-based revisions, free-form status, and optimistic locking by @Sayt-0 in https://github.com/docker/docker-agent/pull/3274
  • docs(runtime): document StreamStopped ordering and teardown trade-offs (#3074) by @Sayt-0 in https://github.com/docker/docker-agent/pull/3275
  • feat: add open_url built-in toolset by @dgageot in https://github.com/docker/docker-agent/pull/3276
  • Remove thinking cycle notice by @rumpl in https://github.com/docker/docker-agent/pull/3280
  • docs: document capabilities override and TUI error recovery by @aheritier in https://github.com/docker/docker-agent/pull/3283
  • feat: reuse warmed model store, add picker timing, and fix discovery error caching by @dgageot in https://github.com/docker/docker-agent/pull/3285
  • Add constructor side-effect lint cops by @dgageot in https://github.com/docker/docker-agent/pull/3289
  • fix: open /shell in the session working directory (e.g. --worktree) by @dgageot in https://github.com/docker/docker-agent/pull/3286
  • feat(modelsdev): embed models.dev catalog snapshot as binary fallback by @dgageot in https://github.com/docker/docker-agent/pull/3277
  • lint: add WrapErrors cop by @dgageot in https://github.com/docker/docker-agent/pull/3287
  • refactor: thread context throughout and enforce ContextConnectivity lint rule by @dgageot in https://github.com/docker/docker-agent/pull/3279
  • feat(hooks): cap oversized tool result payloads by @rumpl in https://github.com/docker/docker-agent/pull/3290
  • lint: enforce deferred mutex unlocks by @dgageot in https://github.com/docker/docker-agent/pull/3288
  • Faster lint by @dgageot in https://github.com/docker/docker-agent/pull/3293
  • test: speed up Go test suite by ~37% with shared shims and offline fixtures by @dgageot in https://github.com/docker/docker-agent/pull/3294
  • feat: builtin hooks now honor working_dir and env by @dgageot in https://github.com/docker/docker-agent/pull/3295
  • test: add t.Parallel() to eligible tests by @dgageot in https://github.com/docker/docker-agent/pull/3296
  • feat: safety_check hook + safer_shell builtin by @melmennaoui in https://github.com/docker/docker-agent/pull/3273
  • docs: replace stale safety_check references with preempt_yolo pre_tool_use by @dgageot in https://github.com/docker/docker-agent/pull/3297
  • refactor: receiver-based Coordinator and parallel provider tests by @dgageot in https://github.com/docker/docker-agent/pull/3299
  • fix(hooks): cap oversized mcp and a2a tool results by @Sayt-0 in https://github.com/docker/docker-agent/pull/3301
  • chore: bump direct Go dependencies by @dgageot in https://github.com/docker/docker-agent/pull/3300
  • fix: respect HOME env var when expanding ~ in paths by @Divyansh670 in https://github.com/docker/docker-agent/pull/3088

New Contributors

  • @melmennaoui made their first contribution in https://github.com/docker/docker-agent/pull/3273
  • @Divyansh670 made their first contribution in https://github.com/docker/docker-agent/pull/3088

Full Changelog: https://github.com/docker/docker-agent/compare/v1.88.1...v1.89.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track docker-agent

Get notified when new releases ship.

Sign up free

About docker-agent

AI Agent Builder and Runtime by Docker Engineering

All releases →

Related context

Earlier breaking changes

  • v1.71.0 Freezes configuration schema v9 and starts v10 as latest version

Beta — feedback welcome: [email protected]