Releases: aaif-goose/goose
Releases · aaif-goose/goose
Release list
v1.47.0
✨ Features
- Interactive git branch indicator in chat bottom bar #11290
- Support for pre-registered OAuth clients for streamable_http extensions #11182
- Show recently used models in chat footer model picker #11097
🐛 Bug Fixes
- Isolate concurrent subagent notifications in summon #10772
- Validate recipe parameter values #11234
- Re-enable minijinja builtins so documented recipe filters work #11310
- Send explicit thinking disabled to adaptive Claude models #11177
- Handle error code for context length exceeded #11283
- Include required annotations field on replayed output_text items #11263
- Reject context commands for context-owning providers #11094
- Prevent recipe parameter form from reloading the app on Enter #10522
- Enforce secure token transport in OAuth #11183
- Deprecate Gemini OAuth provider #11223
- Stop paying the prompt-cache write premium on one-shot fast-model calls #11179
- Skip local Stdio/StreamableHttp extension spawn when provider manages own context #11203
- Navigation toggle showing hamburger menu icon to open navigation #11144
- Return auth error for ACP provider from goose ACP server #11202
- Ignore ACP provider generated title and use goose generated title #11197
- Render visualizer data as text #11186
- Bound XLSX range reads #11190
- Update SQLite to 3.51.3 #11157
- Classify byte-size request limit errors as context-length-exceeded #11173
- Prevent large-session disconnects in ACP #11159
- Narrow desktop file read IPC #11149
- Avoid reading file params in recipe explain #11119
- Bound local image reads #11114
- Bound action-required stream admission #11113
- Bound partial thinking tags #11108
- Avoid following untracked review symlinks #10995
- Bind deeplink recipe parameters to startup session #11123
- Rename compare_tasks skill to a spec-valid name #11068
- Suppress extension loading toast when all extensions succeed #11016
🔧 Improvements
- Improve ACP provider setup and unify setup metadata #11100
- Create goose-agent crate with unrolled agent loop state machine #11216
- Make the unrolled loop state machine generic #11139
- Retry ACP handoff context after failed prompts #10660
- Remove automation_script, web_scrape, and cache tools from computercontroller #11198
- Upgrade ACP SDK to 1.3.0 #11218
- Pin V1 SDK and narrow ACP crate features #11289
- Migrate session/delete to the standard ACP SDK #11286
- Use rmcp ContentBlock in goose-sdk UniFFI #11210
v1.46.0
✨ Features
- Unrolled agent loop #9574
- Cache-safe request assembly with append-only turn context and declared cache semantics #11022
- Streaming shell output while commands run #10808
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- Per-message usage/cost tracking with derived session totals #10172
- Track cache tokens for accurate cost reporting #9752
- Markdown format option to session export #10703
- Resizable sidebar with drag handle and persisted width #10795
- Interactive menu for single select elicitations #10327
- Session metadata on sidebar chat hover #10663
- Configurable LOCAL_WHISPER_LANGUAGE for multilingual local transcription #10634
- Allow disabling built-in skills #10600
- Structured summary output with template rendering for compaction #10471
- Pass working_dir to the Stop hook context #10296
- Surface output-token-limit info #10831
- Tab completion and switch provider for
modelcommand #10585 - Collapse const-union enums in tool schemas #10577
- GenAI semantic convention attributes for OTEL #10700
- Enrich root span with gen_ai attributes and improve OTEL output format #10816
- Forward images and MCP embedded-resource blobs in Anthropic and Google formats #10340
- ACP session/new supports Hidden session via _meta.hidden #10811
- Stable agent event message identity #10716
- OAuth logo_uri in client ID metadata documents #10727
- Termux detection in installer to select musl portable build #10568
- Hooks feature with PreToolUse denial #9093, #9304
/goalcommand for agent self-evaluation before finishing #9069/statusslash command #9845/modelslash command to switch session model #8747--editsession flag to edit conversation before forking #9799goose reviewlocal code review command #9114- Open plugins generalization with skills support #9112
- Summon extension: peek mode for async background tasks #9519
- Summon extension: context and working_dir parameters for delegate tasks #9518, #9520
- Load global hints from ~/.agents/AGENTS.md #9736
- Proactive OAuth token refresh to avoid re-auth on every session #8386
- GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri #9209
- Unified thinking effort control across all providers #9242
- Projects as backend sources with system prompt injection #8739
- Group chat sessions by project in nav panel #10212
- Collapsible project group headers in nav panel #10278
- Worktree-aware directory switcher #8450
- Chat history search feature in navigation panel #8448
- Search filter to provider grid #10437
- Option to disable automatic update downloads #9872
- TUI diff viewer #9260
- MAX_CODE_BLOCK_LINES configurable via env vars #9301
- GOOSE_MAX_TOOL_RESPONSE_SIZE to configure tool output size limit #9256
- GOOSE_FAST_MODEL env var in ModelConfig::with_fast #9296
- GOOSE_DOCS_ROOT for air-gapped docs access #10294
- Quarterly option for scheduler #9076
- Harbor eval runner #9138
- goose://new-session and goose://resume deep links #9196, #9343
- Initial prompt with goose://new-session #9427
- Encrypted Nostr session sharing #8922
- Import sessions #9474
- Hugging Face OAuth support with auth tab in settings #9552
- MLX models support in local inference provider #9154
- Linux Vulkan support for local inference #9038
- Reconnect desktop ACP sessions after sleep and connection loss #10411
- TLS support for ACP serve #10088
- Group consecutive tool calls into one summarized chain card #8995
- Bind MCP apps to trusted ownership metadata #10747
- MCP extensions in open plugins #9471
- Skills to the chat composer #8881
- Dynamically refresh skill instructions each turn #9217
- CLI to list skills with token counts #9326
- Image read tool #9607
- View model interactions #9806
- UniFFI SDK for cross-language bindings #9593
- Provider bindings MVP to goose-sdk with Python wheel publishing #10208
- Kotlin FFI with build and Maven publish #10375
- Create source archive as release artifact #10786
New Providers
- Celeris provider #10714
- Friendli declarative provider #10762
- Azure AI Foundry multi-LLM provider #10622
- OllamaCloud provider with dynamic model discovery #10264
- Sakana AI provider for OpenAI-compatible Fugu API #10357
- iFlytek Spark and Astron MaaS providers #9837
- Fireworks AI declarative provider #9990
- OpenRouter request parameters support #9276
- Together AI declarative provider #9545
- OrcaRouter declarative provider #9515
- Perplexity declarative provider #9324
- Alibaba (Qwen via DashScope) declarative provider #9443
- Databricks AI Gateway provider #9274
- Scaleway provider #9254
- NEAR AI Cloud provider #9352
- EmpirioLabs declarative provider #9771
- xAI SuperGrok OAuth subscription provider #9420
- Vercel AI Gateway #9144
- Routstr declarative provider #9175
- FuturMix provider #8840
- oMLX declarative provider #9177
- Atomic Chat declarative provider #9210
- Muse Spark 1.1 via Meta Models API #10432
- AWS Bedrock support for OpenAI GPT models via mantle endpoint #9707
- Azure AD (Entra ID) bearer token auth via AZURE_OPENAI_AD_TOKEN #9716
N...
v1.45.0
✨ Features
- Stable agent event message identity #10716
- Tab completion and switch provider for
modelcommand #10585 - Support latest Gemini models #10630
- Configurable GOOSE_DOCS_ROOT for air-gapped docs access #10294
- Structured summary output with template rendering for compaction #10471
- Allow disabling built-in skills #10600
- Gate tool-call label enrichment on ACP client capability #10644
🐛 Bug Fixes
- Restore dynamic model discovery and current Grok support #10756
- Update DeepSeek model names to v4 API #10729
- Forward Claude Code model picker selection to the adapter #10675
- Forward Pi model selection to the adapter #10707
- Preserve enabled flag when migrating platform extensions #10690
- Pass session working_dir to on_call_tool #10689
- Preserve adversary tool arguments #10529
- Keep XML snippets inside JSON as data for local inference #10606
- Sync generated chat title in header #10578
- Prompt for tool approval in telegram gateway sessions #10613
- Keep CLI provider prompts out of process arguments #10547
- Ignore stale inventory for static model lists #10591
- Use shell working directory on initial desktop launch #10655
- Enable inventory refresh for OpenRouter model picker #10641
- Preserve read lines and reload tool output in ACP #10662
- Surface tool call output in CLI and Desktop #10654
- Truncate overlong function names in provider requests #10659
- Preserve ACP tool call update fields in desktop #10653
- Use configured session manager for tool summaries #10628
- Omit disabled OpenRouter reasoning #10517
- Clear stale pending ACP connection after terminal recovery failure #10552
- Confirm pending steer message on queuedSteer notification #10532
- Apply hermit env directly in node shims so fish login shell doesn't break MCP startup #10028
🔧 Improvements
- Upgrade to rmcp 2.0 #10584
- Opus5 support including adaptive thinking #10686
- Refine dark theme message surfaces for consistent, compliant dark mode UX #10693
- Fix Korean translation errors, untranslated entries, and terminology consistency #10667
- Simplify ACP tool-call handling and fix chain summaries #10599
- Enhance the uniffi API layer #10427
- Disable scheduler by default for ACP #10781
- UI cleanup to remove unused components and functions #10761
- Bump nostr to 0.44.6 to clear RUSTSEC-2026-0216 #10733
- Create source archive as release artifact #10786
v1.44.0
Security fixes
- Arbitrary command execution in goose CLI via
goose review(via git core.fsmonitor config) - GHSA-r5pp-p5r8-466r (credit to @0xmagic0)
✨ Features
- Support for latest Gemini models #10630
- Pass working_dir to the Stop hook context #10296
- Declarative Sakana AI provider for OpenAI-compatible Fugu API #10357
- Model interactions viewer restored #10205
- Chunk command-classifier input with overlapping windows for security #10416
- Search filter for provider grid #10437
- Muse Spark 1.1 support via Meta Models API #10432
- GPT-5.6 support #10384
- Reconnect desktop ACP sessions after sleep and connection loss #10411
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- OllamaCloudProvider with dynamic model discovery and context limits #10264
- Delete support for custom apps from Apps UI #10127
--editsession flag to edit conversation before forking #9799- iFlytek Spark and Astron MaaS providers #9837
- Fireworks AI declarative provider #9990
- OpenRouter request parameters support #9276
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, zh-TW desktop locales #10072
- MiniMax-M3 and missing M2.7 variants #10431
🐛 Bug Fixes
- Preserve command arguments through extension forms #10527
- Enforce manual approval for code mode #10528
- Confine app file operations #10481
- Preserve featured model size on delete and backfill missing sizes #10422
- Preserve recursive schema types with pctx 0.4.1 #10572
- Create inventory tables atomically with schema version #10586
- Rewrite oneOf to anyOf in tool schemas for OpenAI-compatible backends #10571
- Allow custom model as default for non-local providers #10438
- Require absolute goose path roots #10454
- Scope smart approval by request #10457
- Preserve fixed subrecipe values #10452
- Bundle git in Flatpak so hermit can clone its package registry #10511
- Expose AGENT_SESSION_ID to shell commands #10428
- Forward image content chunks to client during live session #10485
- Dispatch Code Mode callbacks on main runtime to prevent hangs #10484
- Protect OAuth token caches #10516
- Preserve content audience boundaries #10493
- Bound scheduled recipe validation #10509
- Return JSON-RPC errors from dispatch handlers instead of killing connection #10499
- Isolate prepare tools test state #10504
- Avoid local inference Metal teardown crash #10508
- Enable indexmap serde support for musl builds #10507
- Scroll chat to latest reply on session resume #10501
- Secure large response spill files #10482
- Register LiteLLM with refresh_only inventory so model picker lists models #10489
- Limit provider selector height in CLI #10420
- Tighten existing secrets file permissions #10453
- Classify image access capabilities #10451
- Preserve one-time permission scope #10450
- Register goose:// scheme handler in Flatpak desktop entry #10461
- Reject duplicate recipe parameter keys #10448
- Synchronously kill orphaned goose serve backends on GUI close #10292
- Break self-referential $ref cycles before Code Mode schema #10469
- Stop multiline paste auto-submitting line-by-line on Windows #10326
- Hide nested config values in Configuration Editor #10390
- Stop resolving TUI scripts from cwd #10449
- Exclude MCP App tools from Code Mode callbacks #10290
- Apply default extension timeout to developer shell tool calls #10348
- Preserve reasoning_content for DeepSeek thinking mode on multi-turn tool calls #10366
- Make prompt timestamps timezone-explicit #10209
- Disable compaction during approval #10089
- Restore pnpm 11 project configuration #10395
- Treat empty-string finish_reason as non-terminal in streaming #10258
- Fix Gemini OAuth onboarding #10363
- Retry empty provider turns instead of stopping silently #10360
- Guard llama.cpp backend init against SIGILL on x86_64 CPUs without FMA/AVX2 #10105
- Sanitize responses function call names #10344
- Pick session mode from the ids the agent actually offers #10320
- Show manual-setup indicator for extensions without install link #10321
- Dedupe duplicate signed thinking blocks to fix Anthropic 400 #10083
🔧 Improvements
- Extract tool call handling from ACP server #10574
- Report cache-aware Harbor costs #10430
- Trim macOS desktop entitlements #10490
- Consolidate and harden release workflows #10447
- TLS backend matrix job for rustls-tls and native-tls #10148
- Bound code-mode execution with timeout and cancellation #10214
- Recover malformed tool calls from GLM/Minimax models instead of rejecting them #10230
- Group chat sessions by project in nav panel #10212
- Per-message usage/cost tracking with derived session totals #10172
- Return effective context limit from /model-info #10165
- Disable thinking preservation for Groq #10284
- Clarify terminal color semantics in CLI #10414
📚 Documentation
- Clean up stale documentation audit findings #10114
- Update environment and config references #10203
- Document hook deny contract, matcher regex, tool_input keys, and provider config #10467
- Remove stale gooseignore references #10359
- Add Code of Conduct #10424
- Clarify session --edit context retention #10257
v1.43.0
✨ Features
- Reconnect desktop ACP sessions after sleep and connection loss #10411
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- Per-message usage/cost tracking with derived session totals #10172
- Group chat sessions by project in nav panel #10212
- Show project names in directory switcher dropdown #10207
- OllamaCloudProvider with dynamic model discovery and context limits #10264
- Delete support for custom apps from Apps UI #10127
--editsession flag to edit conversation before forking #9799- iFlytek Spark and Astron MaaS providers #9837
- Fireworks AI declarative provider #9990
- OpenRouter request parameters support #9276
- OVHcloud Qwen3.6-27B model (262K context) #10339
- GPT-5.6 family support #10349
- GLM-5.2 support #9967
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, and Traditional Chinese desktop locales #10072
- Provider bindings MVP to goose-sdk with Python wheel publishing #10208
- TLS support for ACP serve #10088
- Streamable HTTP support in deeplink generator #9954
🐛 Bug Fixes
- Exclude MCP App tools from Code Mode callbacks #10290
- Preserve reasoning_content for DeepSeek thinking mode on multi-turn tool calls #10366
- Compaction disabled during approval #10089
- Treat empty-string finish_reason as non-terminal in streaming #10258
- Gemini OAuth onboarding failure #10363
- Retry empty provider turns instead of stopping silently #10360
- Guard llama.cpp backend init against SIGILL on x86_64 CPUs without FMA/AVX2 #10105
- Sanitize responses function call names #10344
- Pick session mode from the IDs the agent actually offers #10320
- Desktop ACP shell PATH #10336
- Dedupe duplicate signed thinking blocks to fix Anthropic 400 #10083
- Resolve provider default model instead of leaking sentinel "current" #10305
- Return effective context limit from /model-info #10165
- Gate rcgen aws_lc_rs feature behind rustls-tls #10116
- Recover malformed tool calls from GLM/Minimax models instead of rejecting them #10230
- Restore cursor when configure exits #10222
- Skip scheduled sessions for implicit resume #10178
- Sync slash help with builtins #10173
- Treat unicode punctuation as image path terminators #10106
- Don't bleed provider-specific request_params into delegate() sessions #9906
- Purge empty phantom sessions on startup #9651
- Include structuredContent from MCP tool response #10128
- Propagate agent cleanup errors on session delete #10112
- Tolerate partial Responses output items #10108
- Always use OpenAI-compatible "parameters" for Databricks tools #10101
- Unescape shell-escaped image paths #10098
- Send inference config (max_tokens, temperature) on Bedrock Converse #9889
- Dedupe Nostr session deep link imports #9918
- Don't retry deterministically-permanent 400s (thinking-block immutability) #10005
- Use async reqwest client so OTLP export works in
goose servemode #10100 - Reject non-object tool-call arguments instead of panicking #9832
- Save /edit prompts to history #10011
- Buffer thinking across stream chunks for DeepSeek/Kimi tool calls #9704
- Surface actionable errors for truncated tool-call arguments #9946
- Show optimistic toggle state when disabling an extension #9882
- Resolve databricks_v2 pricing and surface cost in standard usage update #9925
- Activate hermit on macOS so STDIO extensions resolve node #9482
- Prompt timestamps are now timezone-explicit #10209
🔧 Improvements
- Apply the default extension timeout to developer shell tool calls #10348
- Disable thinking preservation for Groq #10284
- Bound code-mode execution with timeout and cancellation #10214
- Keep turn-context out of the Anthropic prefix cache #10030
- Disable extended thinking for fast-model operations #9815
- Switch the local inference provider MLX backend to use the safemlx crate #10304
- OpenAI Responses API store param configurable #10040
- Support streamed tool calls without indexes #10023
- Fail closed on unverifiable update provenance #10168
- Migrate diagnostics to JSON report #9964
- Route MCP elicitations through tool streams #9943
- ACP migration for desktop UI #10081
- Relabel settings 'Session' tab to 'External Backend' #10318
- Show manual-setup indicator for extensions without an install link #10321
📚 Documentation
v1.42.0
✨ Features
- OllamaCloudProvider with dynamic model discovery and context limits #10264
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- Per-message usage/cost tracking with derived session totals #10172
- Group chat sessions by project in nav panel #10212
- Show project names in directory switcher dropdown #10207
- Provider bindings MVP to goose-sdk with Python wheel publishing #10208
- AskAI bot hints for followups #10291
🐛 Bug Fixes
- Resolve provider default model instead of leaking sentinel "current" #10305
- Return effective context limit from /model-info #10165
- Recover malformed tool calls from GLM/Minimax models instead of rejecting them #10230
- Restore cursor when configure exits #10222
- Sync slash help with builtins #10173
- Treat unicode punctuation as image path terminators #10106
- Don't bleed provider-specific request_params into delegate() sessions #9906
- Purge empty phantom sessions on startup #9651
- Include structuredContent from MCP tool response #10128
- Gate rcgen aws_lc_rs feature behind rustls-tls #10116
🔧 Improvements
- Increase /mcp-app-guest body limit for larger single-file MCP apps #10324
- Relabel settings 'Session' tab to 'External Backend' #10318
- Switch local inference provider MLX backend to use the safemlx crate #10304
- Disable thinking preservation for Groq #10284
- Bound code-mode execution with timeout and cancellation #10214
- Skip scheduled sessions for implicit resume #10178
- Fail closed on unverifiable update provenance #10168
- Update Rust toolchain and raise recursion limit #10303
- Drop unsupported gpt-5.3-codex from chatgpt_codex provider #10271
- Move Google provider into goose-providers #10216
- Move Snowflake provider #10218
- Move Databricks providers into goose-providers crate #10162
- Move declarative definitions #10167
📚 Documentation
v1.41.0
✨ Features
- iFlytek Spark and Astron MaaS providers (#9837)
--editsession flag to edit conversation before forking (#9799)- Fireworks AI declarative provider (#9990)
- OpenRouter request parameters support (#9276)
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, and Traditional Chinese desktop locales (#10072)
- Spanish (es) locale support (#9833)
- Korean localization for desktop app (#9856)
- Japanese locale support (#9768)
- Hindi desktop locale (#9733)
- Language selection feature in desktop (#9405)
/statusslash command in CLI (#9845)- Streamable HTTP support in deeplink generator (#9954)
- GLM-5.2 model support (#9967)
- Global hints loading from
~/.agents/AGENTS.md(#9736) - Azure Entra ID bearer token auth via
AZURE_OPENAI_AD_TOKEN(#9716) - Together AI declarative provider (#9545)
- OrcaRouter as declarative OpenAI-compatible provider (#9515)
- EmpirioLabs AI declarative provider (#9771)
- MLX model support for local inference provider (#9154)
- Summon peek mode for async background tasks (#9519)
- Summon context parameter for delegate tasks (#9518)
- Summon working_dir override for delegate tasks (#9520)
- Structured metadata for summon task load results (#9521)
- TLS support for ACP serve (#10088)
- OpenAI Responses API store param configurability (#10040)
- Exposed available tools in ACP schema (#10097)
- ACP thinking effort config option (#10711)
- Last message snippets for ACP sessions (#9798)
- OTLP logging schema for cross-tool detection (#9713)
- Option to disable automatic update downloads (#9872)
- Cache token tracking for accurate cost reporting (#9752)
- Session import functionality (#9474)
- xAI SuperGrok OAuth subscription provider (#9420)
- Perplexity as declarative OpenAI-compatible provider (#9324)
- Alibaba (Qwen via DashScope) declarative provider (#9443)
- Configurable tool output size limit via
GOOSE_MAX_TOOL_RESPONSE_SIZE(#9256) /modelslash command for session model switching (#8747)- Databricks AI Gateway provider (#9274)
- Russian language support (#9406)
- Turkish desktop locale (#9392)
- NEAR AI Cloud provider (#9352)
- Scaleway provider (#9254)
- Harbor eval runner (#9138)
/goalcommand for agent self-evaluation before finishing (#9069)- Summon subagent instructions (#9325)
- Open-plugins generalization + skills (#9112)
- PreToolUse denial in hooks (#9304)
- Optional api_key configuration for declarative openai-engine providers (#9202)
goose reviewlocal code review command (#9114)- TUI diff viewer (#9260)
- Paginated session list in ACP (#9199)
- Structured per-provider config block with non-destructive provider switching (#8977)
tuicommand on goose-cli (#9385)- Configurable
MAX_CODE_BLOCK_LINESvia env vars (#9301) goose://resumesession deep link (#9343)GOOSE_FAST_MODELenv var support (#9296)- Vercel AI Gateway provider (#9144)
- Quarterly option for scheduler (#9076)
- Hooks feature (#9093)
- Projects as backend sources with system prompt injection (#8739)
- Worktree-aware directory switcher (#8450)
- Chat history search feature (#8448)
- Optional
--parametersfor scheduled recipes (#8741) - GitHub Copilot
/responsesAPI (#9043) - Unified thinking effort control across all providers (#9242)
- Slash commands (built-in, skill, recipe) in ACP server (#9238)
- Nushell terminal and completion support (#8628)
- Simplified Chinese (zh-CN) translation (#8765)
- Atomic Chat as declarative OpenAI-compatible provider (#9210)
GOOSE_OAUTH_CALLBACK_PORTfor stable OAuth redirect_uri (#9209)- Proactive OAuth token refresh to avoid re-auth on every session (#8386)
goose://new-sessiondeep link for fresh chat (#9196)- Routstr as declarative provider (#9175)
- FuturMix provider (#8840)
- oMLX declarative provider (#9177)
- Declarative provider support in goose-providers crate (#9992)
- ACP elicitation improvements (#9797)
- Image read tool (#9607)
gpt-5.5model support for ChatGPT Codex provider (#9292)
🐛 Bug Fixes
- Canonical model output paths (#10196)
- ACP agent cleanup errors propagation on session delete (#10112)
claude-sonnet-5added to canonical model registry (#10183)- MCP-app-guest request body limit increased (#10180)
- Tolerate partial Responses output items (#10108)
- Databricks tool parameters for OpenAI compatibility (#10101)
- Unescape shell-escaped image paths (#10098)
- Desktop Mac auto-update config seeding (#10132)
/editprompts saved to history (#10011)- Schedule sessions listing using
session.message_count(#10026) - Session store sync after provider/model update and thinking effort update (#10060)
- Fallback REST API call removed in ACP mode for edit in place (#10034)
- Don't retry deterministically-permanent 400s (thinking-block immutability) (#10005)
- Async reqwest client for OTLP export in
goose servemode (#10100) - Reject non-object tool-call arguments instead of panicking (#9832)
- Databricks pricing resolution and cost surfacing (#9925)
- Removed unused SubagentStart/SubagentStop hook events (#9960)
- Recipe modal closes when canceling parameter form (#9195)
- Tool request timestamp precedes tool response timestamp (#9462)
- Activate hermit on macOS so STDIO extensions resolve node (#9482)
- Auto-visualiser JSON-encoded string handling (#9838)
- User-Agent sent on URL image fetches (#9927)
- Do not pass temperature to ChatGPT Codex provider (#9931)
- Nostr session deep link import deduplication (#9918)
- Provider refresh when session working directory changes (#9883)
- GCP refreshed gcloud token after reauth (retry Vertex AI on 401/403) (#9849)
- Start a turn when
/goalor/grindis set (#9801) - Handle resume deep links (#9298)
- PATH repair for plugin hook commands (#9615)
- Cmd/Ctrl+T new chat shortcut restored (#9614)
- Mention menu icon opens sidebar (#9643)
- Dedupe React to prevent multiple instances in renderer (#9631)
- Hermit cleanup added to uvx and jbang scripts (#9616)
- Blocking OTLP HTTP exporter (#9599)
- Fall back to default provider when resuming session with unavailable provider (#9547)
- Tokio runtime provided for OTLP HTTP exporter batch thread (#9541)
- OpenAI meta.n_ctx read from
/v1/modelsfor local server context limit (#9530) - Session history scrollbar aligned with window edge (#9601)
- Session name refresh in sidebar after rename (#9543)
- Resolved skill supporting file paths shown (#9584)
- Bedrock real streaming via ConverseStream API (#9579)
- OpenAI-native cached_tokens recorded in usage metering (#9829)
- Moonshot provider API URL override option (#9819)
- Image paths with spaces detected (#9387)
- New chat shortcut navigation restored (#9528)
- Stale completed tasks evicted in summon (#9514)
- OAuth callback timeout in WSL instead of hanging (#9536)
- Unmatched extension names warning in delegate (#9513)
- Elicitation decline and cancel actions propagated end-to-end (#9437)
- Bedrock inference config (max_tokens, temperature) sent on Converse (#9889)
- Optimistic toggle state shown when disabling an extension (#9882)
- Windows backslash paths preserved in custom extension command (#9741)
- ACP cancel race condition fixed (#9804)
- Removed window goosed when closing window (#9818)
- Context exceeded checker made more precise (#9831)
- Login-shell PATH inherited in spawned subagents (#9737)
- String values accepted for
GOOSE_CONTEXT_LIMIT(#9738) - Rejected OAuth credentials cleared after refresh (#9694)
- Extended thinking kept within Anthropic output cap (#9814)
- RPM build-id links disabled (#9671)
- Custom API path preserved in OpenAI base_url derivation (#9649)
- Bedrock ValidationException classified as ExecutionError (#9735)
- Unparseable extension entries preserved during config refresh (#9439)
- Session info ACP method (#9729)
- Anthropic stream refusals surfaced as visible errors (#9724)
- Ollama_cloud correctly mapped to canonical provider (#9639)
- Groq provider max tokens values corrected (#9790)
- Stream decode errors marked retryable (#9723)
- Databricks AI Gateway v2 endpoints pagination (#9753)
- Pattern-based prompt injection detection confidence scores adjusted (#9690)
- ACP compatibility in TUI for config extensions (#9683)
- Thinking content buffered across stream chunks for DeepSeek/Kimi tool calls (#9704)
- Actionable errors surfaced for truncated tool-call arguments (#9946)
- Deleting recently created session and creating new one no longer shows deleted content (#9351)
- Custom OpenAI provider port preserved when URL scheme omitted (#9730)
- ACP agentInfo included in initialize response (#9765)
- Local inference media marker parts used for vision prompts (#9452)
- Extensions icon visible after switching sessions (#9787)
- Non-recipe project config files skipped in summon (#9808)
- Duplicate tool-call ids deduped within a turn (#9792)
- Bundled extensions resolved from discovery (#9759)
- Thinking config passed to Bedrock Anthropic models (#9794)
- LiteLLM context limit from
/model/infofor custom models (#9303) - Thinking content preserved for provider context (#9314)
- Configurable timeout env vars mentioned in Ollama stream stall error (#9246)
- Full recipe parameter details included in load/discovery output (#9233)
- Unused fetch-metadata IPC handler removed (SSRF) (#9340)
- Gateway respects
GOOSE_MAX_TURNS(#9354) - Anthropic empty object sent instead of null for tool_use input (#9355)
- Selected branch preserved across project chats (#9010)
- Tolerate missing responses output (#9449)
- Azure api-version query param made optional (#9221)
- Pending env vars preserved in Add Extension form (#9285)
- Linux x86_64 built inside manylinux_2_28 for glibc 2.28+ compat (#9415)
- Main window stops growing taller on every launch (#9409)
- Desktop chat search session limiting (#9366)
- Per-session agent creation serialized to stop duplicate MCP init (#9357)
- OTLP signals skipped when protocol=grpc to avoid background-thread panic (#9512)
- Stop hook decisions honored when blocking...
v1.40.0
✨ Features
- Language selection in desktop app #9405
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, Traditional Chinese desktop locales #10072
- Korean localization for desktop app #9856
- Japanese locale support #9768
- Spanish (es) locale support #9833
- Hindi desktop locale #9733
/statusslash command in CLI #9845/modelslash command for session model switching #8747/goalcommand for agent self-evaluation before finishing #9069goose reviewlocal code review command #9114- Peek mode for async background tasks in summon #9519
- Context parameter and working_dir override for delegate tasks #9518 #9520
- GLM-5.2 support #9967
- Together AI declarative provider #9545
- EmpirioLabs as declarative OpenAI-compatible provider #9771
- OrcaRouter as declarative OpenAI-compatible provider #9515
- NEAR AI Cloud provider #9352
- Perplexity as declarative OpenAI-compatible provider #9324
- Alibaba (Qwen via DashScope) declarative provider #9443
- Databricks AI Gateway provider #9274
- Scaleway provider #9254
- Vercel AI Gateway #9144
- xAI SuperGrok OAuth subscription provider #9420
- OpenAI GPT models via AWS Bedrock mantle endpoint #9707
- Azure Entra ID bearer token auth via AZURE_OPENAI_AD_TOKEN #9716
- MLX models support for local inference provider #9154
- Streamable HTTP support for deeplink generator #9954
- Global hints loading from ~/.agents/AGENTS.md #9736
- Unified thinking effort control across all providers #9242
- Canonical thinking modes #9743
- Hooks system for extensibility #9093
- PreToolUse denial in hooks #9304
- Honor blocking Stop hook decisions #9468
- Option to disable automatic update downloads #9872
- Track cache tokens for accurate cost reporting #9752
- Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE #9256
- Configurable MAX_CODE_BLOCK_LINES via env vars #9301
- GOOSE_FAST_MODEL env var support #9296
- Hugging Face OAuth support with auth tab in settings #9552
- Chat history search in navigation panel #8448
- Import sessions #9474
- View model interactions #9806
- View JSON content #9678
- Image read tool #9607
- goose://new-session deep link #9196
- goose://resume session deep link #9343
- Initial prompt with goose://new-session #9427
- MCP extensions support in open plugins #9471
- Nushell terminal and completion support #8628
- TUI command on goose-cli #9385
- TUI diff viewer #9260
- Unified OTLP logging schema for cross-tool detection #9713
- Prompt injection mitigation enabled by default for internal users #9612
- Encrypted Nostr session sharing #8922
- Quarterly option for scheduler #9076
- Optional --parameters for scheduled recipes #8741
- Worktree-aware directory switcher #8450
- Harbor eval runner #9138
- Linux musl CLI builds #9240
🐛 Bug Fixes
- Mac auto-update config seeding #10132
- Use async reqwest client so OTLP export works in
goose servemode #10100 - Reject non-object tool-call arguments instead of panicking #9832
- Save /edit prompts to history #10011
- Use session.message_count for schedule sessions listing #10026
- Sync session store after provider and model update #10060
- Buffer thinking across stream chunks for DeepSeek/Kimi tool calls #9704
- Surface actionable errors for truncated tool-call arguments #9946
- Show optimistic toggle state when disabling an extension #9882
- Do not pass temperature to ChatGPT Codex provider #9931
- Resolve databricks_v2 pricing and surface cost in standard usage update #9925
- Activate hermit on macOS so STDIO extensions resolve node #9482
- Autovisualiser: accept JSON-encoded string for the data parameter #9838
- Developer/read_image: send a User-Agent on URL image fetches #9927
- Start a turn when /goal or /grind is set #9801
- Pass thinking config to Bedrock Anthropic models #9794
- Preserve Windows backslash paths in custom extension command #9741
- Custom OpenAI provider dropping port when URL scheme is omitted #9730
- ACP cancel race condition #9804
- Removed window goosed when closing window #9818
- Context exceeded checker more precise #9831
- Inherit login-shell PATH in spawned subagents #9737
- Accept string values for GOOSE_CONTEXT_LIMIT #9738
- Clear rejected OAuth credentials after refresh #9694
- Keep extended thinking within the Anthropic output cap #9814
- RPM build-id links disabled #9671
- Preserve custom API path in base_url derivation for OpenAI #9649
- Handle resume deep links #9298
- Repair PATH for plugin hook commands #9615
- Restore Cmd/Ctrl+T new chat shortcut #9614
- Lead with extension description, shorten HTTP/SSE transport label #9653
- Mention menu icon to open the sidebar #9643
- Dedupe React to prevent multiple instances in renderer #9631
- Hermit cleanup in uvx and jbang scripts #9616
- Use blocking OTLP HTTP exporter #9599
- Fall back to default provider when resuming session with unavailable provider #9547
- Provide Tokio runtime for OTLP HTTP exporter batch thread #9541
- Read meta.n_ctx from /v1/models to fix context limit for local servers #9530
- Align session history scrollbar with window edge #9601
- Refresh session name in sidebar after rename [#9543](htt...
v1.39.0
✨ Features
- ACP method for managing recipes and UI changes #9951
- Use ACP to manage global config and session extensions #9948
- Recipe handling in new_session #9935
/statusslash command in CLI #9845- ACP new session on desktop (non-recipe sessions) #9914
- Typed request/response for add, get session extensions in ACP #9890
- Option to disable automatic update downloads #9872
- Change cwd using ACP and refactor extension in bottom menubar #9887
- Track cache tokens for accurate cost reporting #9752
- Load session using ACP #9875
- View model interactions #9806
- Support OpenAI GPT models via AWS Bedrock mantle endpoint #9707
- Peek mode for async background tasks in summon #9519
- Korean localization for desktop app #9856
- Chat reply UI with ACP #9857
- Durable ACP chat session state for desktop UI #9852
- ACP for desktop chat prompt (feature toggle off) #9802
- MCP extensions support in open plugins #9471
- Initial prompt with goose://new-session deep link #9427
- Configurable Open Model Gym output dir #9789
- Spanish (es) locale support #9833
- EmpirioLabs as a declarative OpenAI-compatible provider #9771
- MLX models support for local inference provider #9154
- Elicitation method for ACP with improvements #9797
- View JSON #9678
- Load global hints from ~/.agents/AGENTS.md #9736
- Configurable per-agent timeout (GYM_AGENT_TIMEOUT) #9791
- Azure Entra ID bearer token auth via AZURE_OPENAI_AD_TOKEN #9716
_meta.conversationBeforefor ACP forking session #9821- Quarterly option for scheduler #9076
- Together AI declarative provider #9545
- Image read tool #9607
- Context parameter for summon delegate tasks #9518
- Structured metadata for summon task load results #9521
- Working_dir override for summon delegate tasks #9520
- OrcaRouter as a declarative OpenAI-compatible provider #9515
- Elicitation decline and cancel actions propagation #9437
- ACP opt-in last message snippets #9798
- Japanese locale support #9768
- Unified OTLP logging schema for cross-tool detection #9713
- Canonical thinking modes #9743
- Hindi Desktop locale #9733
- Custom ACP method to get session info #9729
- GOOSE_SERVER__SECRET_KEY support at goose serve ACP endpoint #9726
- Surface Anthropic stream refusals as visible errors #9724
- ACP search session in Desktop #9717
- Steering messages with ACP #9560
- ACP list session with keyword and type filter #9695
- ACP thinking effort config option #9711
- Prompt injection mitigation enabled by default for internal users #9612
- ACP list sessions and manage sessions in Desktop #9687
- ACP methods for config extensions #9581
- Custom notifications only when ACP client specifies capability #9596
- Minimal uniffi setup for cross-language SDK #9593
- Hugging Face OAuth support with auth tab in settings #9552
- Import sessions #9474
- xAI SuperGrok OAuth subscription provider #9420
- Replay ACP images on session load #9496
- Raw provider supported models over ACP #9475
- ACP session system prompt setter #9478
- Scholar Sidekick MCP extension #9433
tuifeature flag to gate the tui command #9428- CLI to list skills with token counts #9326
- Perplexity as a declarative OpenAI-compatible provider #9324
- Alibaba (Qwen via DashScope) declarative provider #9443
- Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE #9256
/modelslash command to CLI for session model switching #8747- Databricks AI Gateway provider #9274
- Russian language support #9406
- Turkish desktop locale #9392
- Language selection feature #9405
- Handle resume deep links #9298
🐛 Bug Fixes
- Publish mac updater metadata #9945
- Activate hermit on macOS so STDIO extensions resolve node #9482
- Accept JSON-encoded string for autovisualiser data parameter #9838
- Send User-Agent on URL image fetches in developer/read_image #9927
- Allow unlisted models in search #9933
- Do not pass temperature to ChatGPT Codex provider #9931
- Sanitize extension environment maps #9884
- Desktop updater to target aaif-goose releases #9868
- Refresh provider when session working directory changes #9883
- Use refreshed gcloud token after reauth (retry Vertex AI on 401/403) #9849
- Start a turn when /goal or /grind is set #9801
- Remove hard-coded React alias that breaks dev render #9842
- Pass thinking config to Bedrock Anthropic models #9794
- Check for responses API support in Databricks #9347
- Use media marker parts for vision prompts in local-inference #9452
- Keep extensions icon visible after switching sessions #9787
- Skip non-recipe project config files in summon #9808
- Dedupe duplicate tool-call ids within a turn #9792
- Resolve bundled extensions from discovery #9759
- Include agentInfo in ACP initialize response #9765
- Custom OpenAI provider dropping port when URL scheme is omitted #9730
- Preserve Windows backslash paths in custom extension command #9741
- ACP cancel race condition #9804
- Removed window goosed when closing window #9818
- Inherit login-shell PATH in spawned subagents #9737
- Accept string values for GOOSE_CONTEXT_LIMIT #9738
- Clear rejected OAuth credentials after refresh #9694
- Keep extended thinking within the Ant...
v1.38.0
✨ Features
- Opt-in ACP last message snippets for sessions #9798
- Unified OTLP logging schema for cross-tool detection #9713
- Canonical thinking modes across providers #9743
- Custom ACP method to get session info #9729
- ACP secret key support at goose serve endpoint #9726
- Surface Anthropic stream refusals as visible errors #9724
- ACP search session support in Desktop #9717
- Steering messages with ACP #9560
- ACP list sessions with keyword and type filter #9695
- ACP thinking effort config option #9711
- ACP session management in Desktop #9687
- Image read tool #9607
- ACP methods for config extensions #9581
- Custom notifications only when ACP client specifies capability #9596
- Minimal uniffi setup for cross-language SDK #9593
- Hugging Face OAuth support with auth tab in settings #9552
- Session import functionality #9474
- Replay ACP images on session load #9496
- Raw provider supported models over ACP #9475
- ACP session system prompt setter #9478
- Scholar Sidekick MCP extension #9433
- TUI feature flag to gate tui command #9428
- CLI to list skills with token counts #9326
- xAI SuperGrok OAuth subscription provider #9420
- Perplexity as declarative OpenAI-compatible provider #9324
- Alibaba (Qwen via DashScope) declarative provider #9443
- Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE #9256
- /model slash command in CLI for session model switching #8747
- Databricks AI Gateway provider #9274
- TUI command on goose-cli #9385
- Configurable MAX_CODE_BLOCK_LINES via env vars #9301
- NEAR AI Cloud provider #9352
- goose://resume session deep link #9343
- Scaleway provider #9254
- Honor GOOSE_FAST_MODEL env var in ModelConfig::with_fast #9296
goose reviewlocal code review command #9114- TUI diff viewer #9260
- ACP paginate session list #9199
- Structured per-provider config block, non-destructive provider switching #8977
- Pass session cwd param to ACP providers #9229
- gpt-5.5 added to known models #9292
- Opt-in to Vercel AI Gateway leaderboard #9259
- Harbor eval runner #9138
- Slash commands (built-in, skill, recipe) in ACP server #9238
- /goal command for agent self-evaluation before finishing #9069
- Summon subagent instructions #9325
- Open-plugins generalization with skills #9112
- PreToolUse denial hook #9304
- Optional api_key configuration for declarative openai-engine providers #9202
- Login shell PATH flag #9313
- Linux musl CLI builds #9240
- goose://new-session deep link to open fresh chat #9196
- GOOSE_DISABLE_TOOL_CALL_SUMMARY to opt out of per-tool-call summaries #8947
- Recipe discovery and execution via ACP server #8925
- GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri #9209
- Proactive OAuth token refresh to avoid re-auth on every session #8386
- Encrypted Nostr session sharing #8922
- Simplified Chinese (zh-CN) translation #8765
- Nushell terminal and completion support #8628
- Optional --parameters for scheduled recipes #8741
- GitHub Copilot /responses API #9043
- Vercel AI Gateway provider #9144
- Routstr declarative provider #9175
- FuturMix provider #8840
- oMLX declarative provider #9177
- Strip chain-of-thought markers from custom provider output #8635
- Quarterly option for scheduler #9076
- Hooks system #9093
- Atomic Chat as declarative OpenAI-compatible provider #9210
- Projects as backend sources with system prompt injection #8739
- Worktree-aware directory switcher #8450
- Chat history search feature in navigation panel #8448
- Expose built-in skills through sources list ACP calls #9045
- ACP streamable HTTP spec compliance #9034
- Move goose2 provider catalog behind ACP layer #9030
- Group consecutive tool calls into one summarized chain card #8995
- Replace raw config and secret methods in ACP #9000
- Support Google model inventory refresh #8913
- MCP Apps inline rendering in goose2 #8877
- Goose2 custom providers support in UI and ACP #8924
- Ollama host configurable in goose2 #8912
- Skills added to chat composer #8881
- MCP Apps hydrate and replay payloads in Goose2 #8632
- Windows CUDA release artifacts #8750
🐛 Bug Fixes
- Desktop new chat shortcut #9659
- Correctly map ollama_cloud to canonical provider and update max tokens #9639
- Incorrect max tokens values for Groq provider #9790
- Classify Bedrock ValidationException as ExecutionError #9735
- Page through all Databricks AI Gateway v2 endpoints when listing models #9753
- Preserve unparseable extension entries during config refresh #9439
- goose-sdk release compat check with new schema #9697
- Compatibility of config extension ACP call in TUI #9683
- Intermittent missing extension override on UI #9575
- Scheduled recipe session params #9553
- Skip OTLP signals when protocol=grpc to avoid background-thread panic #9512
- Forward ACP server context window size to clients #9455
- Quote release PR search phrase in pre-release.sh #9573
- Refresh provider list in Switch Models picker #9408
- Start new chat in current window from recipe param modal #9422
- Make Azure api-version query param optional #9221
- Preserve pending env vars in Add Extension form [#9285...