Skip to content

Releases: docker/docker-agent

v1.93.0

Choose a tag to compare

@docker-read-write docker-read-write released this 30 Jun 18:02
11b008a

This release adds OpenRouter as a built-in provider, introduces per-model gateway bypass support, and allows a dedicated model for session compaction, alongside several internal refactoring improvements.

What's New

  • Adds OpenRouter as a first-class built-in provider; when OPENROUTER_API_KEY is set, the provider is auto-detected and its base URL resolved automatically
  • Adds a compaction_model field to allow a dedicated model for session summary generation, separate from the primary agent model
  • Adds a bypass_models_gateway boolean field on a per-model basis, allowing specific models to connect directly to their provider instead of routing through the configured models gateway

Technical Changes

  • Replaces mutex usage with atomic types (atomic.Bool, atomic.Pointer) for single mutable fields in several structs
  • Replaces package-level global variables with explicit parameters or struct fields to enable parallel-safe testing across several packages (toolinstall, runtime, mcp, notification, tui, cmd/root)
  • Adds a concurrency group to the PR review trigger CI workflow to prevent duplicate reviews for the same PR

What's Changed

  • docs: update CHANGELOG.md for v1.92.0 by @docker-read-write[bot] in #3331
  • refactor: replace single-variable mutexes with atomic types by @dgageot in #3330
  • ci: add concurrency group to pr-review-trigger to prevent duplicate reviews by @derekmisler in #3334
  • refactor: replace test-overridden globals with parallel-safe injection by @dgageot in #3332
  • feat(compaction): allow a dedicated model for session summary generation by @Sayt-0 in #3335
  • feat: add OpenRouter provider by @dgageot in #3337
  • feat: add per-model bypass_models_gateway option by @dgageot in #3338

Full Changelog: v1.92.0...v1.93.0

v1.92.0

Choose a tag to compare

@docker-read-write docker-read-write released this 30 Jun 15:31
63a2a2e

This release adds session context referencing and 1Password secret caching, fixes silent failures on empty/reasoning-only agent turns, and resolves environment variable substitution in model configuration fields.

What's New

  • Adds a session_context toolset with list_sessions and read_session tools, allowing agents to reference previous sessions as context
  • Adds WithRoot option to worktree creation to decouple from the global data directory
  • Caches op:// secret resolutions and coalesces concurrent lookups to avoid redundant op CLI invocations

Bug Fixes

  • Fixes silent failure when the runtime receives empty or reasoning-only turns; these are now surfaced instead of dropped
  • Fixes whitespace-only turns being treated as valid output, which could cause re-entry loops
  • Fixes ${env.X} references in model and base_url config fields not being substituted before being sent to providers
  • Fixes ${env.X} placeholders not being accepted in the base_url schema validation
  • Fixes empty agent responses on OpenAI-compatible providers caused by multiple consecutive system messages; consecutive system messages are now merged on the openai_chatcompletions path (scoped to openai_chatcompletions endpoints)
  • Fixes os.Chmod in Registry.Write breaking non-owner callers by making the permission tightening best-effort
  • Fixes a data race on the defaultRegistry pointer by switching to atomic.Pointer
  • Fixes ${env.VAR} not being normalized before os.ExpandEnv in filesystem path expansion
  • Fixes a transient failure when promoting a worktree directory under concurrency

Technical Changes

  • Extracts themeRegistry struct to eliminate global state and enable parallel-safe tests
  • Introduces Registry struct in runregistry to replace process-global directory state
  • Removes process-global clock and ID variables from pkg/session, moving them into per-session fields
  • Introduces Resolver type in userid and injects cagent ID source in httpclient for parallel-safe tests
  • Replaces package-level globals with dependency injection across multiple packages to enable parallel-safe tests
  • Enables t.Parallel() across ~337 test functions in the test suite
  • Makes ${env.X} the canonical variable-expansion syntax in documentation and example YAML files

