Release · Goose · Block

Goose v1.28.0

What's new in Goose v1.28.0, released Mar 18, 2026 (). Newer: v1.56.0 (Oct 23, 2026)

Release notes

Goose v1.28.0

✨ Features

  • Adversarial agent for preventing leaking of info and more #7948
  • Claude adaptive thinking support #7944
  • New onboarding flow #7266
  • Persist GooseMode per-session via session DB #7854
  • Propagate session.id to OpenTelemetry spans and log records #7490
  • Migrate autovisualiser extension to MCP Apps #7852
  • ACP session/set_mode handler #7801
  • MCP Roots support #7790
  • Load hints in nested subdirectories #7772
  • ACP read tool for delegating filesystem I/O to ACP clients #7668
  • Summarize tool for deterministic reads #7054
  • ACP providers for Claude Code and Codex #6605
  • Capture reasoning summaries from OpenAI Responses API #7375
  • MiniMax provider with Anthropic-compatible API #7640
  • Tensorix as a declarative provider #7712
  • Skill supporting files individually loadable via load() in summon #7583
  • Avian as an LLM provider #7561
  • Combine TUI UX with publishing config #7683
  • Base path field for custom provider configuration #7614
  • Better private channel detection for Slack bot #7680
  • Preferred microphone selection #7805
  • Secret interpolation in streamable HTTP extension URLs #7782

🐛 Bug Fixes

  • Remove incorrect agent_visible filter on user message in claude-code #7931
  • Retry on authentication failure with credential refresh #7812
  • Bump pctx_code_mode to 0.3.0 for iterator type checking fix #7892
  • Pass session_id when loading extensions so skills are discovered #7868
  • Tool choice and parallel_tool_calls support for chatgpt_codex provider #7867
  • Tool confirmation handling for multiple requests #7856
  • Resolve tokio::sync::Mutex deadlock in recipe retry path #7832
  • Stop writing without error when hitting broken pipe for goose session list #7858
  • Skip upgrade-insecure-requests CSP for external HTTP backends #7714
  • Prevent hang when command backgrounds a child process #7689
  • Exit agent loop when tool call JSON fails to parse #7840
  • Prevent SSE connection drops from silently truncating responses #7831
  • Prevent SageMaker TGI from being marked configured when only Bedrock keys are set #7284
  • Disable computercontroller functionality when no $DISPLAY detected #7824
  • Register MCP extensions when resuming a session #7806
  • Load .gitignore in prompt_manager for hint file filtering #7795
  • Remap max_completion_tokens to max_tokens for OpenAI-compatible providers #7765
  • Preserve OpenAI Responses API tool call/output linkage #7759
  • Return ContextLengthExceeded when prompt exceeds effective KV cache size #7815
  • Use includeThoughts/part.thought for Google thinking handling #7593
  • Model selector showing wrong model in tabs #7784
  • Avoid word splitting by space for Windows shell commands #7810
  • Unify path resolution around GOOSE_PATH_ROOT #7335
  • Pass OAuth scopes to DCR and extract granted_scopes from token response #7571
  • Write to real file if config.yaml is symlink #7669
  • Preserve pairings when stopping gateway #7733
  • Sanitize streamable HTTP extension names derived from URLs #7740
  • Improve keyring availability error detection #7766
  • Remove insecure default secret from GOOSE_EXTERNAL_BACKEND #7783
  • Add #[serde(default)] to description field on ExtensionConfig variants #7708
  • Restore smart-approve mode #7690
  • Make TLS configurable in goosed agent via GOOSE_TLS env var #7686
  • Max turns configuration #7612
  • Compare extension configs before skipping add_extension #7650
  • Only add viewable channels to Slack bot context #7678
  • Make sure platform binary exists #7676
  • Replace global static output buffer with per-instance TempDir #7632
  • Resolve parameters in initial message with autosubmit #7659
  • Add analyzer extension in recipe to maintain backwards compatibility #7652
  • Scope empty session reuse to current window to prevent session mixing #7602
  • Prevent abort in local inference #7633
  • Restore provider and extensions for LRU-evicted sessions #7616
  • Removed double dash in pnpm command #7951

🔧 Improvements

  • Upgrade Electron 40.6.0 → 41.0.0 #7851
  • Only show up to 50 lines of source code #7578
  • Keep messages in sync #7850
  • More ACP tools #7843
  • Use pnpm for Desktop Electron App #7679
  • Use constant-time comparison for auth token validation #7730
  • Use camelCase in CallToolResponse and add type discriminators to ContentBlock #7487
  • Convert Tanzu provider to declarative JSON config #7124

…