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)