Skip to content

Releases: docker/docker-agent

v1.103.0

Choose a tag to compare

@docker-read-write docker-read-write released this 09 Jul 12:00
f04193c

This release polishes the agent picker UI, adds context-usage gauge warning states, improves config handling, and expands sandbox template tooling.

What's New

  • Adds warning and compacting states to the context-usage gauge: color escalates (orange ≥75%, red ≥95%) as usage approaches the auto-compaction threshold, and displays "compacting…" while a compaction runs (applies to both the main TUI sidebar and lean TUI status line)
  • Installs the latest docker-mcp plugin in the sandbox template image so agents running in that environment have MCP tooling available out of the box
  • Adds a hint when a config key requires a newer schema version, guiding users to bump the top-level version field instead of seeing a generic "unknown key" error
  • Adds WithModelOptions passthrough in teamloader for provider-agnostic HTTP transport wrapping

Bug Fixes

  • Fixes config parsing failure when a hook event list is written as a single mapping instead of a sequence, which previously caused aliases and settings to be silently dropped

Technical Changes

  • Refactors agent picker status bars to use dialog.RenderHelpKeys, removing duplicated key-rendering logic
  • Extracts fitHelpPairs and adds regression tests for details help wrapping
  • Polishes agent picker visuals: more compact cards (height 7 → 5) and tightened layout
  • Simplifies the Dockerfile

What's Changed

  • docs: update CHANGELOG.md for v1.102.0 by @docker-read-write[bot] in #3541
  • docs: sync documentation with recent code changes by @aheritier in #3544
  • style(tui): polish agent picker layout, cards, and status bars by @dgageot in #3543
  • feat: install latest docker-mcp plugin in sbx template by @dgageot in #3545
  • fix(config): accept a single mapping for hook event lists by @Sayt-0 in #3546
  • feat(teamloader): add WithModelOptions passthrough for provider-agnostic HTTP transport wrapping by @simonferquel-clanker in #3549
  • feat(config): hint when a config key requires a newer schema version by @dgageot in #3550

Full Changelog: v1.102.0...v1.103.0

v1.102.0

Choose a tag to compare

@docker-read-write docker-read-write released this 08 Jul 17:25
07e4f9b

This release brings significant enhancements to the Kanban board (drag & drop, card management, shell access, sandbox fixes), a new ChatGPT provider, TUI layout customization, and numerous stability and usability fixes across the board, session management, and copy/paste experience.

What's New

  • Adds a chatgpt provider enabling sign-in with a ChatGPT Plus/Pro/Business account via docker agent setup, without requiring an OPENAI_API_KEY
  • Adds /custom slash command to open a layout customization dialog for sidebar position and section visibility, with live preview and persistent settings
  • Adds a Section spacing selector to the /custom layout dialog (Compact / Normal / Relaxed)
  • Adds warning and compacting states to the context-usage gauge, escalating color as usage approaches the compaction threshold and showing "compacting..." during compaction
  • Adds s shortcut on the board to open an interactive shell in the selected card's worktree
  • Adds digit keys 1–9 to move a board card directly to a numbered column, and adds mouse drag & drop to reposition cards
  • Adds drag ghost preview showing where a dragged card will be inserted in the drop-target column
  • Adds intermediate startup statuses (startingloadingattaching) on board cards to show boot progress
  • Adds project editing and reordering on the board: press e or Enter on a project to rename it, with confirm-delete for destructive removals
  • Adds desktop notifications with hooks tip to the documentation, covering macOS and Linux examples for on_user_input and stop events

Improvements

  • Aligns TUI board card colors with the web board's status palette; starting/loading/attaching render in blue, running in green, and paused in a neutral color
  • Fades the dragged card immediately on the first mouse motion during a drag, providing instant visual feedback
  • Clarifies the dirty-worktree removal prompt by listing the consequences of y and N on separate lines before asking the question
  • Improves command categories in the help output
  • Documents env vars needed for notify-send hooks in detached sessions (SSH, tmux, containers)

