Skip to content

Releases: docker/docker-agent

v1.111.0

Choose a tag to compare

@docker-read-write docker-read-write released this 17 Jul 07:41
bf7ca85

This release adds a new scheduler toolset, inline Mermaid diagram rendering, model switching in the lean TUI, project config autodiscovery, and a range of bug fixes and performance improvements across the agent, TUI, and server.

What's New

  • Adds a built-in scheduler toolset with create_schedule, list_schedules, and cancel_schedule tools, enabling agents to schedule instructions to run once at a time, after a delay, or on a recurring interval
  • Adds prompt cache miss warnings via an opt-in warn_on_cache_miss user setting that emits notifications when cached input tokens are absent after the first session response
  • Adds inline Mermaid diagram rendering in the TUI
  • Adds model switching (/model) to the lean TUI and shares fuzzy model search between the lean and full TUIs
  • Adds autodiscovery of docker-agent.yaml, docker-agent.yml, and docker-agent.hcl project config files for no-argument local docker agent run
  • Surfaces background-job elicitation (user-input) requests in the TUI, ensuring each request opens exactly one dialog regardless of which runtime delivers it
  • Makes a custom base_url on a model automatically imply bypass_models_gateway: true, removing the need to set it explicitly

Improvements

  • Improves session cost details in the TUI: aligns layout, color-codes cost percentages per message, groups averages together, and puts "Total" on its own line
  • Speeds up model switcher credential discovery by deduplicating credential names and resolving lookups concurrently, reducing model-picker latency
  • Parallelizes toolset startup and prefetches the MCP catalog off the load critical path, reducing agent startup time

Bug Fixes

  • Fixes glob wildcard matching in permissions so * and ? span path separators (/) in argument values such as file paths and URLs
  • Fixes a bug where setting defer_all: true on a toolset caused the toolset's custom Instructions to be permanently dropped from the agent's context
  • Fixes SafetyPolicy not persisting across turns, causing users to be re-prompted for tool approvals they had already opted into
  • Fixes background elicitations over the API so requests from concurrent background jobs are replayable and answerable instead of being auto-declined
  • Fixes Anthropic cache breakpoints exceeding the hard limit of 4 when deferred tools are present, which caused API errors at runtime
  • Fixes the TUI editor not regaining focus after external editing (Ctrl+G), which caused Enter to route to the transcript instead of sending the composed message
  • Fixes the scheduler schema so type: scheduler is accepted in agent config files (was previously rejected by JSON schema validation)
  • Fixes foreground elicitations being delivered twice into the app event stream
  • Fixes a mutex unlock in the scheduler's setRuntime method to use defer for safer lock release
  • Fixes VCR cassette path normalization for portable prompt-file matching
  • Fixes CI workflow YAML indentation that caused all CI runs to fail before any job could start

Technical Changes

  • Adds MapSlice fan-out helper in the concurrent utilities package and uses it for parallel toolset operations
  • Serializes interactive OAuth flows across toolsets to prevent concurrent conflicts
  • Brings the documentation portal to WCAG 2.1 AA conformance across light and dark themes and adds a pa11y-ci CI gate to maintain it
  • Adds new documentation pages for the scheduler toolset, sandbox templates, custom commands, user settings, context and compaction guide, and fixes stale command syntax in the Named Commands docs

