github docker/docker-agent v1.53.0

7 hours ago

This release adds OpenAI-compatible API server functionality, skill model overrides, and response caching, along with extensive refactoring to improve code organization and testability.

What's New

  • Adds docker agent serve chat command that exposes agents through an OpenAI-compatible HTTP server
  • Adds configurable response cache for agents to skip model calls for repeated questions
  • Adds skill model override capability allowing fork skills to specify different models via model: field in SKILL.md frontmatter
  • Adds g/G keybindings to scroll messages view (jump to top/bottom)
  • Adds 10 new builtin hook events including lifecycle events, compaction events, and observability events
  • Adds type: model hook handler for LLM-as-judge functionality

Improvements

  • Switches Anthropic Opus 4.6/4.7 to adaptive thinking when token-based budgets are configured
  • Improves file path handling for sub-agent sessions by propagating user-attached files and encouraging absolute paths
  • Improves error messages for HTTP 400 failures with structured provider error details

Bug Fixes

  • Fixes Copilot integration by adding required Copilot-Integration-Id header for github-copilot provider
  • Fixes crash when opening sessions with empty configuration files
  • Fixes session_start hook output appearing as user messages in transcript
  • Fixes TUI bottom slack clearing after thinking text fades out
  • Fixes race conditions in skill model overrides and response cache handling

Technical Changes

  • Extracts hooks builtins from runtime into separate package
  • Extracts tool execution, compaction, and delegation logic into focused sub-packages
  • Consolidates hook orchestration and simplifies executor caching
  • Improves testability across runtime, session, provider, and TUI packages
  • Replaces PersistentRuntime decorator with EventObserver pattern
  • Updates multiple dependencies including Anthropic SDK, AWS Smithy, and various UI libraries

What's Changed

  • docs: update CHANGELOG.md for v1.52.0 by @docker-read-write[bot] in #2520
  • refactor(hooks): extract builtins from pkg/runtime into pkg/hooks/builtins by @dgageot in #2521
  • refactor(hooks): simplify package while preserving features by @dgageot in #2522
  • refactor(runtime): consolidate hook orchestration and cache executors by @dgageot in #2523
  • Skills: allow fork skills to override the model by @dgageot in #2525
  • refactor(skills): move fork-skill validation into SkillsToolset by @dgageot in #2524
  • fix(skills): unbreak main after fork-skill refactor merge by @dgageot in #2527
  • fix(openai): send Copilot-Integration-Id header for github-copilot by @dgageot in #2475
  • refactor(hooks/builtins): one file per builtin + simplify registration by @dgageot in #2526
  • feat(tui): add g/G keybindings to scroll messages view by @dgageot in #2528
  • refactor(hooks/builtins): inline GetEnvironmentInfo + simplify package by @dgageot in #2529
  • refactor(hooks/builtins): inline & simplify add_prompt_files by @dgageot in #2530
  • refactor(hooks): simplify caching, dispatch flow, and notification helpers by @dgageot in #2531
  • Inherit user-attached files in sub-agent sessions by @dgageot in #2532
  • fix(runtime): don't persist session_start hook output as a session message by @dgageot in #2533
  • refactor(hooks): drop runtime shadow types and tighten the executor by @dgageot in #2534
  • feat: add docker agent serve chat command (OpenAI-compatible API) by @dgageot in #2510
  • feat(hooks): add 6 builtin hooks + widen post_tool_use / before_llm_call contract by @dgageot in #2538
  • refactor(runtime): drop unused receiver from handleStream by @dgageot in #2539
  • feat(hooks): add three observability events around runtime transitions by @dgageot in #2542
  • fix(tui): clear bottom slack after thinking text fades out by @dgageot in #2543
  • refactor(tui): simplify components, drop dead code, consolidate helpers by @dgageot in #2544
  • refactor(provider): improve testability and split provider.go by @dgageot in #2547
  • speed up PR image builds by @dgageot in #2553
  • refactor(tui): reduce duplication across picker dialogs by @dgageot in #2556
  • Add context to todo storage methods by @rumpl in #2560
  • refactor(runtime): improve testability and simplify package structure by @dgageot in #2554
  • docs: document all builtin hooks in schema and hooks page by @dgageot in #2555
  • tui: improve testability and simplify code by @dgageot in #2551
  • refactor(session): improve testability and simplify the session package by @dgageot in #2550
  • feat(modelerrors): surface structured provider error details on non-2xx responses by @dgageot in #2549
  • feat(hooks): lifecycle events, per-hook options, and event-spec refactor by @dgageot in #2540
  • refactor(runtime): extract sub-session orchestration by @dgageot in #2535
  • refactor(runtime): extract model-fallback chain into fallbackExecutor by @dgageot in #2541
  • refactor(runtime): extract tool execution into pkg/runtime/toolexec by @dgageot in #2545
  • log history init failure via slog instead of stderr by @dgageot in #2561
  • feat(hooks): add before_compaction and after_compaction events by @dgageot in #2537
  • Bump direct Go dependencies by @dgageot in #2562
  • feat(agent): add a configurable response cache by @dgageot in #2536
  • refactor(runtime): replace PersistentRuntime decorator with EventObserver by @dgageot in #2552
  • feat(hooks): add 4 new hook events to match Claude Code / OpenCode / pi by @dgageot in #2548
  • anthropic: switch opus 4.6/4.7 token thinking budgets to adaptive by @dgageot in #2563
  • feat(hooks): add 'type: model' hook and integrate pre_tool_use into approval flow by @dgageot in #2546

Full Changelog: v1.52.0...v1.53.0

Don't miss a new docker-agent release

NewReleases is sending notifications on new releases.