Bug Fixes

  • Fixes board agent startup failures being silently discarded, leaving cards stuck in "starting" forever; failures are now surfaced on the card
  • Fixes board control-plane sockets being placed inside the data dir, which prevented cards from starting in Docker sandboxes; sockets are now placed in the system temp dir
  • Fixes board storing absolute paths that broke shared state in sandboxes; paths are now stored home-relative
  • Fixes board not forwarding --config-dir, --data-dir, and --cache-dir overrides to spawned agents
  • Fixes board path expansion, state load, and git repo check edge cases
  • Fixes stale drag state and ignores wheel events mid-drag on the board
  • Fixes a race condition where RunSession/recallSession clobbered the attached runtime's cancel, causing DeleteSession to abort in-flight streams incorrectly
  • Fixes session DB being reset on transient open errors (e.g. Ctrl-C, SQLITE_BUSY), which could silently wipe access to all past sessions
  • Fixes SQLite memory database opening before acquiring the advisory file lock, causing SQLITE_BUSY races under concurrent access
  • Fixes TUI selection copy being unreliable (random one-word copies, trailing padding, UI glyphs in clipboard) and improves copy button affordances
  • Fixes redundant copy toast appearing alongside the inline "copied" flash when clicking a copy button
  • Fixes emphasized text (e.g. "Esc to interrupt") being invisible on light themes due to incorrect color mapping
  • Fixes global config file management: resolves a TUI panic on malformed config and several silent data-loss paths in the load/save cycle
  • Fixes DNS resolution happening at construction time in NewSSRFSafeTransport, which could slow agent startup or fail silently when DNS is unavailable
  • Fixes board reporting why a relaunch failed when attaching to an errored card, and drops per-card controller state without racing in-flight relaunches
  • Fixes docs table of contents sidebar overlapping the footer on long pages by switching from position:fixed to position:sticky

Technical Changes

  • Renames $BOARD_EDITOR environment variable to $DOCKER_AGENT_BOARD_EDITOR; the old name is kept as a fallback for one release
  • Folds the ChatGPT sign-in flow into docker agent setup rather than a separate command
  • Removes the agent catalog example from documentation
  • Adds a lint rule flagging DNS resolution (net.Lookup* / Resolver.Lookup*) in constructors

What's Changed

  • docs: update CHANGELOG.md for v1.101.0 by @docker-read-write[bot] in #3506
  • chore: bump direct Go dependencies by @dgageot in #3507
  • fix(board): surface agent startup failures instead of silently doing nothing by @dgageot in #3508
  • feat(tui): add /custom command to customize layout by @Sayt-0 in #3509
  • fix(board): store paths home-relative so shared state works in sandboxes by @dgageot in #3510
  • chore(board): rename $BOARD_EDITOR to $DOCKER_AGENT_BOARD_EDITOR by @dgageot in #3514
  • feat(board): edit, reorder, and confirm-delete projects by @dgageot in #3513
  • fix(board): run agent control-plane sockets outside the data dir so cards start in docker sandboxes by @dgageot in #3515
  • feat(board): show intermediate startup statuses on cards by @dgageot in #3516
  • feat(board): add s shortcut to open a shell in the card's worktree by @dgageot in #3517
  • fix(board): forward directory overrides to spawned agents by @dgageot in #3518
  • fix(board): clarify dirty-worktree removal prompt with explicit consequences by @dgageot in #3520
  • feat(board): align TUI card colors with web board status palette by @dgageot in #3521
  • feat(board): move cards to any column with digit keys and drag & drop by @dgageot in #3522
  • docs: sync documentation with recent main merges by @aheritier in #3519
  • Improve the command categories by @dgageot in #3523
  • feat(board): fade dragged card immediately and fix stale drag state by @dgageot in #3524
  • fix: don't clobber attached runtime's cancel in RunSession/recallSession by @dgageot in #3525
  • docs: add desktop notifications with hooks tip by @dgageot in #3526
  • feat(provider): add chatgpt provider with ChatGPT account sign-in by @Sayt-0 in #3512
  • fix(docs): switch .toc-aside from position:fixed to sticky in flex .main row by @dgageot in #3527
  • fix(userconfig): harden global config file management by @Sayt-0 in #3529
  • fix(tui): unreadable emphasized text on light themes by @Sayt-0 in #3530
  • docs: document env vars for notify-send hooks in detached sessions by @Sayt-0 in #3531
  • feat(board): preview the dragged card at its insertion point by @dgageot in #3532
  • feat(tui): add section spacing setting to /custom layout dialog by @Sayt-0 in #3533
  • fix(session): don't reset the session DB on transient open errors by @dgageot in #3534
  • fix(tui): make selection copy reliable and improve copy affordances by @Sayt-0 in #3535
  • fix(memory): open sqlite db under file lock to avoid SQLITE_BUSY races by @dgageot in #3538
  • feat(tui): add warning/compacting states to the context-usage gauge by @Sayt-0 in #3537
  • fix(tui): drop the redundant copy toast when the inline "copied" flash shows by @dgageot in #3539
  • fix(ssrf): avoid DNS resolution at construction time in NewSSRFSafeTransport by @dgageot in #3540

