v1.49.0
aaif-goose/goosev1.49.0Sep 3, 2026by github-actions[bot]
AI Summary
A major release featuring desktop auto-updating, Linux ARM64 support, and extensive UI/UX improvements like background extension loading and interactive git indicators. Includes significant security hardening, new providers, and support for GPT-5.6.
Key Highlights
- Desktop application auto-updater
- Linux ARM64 desktop release packages
- Background extension loading for immediate CLI usability
- Title sessions by subject instead of workflow step
- Interactive git branch indicator in chat
- New providers: Opper, Databricks, TrustedRouter, and OpenCode Zen
- Extensive security hardening including tool allowlists and session isolation
New Features
- Auto-updater for desktop application
- Linux ARM64 desktop release packages
- Load extensions in the background
- Title sessions by subject
- Interactive git branch indicator
- on_failure block for PreToolUse hooks
- Web-search and browser-use built-in skills
- Model-native audio transcription provider
- Extension naming for --with-extension
- Auto-focus chat input on typing
- Collapse scheduled job sessions
- Select saved recipes for schedules
- Recent used models in model picker
- PreToolUseResult event and stable tool_call_id
- Sort configured providers to top
- OpenRouter session_id forwarding
- ACP thinking effort derivation
- GPT-5.6 follow-up support
- Pre-registered OAuth clients for extensions
- OTEL request params and metadata
- Declarative providers: Opper, Databricks, TrustedRouter, OpenCode Zen, Gondola, SayGM, Lynkr, PleumRouter
- Z.ai GLM-5.3 (replacing GLM-5.2)
- OpenAI GPT-5.6 via Bedrock
- Custom provider cost fields
Full Release Notes
## ✨ Features - Auto-updater for desktop application [#10614](https://github.com/aaif-goose/goose/pull/10614) - Linux ARM64 desktop release packages [#11518](https://github.com/aaif-goose/goose/pull/11518) - Load extensions in the background so the CLI prompt is immediately usable [#10403](https://github.com/aaif-goose/goose/pull/10403) - Title sessions by subject, not workflow step [#11135](https://github.com/aaif-goose/goose/pull/11135) - Interactive git branch indicator in chat bottom bar [#11290](https://github.com/aaif-goose/goose/pull/11290) - `on_failure` block for PreToolUse hooks [#11449](https://github.com/aaif-goose/goose/pull/11449) - Web-search and browser-use built-in skills [#11233](https://github.com/aaif-goose/goose/pull/11233) - Model-native audio transcription provider [#10589](https://github.com/aaif-goose/goose/pull/10589) - `--with-extension` can now name its extension [#11127](https://github.com/aaif-goose/goose/pull/11127) - Auto-focus chat input when user starts typing [#11184](https://github.com/aaif-goose/goose/pull/11184) - Collapse scheduled job sessions into accordion in chat history [#11265](https://github.com/aaif-goose/goose/pull/11265) - Select saved recipes when creating a schedule [#10892](https://github.com/aaif-goose/goose/pull/10892) - Show recent used models in chat footer model picker [#11097](https://github.com/aaif-goose/goose/pull/11097) - PreToolUseResult event and stable tool_call_id across tool lifecycle [#11120](https://github.com/aaif-goose/goose/pull/11120) - Sort configured providers to the top of the provider list [#11409](https://github.com/aaif-goose/goose/pull/11409) - OpenRouter session_id forwarding and app category header [#10868](https://github.com/aaif-goose/goose/pull/10868) - ACP thinking effort derivation and forwarding [#10949](https://github.com/aaif-goose/goose/pull/10949) - GPT-5.6 follow-up support for Codex and Responses API [#10460](https://github.com/aaif-goose/goose/pull/10460) - Pre-registered OAuth clients for streamable_http extensions [#11182](https://github.com/aaif-goose/goose/pull/11182) - OTEL request params, response metadata, tool call parity, and agent identification [#11261](https://github.com/aaif-goose/goose/pull/11261) ### New Providers - Opper as a declarative OpenAI-compatible provider [#11589](https://github.com/aaif-goose/goose/pull/11589) - Databricks Unity Catalog model services discovery [#11575](https://github.com/aaif-goose/goose/pull/11575) - TrustedRouter declarative provider [#11422](https://github.com/aaif-goose/goose/pull/11422) - OpenCode Zen gateway as a declarative provider [#10939](https://github.com/aaif-goose/goose/pull/10939) - Gondola as declarative OpenAI-compatible provider [#11421](https://github.com/aaif-goose/goose/pull/11421) - SayGM as declarative OpenAI-compatible provider [#11267](https://github.com/aaif-goose/goose/pull/11267) - Lynkr as declarative OpenAI-compatible provider [#11372](https://github.com/aaif-goose/goose/pull/11372) - PleumRouter declarative provider [#10479](https://github.com/aaif-goose/goose/pull/10479) - Z.ai GLM-5.3 (replacing GLM-5.2) [#11226](https://github.com/aaif-goose/goose/pull/11226) - OpenAI GPT-5.6 (sol/terra/luna) via Bedrock [#10502](https://github.com/aaif-goose/goose/pull/10502) - Custom provider cost fields for cost tracking [#11220](https://github.com/aaif-goose/goose/pull/11220) ## 🐛 Bug Fixes - Unify context limit resolution behind provider API [#11213](https://github.com/aaif-goose/goose/pull/11213) - Keep using valid MCP access tokens without a refresh token [#11324](https://github.com/aaif-goose/goose/pull/11324) - Provider save no longer overwrites stored config with defaults [#11517](https://github.com/aaif-goose/goose/pull/11517) - Deduplicate parallel tool-pair summaries [#11195](https://github.com/aaif-goose/goose/pull/11195) - Exclude Git metadata from project hints [#11148](https://github.com/aaif-goose/goose/pull/11148) - Honor remote working directory for new chats and allow typed paths [#11322](https://github.com/aaif-goose/goose/pull/11322) - Sanitize hidden Unicode in Bedrock tools [#11121](https://github.com/aaif-goose/goose/pull/11121) - Avoid sending images to non-vision capable models [#11496](https://github.com/aaif-goose/goose/pull/11496) - Reject cmd.exe commands containing newlines [#11537](https://github.com/aaif-goose/goose/pull/11537) - Honest compaction failure message and fast-fail when no tool responses exist [#10500](https://github.com/aaif-goose/goose/pull/10500) - Chat input freeze after opening model picker [#11525](https://github.com/aaif-goose/goose/pull/11525) - Bound non-streaming JSON responses [#11109](https://github.com/aaif-goose/goose/pull/11109) - Reject non-object response schemas in recipes [#11478](https://github.com/aaif-goose/goose/pull/11478) - Coalesce consecutive Thinking blocks in collect_stream [#11317](https://github.com/aaif-goose/goose/pull/11317) - Decouple source file and tool response limits [#11391](https://github.com/aaif-goose/goose/pull/11391) - Discover GGUF repos with non-standard filenames [#11005](https://github.com/aaif-goose/goose/pull/11005) - Flip select menus up when the window clips them [#11495](https://github.com/aaif-goose/goose/pull/11495) - Bedrock prefer HTTP bearer auth when configured [#11562](https://github.com/aaif-goose/goose/pull/11562) - MCP sampling for reasoning-first responses [#11092](https://github.com/aaif-goose/goose/pull/11092) - Keep recalled history agent-visible [#11490](https://github.com/aaif-goose/goose/pull/11490) - Fail closed on invalid default GCP credentials [#11363](https://github.com/aaif-goose/goose/pull/11363) - Bound handoff memo so long sessions stay resumable [#11204](https://github.com/aaif-goose/goose/pull/11204) - Goose unable to work with DeepSeek and Alibaba using OpenAI responses API [#11298](https://github.com/aaif-goose/goose/pull/11298) - Show tool inputs before approval [#10932](https://github.com/aaif-goose/goose/pull/10932) - Deduplicate enabled builtins [#11340](https://github.com/aaif-goose/goose/pull/11340) - Send explicit thinking disabled to adaptive Claude models [#11177](https://github.com/aaif-goose/goose/pull/11177) - Handle error code for context length exceeded [#11283](https://github.com/aaif-goose/goose/pull/11283) - Include required annotations field on replayed output_text items [#11263](https://github.com/aaif-goose/goose/pull/11263) - Isolate concurrent subagent notifications [#10772](https://github.com/aaif-goose/goose/pull/10772) - Validate recipe parameter values [#11234](https://github.com/aaif-goose/goose/pull/11234) - Re-enable minijinja builtins so documented recipe filters work [#11310](https://github.com/aaif-goose/goose/pull/11310) ### Security Fixes - Enforce per-turn model tool allowlists [#11426](https://github.com/aaif-goose/goose/pull/11426) - Stop exposing provider secret suffixes [#11476](https://github.com/aaif-goose/goose/pull/11476) - Restrict code mode callback output [#11471](https://github.com/aaif-goose/goose/pull/11471) - Restrict app management tools [#11470](https://github.com/aaif-goose/goose/pull/11470) - Preserve local inference message text [#11452](https://github.com/aaif-goose/goose/pull/11452) - Preserve session extension identities [#11420](https://github.com/aaif-goose/goose/pull/11420) - Bound local image reads in developer extension [#11419](https://github.com/aaif-goose/goose/pull/11419) - Confine agent listing to source roots [#11444](https://github.com/aaif-goose/goose/pull/11444) - Recognize Windows package runners [#11466](https://github.com/aaif-goose/goose/pull/11466) - Fail closed on malformed tool visibility [#11474](https://github.com/aaif-goose/goose/pull/11474) - Give permission denies precedence [#11477](https://github.com/aaif-goose/goose/pull/11477) - Confine recipe library writes [#11482](https://github.com/aaif-goose/goose/pull/11482) - Scope app events by extension [#11486](https://github.com/aaif-goose/goose/pull/11486) - Restrict project updates to visible sessions [#11487](https://github.com/aaif-goose/goose/pull/11487) - Reject symlinked check sources [#11489](https://github.com/aaif-goose/goose/pull/11489) - Honor plugin enablement for skills [#11439](https://github.com/aaif-goose/goose/pull/11439) - Protect system prompt transport in claude-code [#11441](https://github.com/aaif-goose/goose/pull/11441) - Bind ACP permissions to request generations [#11415](https://github.com/aaif-goose/goose/pull/11415) - Honor MCP tool model visibility in Code Mode [#11425](https://github.com/aaif-goose/goose/pull/11425) - Refuse symlink diagnostics outputs [#11398](https://github.com/aaif-goose/goose/pull/11398) - Serialize secret mutations [#11388](https://github.com/aaif-goose/goose/pull/11388) - Suppress sensitive OTLP traces [#11381](https://github.com/aaif-goose/goose/pull/11381) - Bound call graph traversal [#11193](https://github.com/aaif-goose/goose/pull/11193) - Fail closed on invalid Codex ACP mode [#11362](https://github.com/aaif-goose/goose/pull/11362) - Bind Foundry API keys to request origin [#11347](https://github.com/aaif-goose/goose/pull/11347) - Validate memory categories [#11191](https://github.com/aaif-goose/goose/pull/11191) - Bound recursive mention scans [#11228](https://github.com/aaif-goose/goose/pull/11228) - Fail closed on malformed app visibility [#11341](https://github.com/aaif-goose/goose/pull/11341) - Redact Telegram tokens from request errors [#11343](https://github.com/aaif-goose/goose/pull/11343) - Encode session navigation parameters [#11232](https://github.com/aaif-goose/goose/pull/11232) - Redact URLs in provider errors [#11230](https://github.com/aaif-goose/goose/pull/11230) - Confine temporary extraction cleanup [#11125](https://github.com/aaif-goose/goose/pull/11125) - Clear custom provider transition secrets [#11467](https://github.com/aaif-goose/goose/pull/11467) - Pin renderer ACP certificates [#11485](https://github.com/aaif-goose/goose/pull/11485) - Require fresh file parameter input [#11455](https://github.com/aaif-goose/goose/pull/11455) - Escape OAuth callback content [#11479](https://github.com/aaif-goose/goose/pull/11479) - Sanitize Unicode tags in MCP prompts [#11453](https://github.com/aaif-goose/goose/pull/11453) ## 🔧 Improvements - Improve long chat rendering performance [#11583](https://github.com/aaif-goose/goose/pull/11583) - Limit sessions before counting messages for performance [#11521](https://github.com/aaif-goose/goose/pull/11521) - Enforce locked Cargo dependencies in CI [#11560](https://github.com/aaif-goose/goose/pull/11560) - Move inference operation into goose-agent crate [#11294](https://github.com/aaif-goose/goose/pull/11294) - Make roaming an opt-in goose-cli feature (default-off) [#11516](https://github.com/aaif-goose/goose/pull/11516) - Improve ACP provider setup and unify setup metadata [#11100](https://github.com/aaif-goose/goose/pull/11100) - Create goose-agent crate with unrolled agent loop state machine [#11216](https://github.com/aaif-goose/goose/pull/11216) - Make unrolled loop state machine generic [#11139](https://github.com/aaif-goose/goose/pull/11139) - Compact with main session model, not fast model [#11255](https://github.com/aaif-goose/goose/pull/11255) - Add MCP conformance tests to goose CI [#10940](https://github.com/aaif-goose/goose/pull/10940) - Aura dark theme for Goose [#10283](https://github.com/aaif-goose/goose/pull/10283) - Bedrock routing table with Gemma 4 Mantle support [#10297](https://github.com/aaif-goose/goose/pull/10297) - Gate clear_thinking behind opt-in flag (Z.AI-only) [#10439](https://github.com/aaif-goose/goose/pull/10439) - Include working directory in stop hook context [#11112](https://github.com/aaif-goose/goose/pull/11112) - Keep stdio extensions alive across worker exits [#10364](https://github.com/aaif-goose/goose/pull/10364) - Include thinking tokens in Google usage output_tokens [#10354](https://github.com/aaif-goose/goose/pull/10354) - Give GOOSE_SUBAGENT_PROVIDER/MODEL priority over LLM-injected params [#9650](https://github.com/aaif-goose/goose/pull/9650) - Preserve extensions when adding MCP servers [#11339](https://github.com/aaif-goose/goose/pull/11339) - Preserve platform tool allowlists [#11369](https://github.com/aaif-goose/goose/pull/11369) - Make Gemini plugin installs transactional [#11303](https://github.com/aaif-goose/goose/pull/11303) ## 📚 Documentation - GDK language param in doc links [#11592](https://github.com/aaif-goose/goose/pull/11592) - Retire Recipe Cookbook security scanner [#11597](https://github.com/aaif-goose/goose/pull/11597) - Require issues before pull requests [#11565](https://github.com/aaif-goose/goose/pull/11565) - GDK API Reference nav item + deep-link anchors [#11564](https://github.com/aaif-goose/goose/pull/11564) - SDK API reference for Rust, Python, and Kotlin [#11251](https://github.com/aaif-goose/goose/pull/11251) - Correct Telegram gateway setup [#11527](https://github.com/aaif-goose/goose/pull/11527) - Keep GitHub comments concise [#11447](https://github.com/aaif-goose/goose/pull/11447)