Release notes
Goose v1.49.0
✨ Features
- Auto-updater for desktop application #10614
- Linux ARM64 desktop release packages #11518
- Load extensions in the background so the CLI prompt is immediately usable #10403
- Title sessions by subject, not workflow step #11135
- Interactive git branch indicator in chat bottom bar #11290
on_failureblock for PreToolUse hooks #11449- Web-search and browser-use built-in skills #11233
- Model-native audio transcription provider #10589
--with-extensioncan now name its extension #11127- Auto-focus chat input when user starts typing #11184
- Collapse scheduled job sessions into accordion in chat history #11265
- Select saved recipes when creating a schedule #10892
- Show recent used models in chat footer model picker #11097
- PreToolUseResult event and stable tool_call_id across tool lifecycle #11120
- Sort configured providers to the top of the provider list #11409
- OpenRouter session_id forwarding and app category header #10868
- ACP thinking effort derivation and forwarding #10949
- GPT-5.6 follow-up support for Codex and Responses API #10460
- Pre-registered OAuth clients for streamable_http extensions #11182
- OTEL request params, response metadata, tool call parity, and agent identification #11261
New Providers
- Opper as a declarative OpenAI-compatible provider #11589
- Databricks Unity Catalog model services discovery #11575
- TrustedRouter declarative provider #11422
- OpenCode Zen gateway as a declarative provider #10939
- Gondola as declarative OpenAI-compatible provider #11421
- SayGM as declarative OpenAI-compatible provider #11267
- Lynkr as declarative OpenAI-compatible provider #11372
- PleumRouter declarative provider #10479
- Z.ai GLM-5.3 (replacing GLM-5.2) #11226
- OpenAI GPT-5.6 (sol/terra/luna) via Bedrock #10502
- Custom provider cost fields for cost tracking #11220
🐛 Bug Fixes
- Unify context limit resolution behind provider API #11213
- Keep using valid MCP access tokens without a refresh token #11324
- Provider save no longer overwrites stored config with defaults #11517
- Deduplicate parallel tool-pair summaries #11195
- Exclude Git metadata from project hints #11148
- Honor remote working directory for new chats and allow typed paths #11322
- Sanitize hidden Unicode in Bedrock tools #11121
- Avoid sending images to non-vision capable models #11496
- Reject cmd.exe commands containing newlines #11537
- Honest compaction failure message and fast-fail when no tool responses exist #10500
- Chat input freeze after opening model picker #11525
- Bound non-streaming JSON responses #11109
- Reject non-object response schemas in recipes #11478
- Coalesce consecutive Thinking blocks in collect_stream #11317
- Decouple source file and tool response limits #11391
- Discover GGUF repos with non-standard filenames #11005
- Flip select menus up when the window clips them #11495
- Bedrock prefer HTTP bearer auth when configured #11562
- MCP sampling for reasoning-first responses #11092
- Keep recalled history agent-visible #11490
- Fail closed on invalid default GCP credentials #11363
- Bound handoff memo so long sessions stay resumable #11204
- Goose unable to work with DeepSeek and Alibaba using OpenAI responses API #11298
- Show tool inputs before approval #10932
- Deduplicate enabled builtins #11340
- 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
- Isolate concurrent subagent notifications #10772
- Validate recipe parameter values #11234
- Re-enable minijinja builtins so documented recipe filters work #11310
Security Fixes
- Enforce per-turn model tool allowlists #11426
- Stop exposing provider secret suffixes #11476
- Restrict code mode callback output #11471
- Restrict app management tools #11470
- Preserve local inference message text #11452
- Preserve session extension identities #11420
- Bound local image reads in developer extension #11419
- Confine agent listing to source roots #11444
…