Full Changelog: v1.101.0...v1.102.0

v1.101.0

Choose a tag to compare

@docker-read-write docker-read-write released this 07 Jul 11:43
8e79067

This release adds a setup wizard for first-time model configuration, an opt-in auto theme that follows the terminal's light/dark background, and several usability and bug fixes.

What's New

  • Adds an Open Board button (and b keybinding) to the agent picker, allowing users to launch the Kanban board directly without first running an agent
  • Adds a docker agent setup wizard, offered when no usable model is configured, guiding users through setting up a cloud API key or pulling a local model
  • Adds secret stores and a default config environment file source for environment configuration
  • Adds an opt-in auto theme that follows the terminal's light/dark background at startup and live (via settings.theme: auto, --theme auto, or the /theme menu)
  • Exports Pull for pre-confirmed model pulls in the Docker Model Runner integration

Bug Fixes

  • Fixes the agent picker's board button hit-zone math and improves layout on narrow terminals
  • Fixes --session-db default so it correctly resolves relative to --data-dir, making sessions stored under a custom data directory visible
  • Fixes the theme file watcher that was lost in the tab-view rewrite, restoring live hot-reload of ~/.cagent/themes/*.yaml while the TUI is running

Technical Changes

  • Adds a "Set Up a Model" getting-started tutorial covering both API key and local model setup paths
  • Adds session DB wiring tests and documentation follow-ups for the setup wizard

What's Changed

  • docs: update CHANGELOG.md for v1.100.0 by @docker-read-write[bot] in #3497
  • feat(picker): add Open Board button to the agent picker by @dgageot in #3498
  • feat(cli): add docker agent setup wizard, offered when no model is usable (phase 3 of #3442) by @Sayt-0 in #3499
  • docs(getting-started): add Set Up a Model tutorial for API key and local paths by @Sayt-0 in #3502
  • fix(cli): resolve session DB default against the data dir by @dgageot in #3503
  • feat(tui): opt-in "auto" theme that follows the terminal light/dark background by @Sayt-0 in #3504
  • fix(tui): rewire theme watcher lost in tab-view rewrite by @Sayt-0 in #3505

Full Changelog: v1.100.0...v1.101.0

v1.100.0

Choose a tag to compare

@docker-read-write docker-read-write released this 07 Jul 09:18
065cf54

This release adds new diagnostic and configuration capabilities, hardens the board communication protocol, and improves error messaging for missing models and credentials.

What's New

  • Adds docker agent doctor command for diagnosing model provider credentials and agent readiness
  • Adds actionable errors when models or credentials are missing, with guidance on next steps
  • Adds hooks.d drop-in directory (<config-dir>/hooks.d/*.yaml) and DOCKER_AGENT_CONFIG_DIR environment variable override for config directory
  • Adds heartbeat idle watchdog to abort hung event streams in docker agent board
  • Adds session aggregate cost reporting to GET /snapshot
  • Adds machine-readable error codes to 404 responses for unknown session snapshots
  • Adds heartbeat keepalives to idle /events SSE streams

Bug Fixes

  • Fixes turn-boundary events being silently dropped when a subscriber's buffer overflows

Technical Changes

  • Extracts lean TUI engine into a separate package and reorganizes UI components (status models, inline images, tool views, transcript, screen model) into a dedicated UI layer
  • Adds documentation for docker agent board CLI reference and actionable model/credential errors in troubleshooting guide
  • Adds tmux usage guidance for running docker agent board in a sandbox environment

What's Changed

  • docs: update CHANGELOG.md for v1.99.0 by @docker-read-write[bot] in #3487
  • feat(cli): actionable errors for missing models and credentials (phase 1 of #3442) by @Sayt-0 in #3452
  • feat(cli): add docker agent doctor for model and credential diagnosis by @Sayt-0 in #3489
  • Lean tui UI split by @rumpl in #3492
  • feat: harden control-plane protocol for reliable board communication by @dgageot in #3491
  • docs: update CLI reference and troubleshooting for board and actionable errors by @aheritier in #3494
  • Add tmux or running docker agent board in sbx by @dgageot in #3495
  • feat: hooks.d drop-in directory and config-dir env override by @Sayt-0 in #3496

Full Changelog: v1.99.0...v1.100.0

v1.99.0

Choose a tag to compare

@docker-read-write docker-read-write released this 06 Jul 15:09
cfe64ae

This release adds significant new capabilities including a Kanban board TUI, NVIDIA provider support, parallel tool dispatch, and numerous compaction and context-window improvements, along with several important bug fixes.

What's New

  • Adds docker agent board, a full-screen Kanban TUI for orchestrating multiple agents across pipeline stages (Dev → Review → Push → Done), each on an isolated git worktree
  • Adds NVIDIA (NIM / build.nvidia.com) as a supported model provider via a new nvidia alias
  • Adds /context slash command with a categorized context-window breakdown dialog, including a stacked usage bar and copy-to-clipboard action
  • Adds the ability to list and drop attached files directly from the /context dialog
  • Adds wait_background_job tool to the shell toolset, blocking until a background job finishes instead of requiring polling
  • Adds shell background job recall, routing completed job output back to active or idle sessions
  • Splits background jobs into a separate background_jobs toolset, leaving the shell toolset with only synchronous shell tools
  • Adds unix:// URL support in the remote MCP client for connecting over Unix domain sockets
  • Adds a Lean Mode checkbox to the agent picker (--agent-picker), toggled with l or mouse click
  • Adds compaction_threshold as a configurable key per agent (and per model), replacing the previously hardcoded 0.9 constant
  • Adds per-sub-agent context accounting in the TUI sidebar and agent inspector
  • Runs tool dispatcher calls in parallel, serializing only interactive confirmations
  • Extends the HCL file() function with an optional variables argument to render the file as a template
  • Groups the /sessions browser by current workspace instead of showing a flat global list

Improvements

  • Reconciles the compaction token estimator with provider-reported usage, using exact counts where available and a session-calibrated correction for unreported content
  • Wraps lean TUI tool calls in a padded themed box for improved rendering
  • Supports steering (sending messages while the agent is running) in the lean TUI, with pending messages displayed in muted styling

Bug Fixes

  • Fixes compaction replacing session history with a stale reply when the summarization model returns an empty response
  • Fixes compaction outcome reporting to accurately reflect applied/skipped/failed status on the completed event
  • Fixes whitespace-only compaction summaries being applied instead of treated as a no-op
  • Fixes --yolo flag not being applied correctly on session resume, causing safer_shell to prompt despite the flag
  • Fixes Gemini models failing with MCP tools that declare non-string enum values in their JSON schemas
  • Fixes session Message.AgentName silently dropping on load when reading files using the legacy agentName JSON key
  • Fixes database migration rollback errors being silently swallowed
  • Removes Anthropic Files API usage
  • Updates stale Anthropic model IDs in examples to current IDs

Technical Changes

  • Standardizes agent_name JSON tag on Message.AgentName, replacing the previous agentName camelCase tag
  • Shares git-branch detection logic between the lean and full TUIs via a new pkg/gitbranch package
  • Refactors lean TUI model into cohesive subsystems (usage/tool trackers, transcript type) with no functional change
  • Replaces context-smuggled emitters with an explicit tools.Runtime handle in the tool dispatcher

What's Changed

  • docs: update CHANGELOG.md for v1.98.0 by @docker-read-write[bot] in #3445
  • feat(tui): group /sessions browser by current workspace by @Sayt-0 in #3446
  • docs: point rel=canonical at the docs.docker.com mirrored pages by @Sayt-0 in #3447
  • feat(config): make the auto-compaction threshold configurable (compaction_threshold) by @Sayt-0 in #3448
  • feat(compaction): reconcile token estimator with provider-reported usage by @Sayt-0 in #3449
  • feat(mcp/remote): support unix:// URLs in remote MCP client by @maxcleme in #3453
  • ci: build and publish docker-agent sandbox templates by @dgageot in #3454
  • feat(tui): add /context command with a categorized context-window breakdown by @Sayt-0 in #3458
  • refactor(leantui): decompose the model into cohesive subsystems by @rumpl in #3455
  • refactor: share git-branch detection between the lean and full TUIs by @rumpl in #3457
  • fix: box lean TUI tool calls by @rumpl in #3460
  • fix: remove Anthropic Files API usage by @rumpl in #3466
  • feat(hcl): render file() as a template when given variables by @rumpl in #3464
  • feat(shell): add wait_background_job tool by @simonferquel-clanker in #3463
  • docs: sync documentation with recent changes by @aheritier in #3468
  • feat: run tool dispatcher calls in parallel by @rumpl in #3467
  • feat: add shell background job recall by @rumpl in #3461
  • feat: add NVIDIA provider as supported model provider by @Priyanshu-sde in #3421
  • fix: support steering in lean TUI by @rumpl in #3474
  • Tweak the golang dev by @rumpl in #3472
  • Split background jobs into separate toolset by @rumpl in #3473
  • docs: document lean TUI steering support by @aheritier in #3475
  • feat(tui): list and drop attached files from the /context dialog by @Sayt-0 in #3465
  • docs: switch github.io site from Jekyll to Hugo by @Sayt-0 in #3459
  • feat: add docker agent board, a Kanban TUI for orchestrating agents by @dgageot in #3451
  • fix: update stale Anthropic model IDs in examples by @dgageot in #3480
  • chore: bump direct Go dependencies by @dgageot in #3481
  • fix: backfill SafetyPolicy on session resume with --yolo by @melmennaoui in #3482
  • chore: standardize agent_name JSON tag in Message struct by @Piyush0049 in #3471
  • fix: handle tx.Rollback error in database migrations by @Piyush0049 in #3476
  • fix: compaction data loss on empty summary + honest compaction outcome reporting by @dgageot in #3470
  • fix(session): accept legacy agentName JSON key when unmarshaling Message by @dgageot in #3483
  • fix(gemini): stringify non-string enum values in tool schemas by @Sayt-0 in #3485
  • feat(tui): per-sub-agent context accounting in the TUI by @Sayt-0 in #3486

New Contributors

Full Changelog: v1.98.0...v1.99.0

v1.98.0

Choose a tag to compare

@docker-read-write docker-read-write released this 03 Jul 12:32
9cd759f

This release adds several new TUI features including an interactive getting-started tour, an effort picker dialog, and Lean Mode support in the agent picker, along with stability fixes for startup, shutdown, and proxy recovery.

What's New

  • Adds an interactive getting-started tour offered on first run and replayable on demand, implemented as a floating card that observes the real UI's message stream
  • Opens an effort picker dialog when /effort is used with no argument, instead of printing a usage hint
  • Adds a Lean Mode checkbox to the agent picker panel, toggleable with the l key or mouse click
  • Agent picker now discovers ~/.agents config files (.yaml, .yml, .hcl) when no explicit list is given, in addition to the built-in default and coder agents
  • Adds cross-process locking and atomic writes for SQLite memory storage

Bug Fixes

  • Fixes toolset Start during startup so the sidebar tools spinner can no longer animate forever when Docker is wedged
  • Fixes TUI exit being blocked by a wedged resource cleanup
  • Fixes --record proxy bypassing the configured models gateway, which caused HTTP 401 errors when gateway-managed credentials were expected
  • Hardens gateway forwarding in record mode against credential leakage
  • Fixes proxy recovery after cooldown — previously a socket error would permanently latch the transport to direct connections for the lifetime of the process
  • Fixes /tools dialog showing Go type names (e.g. *skills.ToolSet) instead of human-readable names for loader-created toolsets
  • Fixes telemetry incorrectly recording an error on a chat span after a successful LLM completion
  • Fixes agent picker hardening: windowing, escapes, FIFO skip, sentinel, and description guard
  • Keeps agent picker panel geometry stable and windowing math in sync

Technical Changes

  • Fixes flaky frame synchronization in TUI test driver sendSync
  • Fixes file descriptor double-close corrupting parallel tests in TestListen_FD
  • Guards fdOwnershipPin with a mutex to fix a data race in server tests
  • Trims comments in the fallback transport

What's Changed

  • test: fix flaky tuitest frame sync and TestListen_FD fd double-close by @dgageot in #3420
  • fix: bound toolset startup and never block the TUI exit when Docker is wedged by @dgageot in #3423
  • docs: update CHANGELOG.md for v1.97.0 by @docker-read-write[bot] in #3424
  • feat(tui): open effort picker when /effort has no argument by @Sayt-0 in #3425
  • fix: route --record proxy through the configured models gateway by @dgageot in #3428
  • docs: sync documentation with recent merges by @aheritier in #3430
  • feat(tui): interactive getting-started tour on first run, replayable on demand by @Sayt-0 in #3427
  • fix: show proper toolset names in /tools dialog for loader-created toolsets by @dgageot in #3441
  • feat(memory): add cross-process locking and atomic writes for sqlite by @yunasora in #3114
  • fix(remote): recover proxy after cooldown instead of latching to direct by @trungutt in #3431
  • telemetry: don't record error on chat span after successful LLM completion by @jedp-docker in #3281
  • feat(picker): add Lean Mode checkbox to agent picker by @dgageot in #3443
  • feat: agent picker discovers ~/.agents configs when no list is given by @dgageot in #3444

New Contributors

Full Changelog: v1.97.0...v1.98.0

v1.97.0

Choose a tag to compare

@docker-read-write docker-read-write released this 02 Jul 16:35
cf30a47

This release adds global hook support in user config, expands environment variable references in hook and script-shell fields, and fixes hook field merging.

What's New

  • Adds support for global hooks in user config (~/.config/cagent/config.yaml), with hooks merged in order: agent config → global → CLI
  • Adds ${env.X} expansion in hook and script-shell working_dir and env fields, giving them the same treatment as other working_dir fields

Bug Fixes

  • Fixes hook field merging so all HooksConfig fields are combined correctly when merging config and CLI hooks
  • Fixes unset ${env.X} references to log at debug level instead of silently failing; config env now takes precedence over host env

Technical Changes

  • Fixes flaky TestAttachedServer_DeleteEmitsSessionExited test caused by a race between session deletion and event log subscription

What's Changed

  • docs: update CHANGELOG.md for v1.96.0 by @docker-read-write[bot] in #3417
  • test: fix flaky TestAttachedServer_DeleteEmitsSessionExited by @dgageot in #3418
  • feat(config): expand ${env.X} in hook and script-shell working_dir/env by @dgageot in #3416
  • fix: merge all hook fields by @rumpl in #3419
  • feat: support global hooks in user config by @rumpl in #3422

Full Changelog: v1.96.0...v1.97.0

v1.96.0

Choose a tag to compare

@docker-read-write docker-read-write released this 02 Jul 13:12
002fe90

This release adds session resumption across agent URL changes, TUI e2e test generation from recorded sessions, and fixes for duplicate tool names and Anthropic adaptive thinking display.

What's New

  • Adds ability to resume sessions across agent URL query changes when using docker-agent serve api (e.g. when relaunching with a different agent version tag)
  • Adds TUI e2e test generation from --record sessions, producing a ready-to-edit *_test.go file alongside the cassette with synchronization points derived from the recorded session
  • Adds a Docker Wiki example agent with /init, /update, /status, and /help commands

Bug Fixes

  • Fixes duplicate tool names being sent to providers by deduplicating in collectTools() — the first toolset wins and a warning is shown once per streak naming the conflicting toolsets (fixes Anthropic HTTP 400 "Tool names must be unique" errors)
  • Fixes missing reasoning display in the TUI when using /effort or Shift+Tab thinking cycle on newer Claude models (Opus 4.7+) — the adaptive display field is now sent by default even when provider_opts.thinking_display is not explicitly configured

What's Changed

  • docs: update CHANGELOG.md for v1.94.0 by @docker-read-write[bot] in #3406
  • docs: update CHANGELOG.md for v1.95.0 by @docker-read-write[bot] in #3407
  • docs: add docker wiki example agent by @rumpl in #3408
  • feat(server): resume sessions across agent URL query changes by @gtardif in #3410
  • fix(agent): dedupe duplicate tool names with once-per-streak warning by @Sayt-0 in #3409
  • feat(tui): generate a TUI e2e test from a --record session by @dgageot in #3412
  • docs: single-source documentation for the docs.docker.com Hugo module mount by @Sayt-0 in #3413
  • fix(anthropic): default adaptive thinking display to summarized by @Sayt-0 in #3415
  • docs: prepare pages for the docs.docker.com module mount by @Sayt-0 in #3414

Full Changelog: v1.95.0...v1.96.0

v1.95.0

Choose a tag to compare

@docker-read-write docker-read-write released this 02 Jul 09:19
f03bf88

This release focuses on TUI rendering performance improvements for long conversations, along with a bug fix for test reliability and a configuration version update.

Improvements

  • Memoizes scrollbar rendering across frames to reduce redundant computation during TUI redraws
  • Memoizes content line widths in the scroll view to avoid recalculating unchanged values each frame
  • Replaces lipgloss.JoinHorizontal with direct column zipping for scrollbar rendering, reducing allocations per frame

Bug Fixes

  • Fixes restyled lines incorrectly using cached widths instead of re-measuring after style changes
  • Fixes flaky renderer-registry tests that were racing on a shared global registry

Technical Changes

  • Freezes config v11 and promotes v12 as the latest configuration version

What's Changed

  • chore: bump direct Go dependencies by @dgageot in #3405
  • freeze config v11 and start v12 as latest by @dgageot in #3401
  • perf(tui): memoize rendering hot paths for long conversations by @dgageot in #3404

Full Changelog: v1.94.0...v1.95.0

v1.94.0

Choose a tag to compare

@docker-read-write docker-read-write released this 02 Jul 09:08
3949d8a

This release significantly expands model provider support with 12 new built-in providers, adds mouse support and new commands to the TUI, introduces a SafetyPolicy primitive, and includes numerous bug fixes and performance improvements.

What's New

  • Adds Baseten as a built-in model provider (provider: baseten)
  • Adds OVHcloud AI Endpoints as a built-in model provider (provider: ovhcloud)
  • Adds Groq as a built-in model provider (provider: groq)
  • Adds DeepSeek as a built-in model provider (provider: deepseek)
  • Adds Cerebras as a built-in model provider (provider: cerebras)
  • Adds Fireworks AI as a built-in model provider (provider: fireworks)
  • Adds Together AI as a built-in model provider (provider: together)
  • Adds Hugging Face Inference Providers as a built-in model provider (provider: huggingface)
  • Adds Moonshot AI (Kimi) as a built-in model provider (provider: moonshot)
  • Adds Vercel AI Gateway as a built-in model provider (provider: vercel)
  • Adds Cloudflare Workers AI and Cloudflare AI Gateway as built-in model providers
  • Adds mouse support to the agent picker: hover highlights a card, single click selects it, double-click immediately starts the session, and scroll wheel navigates the YAML details panel
  • Adds metadata tags field to agent config and surfaces tags as coloured chips in the agent picker
  • Adds /effort slash command to select the model's reasoning level directly (available in both full and lean TUI)
  • Adds SafetyPolicy primitive (unsafe/safer/strict) to sessions, forwarded to hooks via hooks.Input.SafetyPolicy
  • Enforces lifecycle.startup_timeout for MCP/LSP toolset startup, which was previously parsed but never acted on
  • Adapts safer_shell hook classification to the session SafetyPolicy
  • Collapses file picker keyboard shortcuts to a single line on wide dialogs
  • Strengthens default memory toolset instructions

Improvements

  • Memoizes successful OCI config reads per process, halving warm startup latency for OCI agent refs
  • Suppresses spurious empty-response warning for benign post-tool stops in forked-skill sub-sessions
  • Agent picker dialog is larger and truncates long lines instead of wrapping; cards are 70 columns wide

Bug Fixes

  • Fixes coalescing of system messages for self-hosted and OpenAI-compatible endpoints that reject multiple system messages (e.g. vLLM with Qwen)
  • Fixes OVHcloud default model to Qwen3.5-397B-A17B
  • Fixes macOS Option-key characters not triggering file picker alt+h/alt+i visibility toggles
  • Removes duplicate "Initializing MCP servers…" spinner from the sidebar that fired on every turn even for agents with no MCP servers
  • Adds 5-second timeout to graceful-shutdown calls that previously used WithoutCancel without a deadline, preventing indefinite blocking
  • Fixes concurrent Connect races and goroutine leak on startup timeout for MCP/LSP toolsets
  • Fixes auto-deny of tool asks in non-interactive sessions instead of blocking indefinitely
  • Fixes tool-call confirmations being dropped without a Resume under --yolo in JSON mode
  • Fixes Anthropic provider falling back to token thinking for effort levels on models without adaptive thinking support (e.g. Haiku 4.5)
  • Fixes tool call render briefly disappearing or shrinking while JSON arguments are still streaming in the lean TUI
  • Clamps max_tokens to the context window for OpenAI-compatible providers to prevent "context window exceeded" errors on self-hosted vLLM
  • Fixes cost and context limit display in the lean TUI

Technical Changes

  • Derives provider API-key env vars forwarded to eval containers from the provider registry instead of a hard-coded list
  • Refactors provider client boilerplate into shared helpers across openai, anthropic, gemini, bedrock, and dmr clients
  • Consolidates OpenAI-compatible alias provider tests into a single shared test
  • Extracts shared calleeObject helper in lint cops to remove duplication
  • Adds OTelTracerName lint cop to enforce scoped OpenTelemetry tracer names
  • Replaces 44 time.Sleep calls in the test suite with deterministic synchronization primitives

What's Changed

  • docs: update CHANGELOG.md for v1.93.0 by @docker-read-write[bot] in #3339
  • docs: sync documentation with recent main merges by @aheritier in #3340
  • feat: add Baseten provider support by @dgageot in #3341
  • feat: add OVHcloud AI Endpoints provider support by @aheritier in #3343
  • chore: bump github.com/anthropics/anthropic-sdk-go to v1.55.0 by @dgageot in #3345
  • feat: add Groq as a supported model provider by @Sayt-0 in #3358
  • fix(openai): coalesce system messages for self-hosted and open-model endpoints by @Sayt-0 in #3357
  • feat: add DeepSeek as a supported model provider by @Sayt-0 in #3361
  • docs: group and collapse left navigation sections by @aheritier in #3360
  • docs: list providers alphabetically by name in nav by @aheritier in #3364
  • fix(docs): restore inline code contrast in light mode by @aheritier in #3365
  • feat: collapse file picker shortcuts to one line on wide dialogs by @dgageot in #3366
  • fix(tui): remove duplicate MCP-init spinner from sidebar by @dgageot in #3367
  • fix: add 5s timeout to graceful-shutdown calls that used WithoutCancel by @dgageot in #3370
  • feat: add Cerebras as a supported model provider by @Sayt-0 in #3368
  • fix(tui): accept macOS Option-key chars for file picker toggles by @Sayt-0 in #3333
  • feat: add Fireworks AI as a supported model provider by @Sayt-0 in #3369
  • test: consolidate OpenAI-compatible alias provider tests by @dgageot in #3374
  • refactor(config): derive provider API-key env vars from config by @dgageot in #3375
  • feat: enforce lifecycle.startup_timeout for MCP/LSP toolset startup by @dgageot in #3373
  • feat: add Hugging Face Inference Providers as a supported model provider by @Sayt-0 in #3379
  • docs: tighten comment guidance in AGENTS.md by @dgageot in #3380
  • fix: unblock headless tool-Ask paths (dispatcher + JSON runner) by @melmennaoui in #3377
  • feat(session): add SafetyPolicy primitive and hook pass-through by @melmennaoui in #3378
  • feat: add Together AI as a supported model provider by @Sayt-0 in #3376
  • fix(anthropic): use token thinking for effort levels on models without adaptive support by @Sayt-0 in #3381
  • fix(tui): keep tool call render stable while args stream by @rumpl in #3382
  • feat(hooks/safer_shell): adapt classification to session SafetyPolicy by @melmennaoui in #3383
  • feat: add Moonshot AI (Kimi) as a supported model provider by @Sayt-0 in #3384
  • feat: add Vercel AI Gateway as a supported model provider by @Sayt-0 in #3385
  • feat: add Cloudflare Workers AI and AI Gateway as model providers by @Sayt-0 in #3389
  • test: make models-list tests hermetic and parallelizable by @dgageot in #3388
  • feat(lint): add OTelTracerName cop to enforce scoped tracer names by @dgageot in #3386
  • feat: add tags field to agent config metadata by @dgageot in #3390
  • feat: add mouse support to the agent picker (hover, double-click, wheel) by @dgageot in #3391
  • fix(runtime): suppress spurious empty-response warning for benign post-tool stops by @dgageot in #3392
  • feat(memory): strengthen default toolset instructions by @dgageot in #3395
  • fix: clamp max_tokens to the context window for OpenAI-compatible providers by @Sayt-0 in #3393
  • test: make the test suite faster and sleep-free by @dgageot in #3399
  • perf(config): memoize successful OCI reads to halve warm startup latency by @dgageot in #3397
  • fix: show lean tui cost and context limit by @rumpl in #3400
  • refactor: extract shared calleeObject helper in lint cops by @dgageot in #3396
  • feat: show metadata tags as coloured chips in the agent picker by @dgageot in #3394
  • refactor(provider): deduplicate provider client boilerplate by @dgageot in #3398
  • feat(tui): add /effort command to select the model's reasoning level by @Sayt-0 in #3403

Full Changelog: v1.93.0...v1.94.0