What's Changed

  • docs: update CHANGELOG.md for v1.110.0 by @docker-read-write[bot] in #3665
  • fix: repair CI workflow YAML and failing AgentsMd e2e test on main by @dgageot in #3666
  • feat(tools): add "scheduler" toolset to run instructions on a time or recurring interval by @dwin-gharibi in #3632
  • fix(config): add scheduler toolset to agent-schema.json type enum by @aheritier in #3670
  • feat: custom base_url implies bypass_models_gateway by @dgageot in #3667
  • feat: add prompt cache miss warnings by @rumpl in #3671
  • Improve session cost details by @rumpl in #3672
  • perf: speed up model switcher credential discovery by @rumpl in #3673
  • Add model switching to the lean TUI by @rumpl in #3674
  • feat(tui,app): surface & correlate background-job elicitations (#3584) by @aheritier in #3624
  • chore: bump go-isatty, openai-go, and libopenapi by @dgageot in #3675
  • ci: bump golangci-lint-action to v9.3.0 and fix DeferMutexUnlock lint offense by @dgageot in #3676
  • ci: bump pinned actions to latest same-major versions by @dgageot in #3677
  • feat(server): session-scoped elicitation sink for API/server runtimes (#3584) by @aheritier in #3625
  • Render Mermaid diagrams inline by @rumpl in #3679
  • fix(server): surface background elicitations over API by @Sayt-0 in #3678
  • fix(teamloader): preserve deferred toolset instructions by @Piyush0049 in #3680
  • fix(permissions): match glob wildcards across path separators by @parveshsaini in #3605
  • docs(agents): fix stale command syntax and sub_agents claim in Named Commands by @aheritier in #3684
  • docs(sandbox): document Docker Sandboxes integration and published sbx templates by @aheritier in #3682
  • docs: surface orphan pages and add compaction, commands, and user-settings docs by @aheritier in #3683
  • fix(docs): WCAG 2.1 AA accessibility remediation for the docs portal by @aheritier in #3687
  • fix(tui): refocus the editor after external editing so Enter sends the content by @dgageot in #3690
  • Implements the path-aware, two-tier documentation accessibility CI gate by @aheritier in #3691
  • feat(run): autodiscover project agent config by @HajimohammadiNet in #3681
  • perf: parallelize toolset startup and prefetch MCP catalog by @dgageot in #3688
  • fix(anthropic): keep cache breakpoints within Anthropic's limit of 4 with deferred tools by @dgageot in #3692
  • fix(docs): render --link-hover on light-mode callout-link hover by @aheritier in #3693
  • build(deps): bump the pip group across 1 directory with 2 updates by @dependabot[bot] in #3697
  • fix(session): persist SafetyPolicy across turns by @trungutt in #3685

New Contributors

Full Changelog: v1.110.0...v1.111.0

v1.110.0

Choose a tag to compare

@docker-read-write docker-read-write released this 15 Jul 17:08
dd41b8b

This release adds dynamic MCP HTTP headers, new shell safety policies, per-model custom pricing, and cache-stable dynamic prompts, along with fixes for elicitation delivery and session cost tracking.

What's New

  • Adds dynamic MCP HTTP headers via a header factory, enabling context-aware HTTP header resolution instead of static headers fixed at startup
  • Adds a safe-auto safety policy for shell operations, providing a middle ground between prompting for every tool call and --yolo mode; safe calls beyond shell are auto-approved under this policy, with an opt-in safer mode available via approve-safer resume
  • Adds an optional cost block to model configuration, allowing explicit per-model token pricing for custom, locally-hosted, or uncatalogued models
  • Adds opt-in cache-stable dynamic prompts (cache_stable_prompts user setting), persisting frozen instruction snapshots and appending chronological updates when trusted context changes

Bug Fixes

  • Fixes elicitation requests from concurrent background jobs being silently dropped and blocking the requesting handler indefinitely
  • Fixes session cost dropping after compaction (e.g., from $49 to $12) by keeping cost monotonic across compaction and preserving cost accounting across reload

What's Changed

  • feat: implement dynamic MCP HTTP headers via header factory by @Piyush0049 in #3583
  • fix(runtime): reliable, correlation-safe, non-blocking elicitation delivery (#3584) by @aheritier in #3587
  • docs: update CHANGELOG.md for v1.109.0 by @docker-read-write[bot] in #3661
  • Add opt-in cache-stable dynamic prompts by @rumpl in #3662
  • fix(session): keep cost monotonic across compaction by @Sayt-0 in #3663
  • feat(safer_shell): add safe-auto safety policy by @trungutt in #3647
  • feat(config): declare explicit per-model token pricing with cost by @dgageot in #3664

Full Changelog: v1.109.0...v1.110.0

v1.109.0

Choose a tag to compare

@docker-read-write docker-read-write released this 15 Jul 14:46
b2147d0

This release fixes permission scoping bugs in sub-sessions, adds deferred tool loading, and includes several improvements to session reliability and the settings window.

What's New

  • Adds cache-safe deferred tool loading, tracking deferred tool load points in the shared runtime and translating them into native OpenAI tool-search and Anthropic tool-reference messages
  • Adds embedder seams for code-built teams in embeddedchat, allowing callers to assemble agents in code without requiring a YAML AgentSource or pulling the full toolset and provider registries at link time
  • Adds more settings in the settings window

Improvements

  • Refactors the TUI confirmation dialog to accept a narrow ConfirmationSessionState interface, allowing embedders to supply session state without depending on a concrete *service.SessionState

Bug Fixes

  • Fixes permission scoping between parent and child sessions, preventing sub-sessions from back-propagating ToolsApproved and Permissions to the parent (scope escalation bug)
  • Fixes tool-approval chain precedence in the permission override and dispatch pipeline
  • Fixes teamloader to propagate the session working directory to toolsets, resolving a silent drop of WithWorkingDir for tools such as shell and filesystem
  • Fixes teamloader to restore runConfig.WorkingDir after Load
  • Fixes a race condition by locking access to session title, token, and cost fields through Session.mu
  • Fixes the runForwarding invariant

Technical Changes

  • Fixes formatting for gofumpt and gci
  • Updates stale YOLO tests and restores branch cloning
  • Adds eval test coverage for container interruption on cancellation
  • Fixes TestForceAskOverridesYoloMode hanging on CI

What's Changed

  • docs: update CHANGELOG.md for v1.107.0 by @docker-read-write[bot] in #3652
  • docs: update CHANGELOG.md for v1.108.0 by @docker-read-write[bot] in #3653
  • test(eval): cover container interruption on cancellation by @Sayt-0 in #3649
  • refactor(tui): let embedders supply the confirmation dialog's session state by @dgageot in #3654
  • feat(embeddedchat): add embedder seams for code-built teams by @dgageot in #3655
  • fix: correct Decide precedence and remove sub-session scope escalation by @Piyush0049 in #3542
  • Add more settings in the settings window by @rumpl in #3656
  • fix(teamloader): propagate session working dir to toolsets by @trungutt in #3657
  • Add cache-safe deferred tool loading by @rumpl in #3658
  • fix(session): lock title and usage scalar access by @Sayt-0 in #3659

Full Changelog: v1.108.0...v1.109.0

v1.108.0

Choose a tag to compare

@docker-read-write docker-read-write released this 15 Jul 10:16
e69fcc5

Maintenance release with dependency updates.

Full Changelog: v1.107.0...v1.108.0

v1.107.0

Choose a tag to compare

@docker-read-write docker-read-write released this 15 Jul 10:16
e69fcc5

Maintenance release with dependency updates.

Full Changelog: v1.108.0...v1.107.0

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