What's Changed

  • docs: update CHANGELOG.md for v1.91.0 by @docker-read-write[bot] in #3314
  • refactor: introduce Resolver type in userid and inject cagent ID source in httpclient for parallel-safe tests by @dgageot in #3321
  • chore: bump direct Go dependencies by @dgageot in #3315
  • refactor: extract themeRegistry struct for parallel-safe tests by @dgageot in #3316
  • refactor(runregistry): introduce Registry struct and tighten dir permissions by @dgageot in #3317
  • feat(worktree): add WithRoot option to decouple from global data dir by @dgageot in #3318
  • feat(1password): cache op:// resolutions and coalesce concurrent lookups by @dgageot in #3322
  • fix: make chmod in Registry.Write best-effort to avoid breaking non-owner callers by @dgageot in #3323
  • fix: eliminate themeRegistry data race and TOCTOU window by @dgageot in #3324
  • refactor: remove process-global clock/ID vars from pkg/session by @dgageot in #3319
  • fix(config): substitute ${env.X} in model and base_url fields by @Sayt-0 in #3304
  • refactor: replace test-mutated globals with dependency injection by @dgageot in #3326
  • docs: make ${env.X} the canonical variable-expansion syntax (+ fixes) by @dgageot in #3325
  • test: enable t.Parallel() across the test suite by @dgageot in #3328
  • feat(session_context): reference previous sessions as context by @Sayt-0 in #3320
  • test: enable t.Parallel() in environment, config, and sessioncontext tests by @dgageot in #3329
  • fix(#3145): empty agent response from multiple system messages on OpenAI-compatible providers by @Sayt-0 in #3327

Full Changelog: v1.91.0...v1.92.0

v1.91.0

Choose a tag to compare

@docker-read-write docker-read-write released this 30 Jun 07:50
e07c94c

This release adds per-session markdown plan toolset support, extends instruction_file to accept multiple files, and includes several bug fixes and documentation updates.

What's New

  • Adds a session_plan toolset alongside the existing plan toolset, providing per-session markdown plan storage
  • Extends instruction_file to accept either a single string or a list of file paths, with contents concatenated when multiple paths are provided
  • Adds support for a title field in POST /api/sessions to skip LLM title generation when a title is supplied

Bug Fixes

  • Fixes a data race in stalledStream.Close by replacing an unguarded closed bool field with sync.Once
  • Fixes instruction_file to omit empty values and drop empty-string list entries

Technical Changes

  • Redesigns the TUI sidebar agents panel to use uniform two-line entries for all agents via a single renderAgentLine function
  • Computes badge column width once in agentInfo in the sidebar
  • Extracts a readInstructionFiles helper with deferred root.Close
  • Adds t.Parallel() to isolated unit tests across multiple packages
  • Corrects a stale doc comment and restores alignment assertion in effort_gauge_test
  • Updates documentation for limit_large_tool_results always-on builtin, the title field in POST /api/sessions, and model hook working_dir and env behaviour

What's Changed

  • docs: update CHANGELOG.md for v1.90.0 by @docker-read-write[bot] in #3308
  • feat(server): accept title in POST /api/sessions to skip LLM title generation by @zampani-docker in #3310
  • fix: data race in stalledStream.Close using sync.Once by @dgageot in #3312
  • test: enable t.Parallel() on isolated unit tests by @dgageot in #3311
  • chore: bump direct Go dependencies by @dgageot in #3309
  • refactor(sidebar): redesign agents panel to uniform two-line entries by @dgageot in #3307
  • docs: sync /docs with recent merged PRs by @aheritier in #3313
  • feat(session_plan): per-session markdown plan toolset alongside plan by @trungutt in #3305
  • feat: allow instruction_file to accept a list of files by @dgageot in #3306

Full Changelog: v1.90.0...v1.91.0

v1.90.0

Choose a tag to compare

@docker-read-write docker-read-write released this 29 Jun 17:31
9c68eb1

This release adds support for OpenCode Go and OpenCode Zen providers and improves error handling for stream truncation during model inference.

What's New

  • Adds OpenCode Go (opencode-go) and OpenCode Zen (opencode-zen) as built-in provider aliases, including automatic API key detection via OPENCODE_API_KEY

Bug Fixes

  • Fixes handling of stream truncation errors: retries when a stream is unexpectedly cut mid-response and clarifies the error message shown to users
  • Fixes error handling for mid-stream connection drops in truncation error reporting

What's Changed

  • fix(modelerrors): retry stream truncation and clarify the error (#3298) by @Sayt-0 in #3302
  • docs: update CHANGELOG.md for v1.89.0 by @docker-read-write[bot] in #3303
  • feat: add OpenCode Go and OpenCode Zen provider support by @jopsis in #3211

New Contributors

Full Changelog: v1.89.0...v1.90.0

v1.89.0

Choose a tag to compare

@docker-read-write docker-read-write released this 29 Jun 14:12
e6d4974

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 #3249
  • freeze config v10 and start v11 as latest by @dgageot in #3248
  • fix: cycle thinking level in lean tui by @rumpl in #3246
  • docs: update CHANGELOG.md for v1.88.1 by @docker-read-write[bot] in #3251
  • feat: add TUI e2e test harness by @dgageot in #3252
  • feat: add retry button to TUI error messages by @dgageot in #3253
  • fix(providers): add per-model attachment capability override (#2741) by @Sayt-0 in #3205
  • feat(server): bump fork suffix across sibling forks by @trungutt in #3254
  • ci: parallelize build-image across native runners by @dgageot in #3258
  • feat(config): accept ${env.X} in toolset env values (#2615) by @dgageot in #3257
  • feat: support URL-opening /commands in agent config by @dgageot in #3261
  • refactor(tui): remove redundant agent-switch and thinking-level toasts by @dgageot in #3266
  • feat: return 1M context for Claude Opus 4.6/4.7/4.8 families by @dgageot in #3267
  • feat: persist agent failures in the session by @dgageot in #3259
  • feat: add tool-scoping for fork-mode skills by @dgageot in #3260
  • fix(tui): restore ctrl+1..ctrl+9 agent quick-switch shortcuts by @dgageot in #3265
  • fix: persist MCP OAuth tokens in sandboxes via file-backed keyring fallback (#3037) by @dgageot in #3255
  • feat: add key/value metadata to tool-call confirmation events by @dgageot in #3256
  • docs: document URL-opening /commands and clean up /feedback and /bug by @dgageot in #3270
  • ci: install Task from prebuilt binary instead of compiling by @dgageot in #3269
  • fix(dmr): prefer local models and surface actionable pull errors by @Sayt-0 in #3268
  • feat(runtime): expose per-turn usage and cost in the after_llm_call hook payload by @kimizuka in #2994
  • feat(config): support external instruction files via instruction_file by @Sayt-0 in #3272
  • feat(plan): file-based revisions, free-form status, and optimistic locking by @Sayt-0 in #3274
  • docs(runtime): document StreamStopped ordering and teardown trade-offs (#3074) by @Sayt-0 in #3275
  • feat: add open_url built-in toolset by @dgageot in #3276
  • Remove thinking cycle notice by @rumpl in #3280
  • docs: document capabilities override and TUI error recovery by @aheritier in #3283
  • feat: reuse warmed model store, add picker timing, and fix discovery error caching by @dgageot in #3285
  • Add constructor side-effect lint cops by @dgageot in #3289
  • fix: open /shell in the session working directory (e.g. --worktree) by @dgageot in #3286
  • feat(modelsdev): embed models.dev catalog snapshot as binary fallback by @dgageot in #3277
  • lint: add WrapErrors cop by @dgageot in #3287
  • refactor: thread context throughout and enforce ContextConnectivity lint rule by @dgageot in #3279
  • feat(hooks): cap oversized tool result payloads by @rumpl in #3290
  • lint: enforce deferred mutex unlo...
Read more

v1.88.1

Choose a tag to compare

@docker-read-write docker-read-write released this 26 Jun 08:55
d5b9428

This release adds session forking by user-message ordinal and includes documentation updates for recently merged features.

What's New

  • Adds the ability to fork a session by user-message ordinal, allowing clients to target "the Nth user message" directly without translating to a flat message-stream index

Technical Changes

  • Bumps github.com/dgageot/rubocop-go to pull in a new whole-program, inter-procedural dataflow analysis engine and the Lint/ContextConnectivity cop
  • Updates documentation for the plan builtin toolset, the readonly attribute for toolsets and agents, and top-level shared toolsets with use_toolsets
  • Fixes tool ordering and list_plans description in plan docs; adds updatedAt to read_plan description

What's Changed

  • docs: update docs for features merged 2026-06-25 (plan toolset, readonly, shared toolsets) by @aheritier in #3244
  • docs: update CHANGELOG.md for v1.88.0 by @docker-read-write[bot] in #3245
  • chore: bump rubocop-go for whole-program context cop by @dgageot in #3247
  • feat(server): fork session by user-message ordinal by @trungutt in #3250

Full Changelog: v1.88.0...v1.88.1

v1.88.0

Choose a tag to compare

@docker-read-write docker-read-write released this 26 Jun 06:34
45bcbb2

This release overhauls the TUI with a redesigned Agents panel, Agent Inspector, configurable keybindings, and image rendering in the lean TUI, plus fixes for provider thinking-budget leaks and OTLP trace export compatibility.

What's New

  • Adds clearer thinking-state vocabulary in the TUI: effort gauge (6-cell), updated labels (adaptive→auto), and token budget display
  • Redesigns the TUI sidebar Agents panel with a focus card and compact roster layout
  • Adds a right-click Agent Inspector showing live and configured agent details
  • Labels the delegation spinner with parent → child for at-a-glance readability
  • Adds configurable keybindings via ~/.config/cagent/config.yaml, including remappable send/newline keys (resolves Ctrl+J conflict in VS Code and tmux)
  • Allows embedders to register custom tool renderers keyed by tool name or category, with built-in renderers as fallback
  • Adds a pluggable Storage interface to the plan toolset (parity with the todo toolset), with a default filesystem backend and per-instance construction
  • Appends OTLP signal path so trace export works with generic base-path backends such as Langfuse and LangSmith
  • Renders images in the lean TUI using the Kitty protocol and reuses existing tool call renderers

Bug Fixes

  • Fixes CloneWithOptions(..., WithNoThinking()) leaking the provider-level thinking_budget, which caused short-budget callers (e.g., session-title generation, summaries) to fail

What's Changed

  • docs: update CHANGELOG.md for v1.87.0 by @docker-read-write[bot] in #3236
  • feat(plan): add pluggable Storage interface (parity with todo toolset) by @Sayt-0 in #3239
  • fix(provider): WithNoThinking clone no longer leaks provider-level thinking_budget by @trungutt in #3238
  • Let embedders register custom tool renderers by @EronWright in #3202
  • feat(tui): live status + labeled spinner for delegation (#3101) by @aheritier in #3115
  • feat(tui): readable thinking state, redesigned Agents panel, and Agent Inspector by @aheritier in #3108
  • feat(tui): configurable keybindings (Shift+Enter / Ctrl+J newline alternative) by @Sayt-0 in #3204
  • feat(otel): append OTLP signal path so Langfuse and LangSmith work by @Sayt-0 in #3240
  • test(teamloader): wire test provider registry in agent config retention test by @aheritier in #3242
  • Lean TUI tool renderers by @rumpl in #3243

Full Changelog: v1.87.0...v1.88.0

v1.87.0

Choose a tag to compare

@docker-read-write docker-read-write released this 25 Jun 14:04
2c37d22

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 toolsets map to the config schema, allowing toolset definitions to be shared and referenced by name from any agent via a new use_toolsets field
  • Adds a plan builtin toolset that provides agents a shared, persistent scratchpad (write_plan, read_plan, and related tools) for multi-agent collaboration across turns
  • Adds a readonly boolean attribute to both Toolset and AgentConfig, 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 SessionID to ErrorEvent and session-aware constructors so isRootEvent correctly 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_token rejection now evicts and refreshes the token instead of burning all reconnect attempts and entering StateFailed
  • 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 BuildAuthorizationURL incorrectly 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 ScriptToolSet by sorting shellTools and tool.Args keys 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 interactivePromptsAllowed after it was renamed to InteractivePromptsAllowed

Technical Changes

  • Converts bug and feature GitHub issue templates from markdown to issue forms (.yml)
  • Makes registered theme precedence last-wins, using slices.Backward for 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

Full Changelog: v1.86.0...v1.87.0

v1.86.0

Choose a tag to compare

@docker-read-write docker-read-write released this 23 Jun 11:02
4bda7b3

This release adds comprehensive OpenTelemetry instrumentation following GenAI semantic conventions, exposes session forking over HTTP, and includes several bug fixes for model streaming, local model detection, and OAuth registration.

What's New

  • Adds end-to-end OpenTelemetry instrumentation across the runtime, including provider chat/embed/rerank spans, session and stream spans, MCP client/server and OAuth flows, A2A server, memory, RAG, evaluation, hook executor, and built-in tool internals — following GenAI semantic conventions
  • Adds structured status code classification for GenAI errors in telemetry
  • Exposes session forking over HTTP, allowing clients to branch a conversation from a specific point in history
  • Adds a hidden --pprof-addr flag (and CAGENT_PPROF_ADDR env var) to serve api that starts a Go pprof HTTP server at /debug/pprof/ when explicitly configured

Bug Fixes

  • Fixes OAuth Dynamic Client Registration to advertise both authorization_code and refresh_token grant types, resolving rejections from strict authorization servers
  • Fixes detection and use of locally-installed Docker Model Runner models, resolving "No model providers available" and "No models available" symptoms when local models are already pulled
  • Fixes permanently stalled docker-agent run sessions caused by blocking SSE stream reads with no idle timeout or context cancellation
  • Fixes fork validation and stops classifying fork errors by string matching; serializes fork read-modify-write and preserves safety-rail limits
  • Fixes toolset.start span kind attribute by correctly unwrapping the toolset wrapper

Technical Changes

  • Adds tool count attributes to session and MCP spans
  • Adds W3C traceparent injection for remote MCP requests
  • Migrates CI/CD references from docker/cagent-action to docker/docker-agent-action (v2.0.0)

What's Changed

  • docs: update CHANGELOG.md for v1.85.0 by @docker-read-write[bot] in #3194
  • fix: advertise refresh_token grant in OAuth DCR + add Miro MCP example by @aheritier in #3192
  • feat(otel): instrument runtime with GenAI semantic conventions by @tdabasinskas in #2620
  • feat(serve): add live pprof HTTP server to serve api command by @zampani-docker in #3201
  • chore: migrate cagent-action to docker-agent-action (v2.0.0) by @docker-agent in #3203
  • chore: bump go.yaml.in/yaml/v4 and modernc.org/sqlite by @dgageot in #3195
  • fix: add idle timeout and context cancellation to model stream reads by @aheritier in #3210
  • docs: update /docs for PRs merged 2026-06-22–23 by @aheritier in #3208
  • fix(dmr): detect and use locally-installed Docker Model Runner models by @Sayt-0 in #3206
  • feat(server): expose session forking over HTTP by @trungutt in #3199

New Contributors

Full Changelog: v1.85.0...v1.86.0

v1.85.0

Choose a tag to compare

@docker-read-write docker-read-write released this 22 Jun 07:54
545a37c

This release contains only a changelog documentation update for v1.84.0 with no user-facing changes.

Technical Changes

  • Updates CHANGELOG.md with release notes for v1.84.0

What's Changed

  • docs: update CHANGELOG.md for v1.84.0 by @docker-read-write[bot] in #3190

Full Changelog: v1.84.0...v1.85.0