✨ 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
- Recognize Windows package runners #11466
- Fail closed on malformed tool visibility #11474
- Give permission denies precedence #11477
- Confine recipe library writes #11482
- Scope app events by extension #11486
- Restrict project updates to visible sessions #11487
- Reject symlinked check sources #11489
- Honor plugin enablement for skills #11439
- Protect system prompt transport in claude-code #11441
- Bind ACP permissions to request generations #11415
- Honor MCP tool model visibility in Code Mode #11425
- Refuse symlink diagnostics outputs #11398
- Serialize secret mutations #11388
- Suppress sensitive OTLP traces #11381
- Bound call graph traversal #11193
- Fail closed on invalid Codex ACP mode #11362
- Bind Foundry API keys to request origin #11347
- Validate memory categories #11191
- Bound recursive mention scans #11228
- Fail closed on malformed app visibility #11341
- Redact Telegram tokens from request errors #11343
- Encode session navigation parameters #11232
- Redact URLs in provider errors #11230
- Confine temporary extraction cleanup #11125
- Clear custom provider transition secrets #11467
- Pin renderer ACP certificates #11485
- Require fresh file parameter input #11455
- Escape OAuth callback content #11479
- Sanitize Unicode tags in MCP prompts #11453
🔧 Improvements
- Improve long chat rendering performance #11583
- Limit sessions before counting messages for performance #11521
- Enforce locked Cargo dependencies in CI #11560
- Move inference operation into goose-agent crate #11294
- Make roaming an opt-in goose-cli feature (default-off) #11516
- Improve ACP provider setup and unify setup metadata #11100
- Create goose-agent crate with unrolled agent loop state machine #11216
- Make unrolled loop state machine generic #11139
- Compact with main session model, not fast model #11255
- Add MCP conformance tests to goose CI #10940
- Aura dark theme for Goose #10283
- Bedrock routing table with Gemma 4 Mantle support #10297
- Gate clear_thinking behind opt-in flag (Z.AI-only) #10439
- Include working directory in stop hook context #11112
- Keep stdio extensions alive across worker exits #10364
- Include thinking tokens in Google usage output_tokens #10354
- Give GOOSE_SUBAGENT_PROVIDER/MODEL priority over LLM-injected params #9650
- Preserve extensions when adding MCP servers #11339
- Preserve platform tool allowlists #11369
- Make Gemini plugin installs transactional #11303
📚 Documentation
- GDK language param in doc links #11592
- Retire Recipe Cookbook security scanner #11597
- Require issues before pull requests #11565
- GDK API Reference nav item + deep-link anchors #11564
- SDK API reference for Rust, Python, and Kotlin #11251
- Correct Telegram gateway setup #11527
- Keep GitHub comments concise #11447