github aaif-goose/goose v1.48.0

3 hours ago

✨ Features

Providers

  • 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 a declarative OpenAI-compatible provider #11372
  • PleumRouter declarative provider #10479
  • Z.ai GLM-5.2 replaced with GLM-5.3 #11226
  • Custom provider cost fields drive cost tracking #11220
  • Model-native audio transcription provider #10589
  • OpenAI GPT-5.6 (sol/terra/luna) routing via AWS Bedrock #10502
  • GPT-5.6 follow-up support for Codex and Responses API #10460

Hooks

  • on_failure block for PreToolUse hooks #11449
  • PreToolUseResult event and stable tool_call_id across tool lifecycle #11120

Desktop & UI

  • Select saved recipes when creating a schedule #10892
  • Sort configured providers to the top of the provider list #11409
  • Collapse scheduled job sessions into accordion in chat history #11265
  • Auto-focus chat input when user starts typing #11184
  • Interactive git branch indicator in chat bottom bar #11290
  • Show recent used models in chat footer model picker #11097

CLI

  • --with-extension can now name its extension #11127
  • /new command to start a fresh session without restarting #10767

Skills & Extensions

  • Web-search and browser-use built-in skills #11233
  • Support pre-registered OAuth clients for streamable_http extensions #11182

ACP

  • Derive and forward thinking effort from the ACP harness #10949
  • Title new sessions from _meta.sessionTitle #10712
  • _goose/unstable/session/extensions/apply method #11081

Observability

  • OpenTelemetry request params, response metadata, tool call parity, and agent identification #11261
  • OpenRouter session_id forwarding and app category header #10868

Other

  • Blox run target for the ACP server #11423
  • Linux ARM64 desktop release packages #11518
  • Roaming as opt-in goose-cli feature #11516
  • MCP conformance tests in CI #10940

🐛 Bug Fixes

Security

  • Recognize Windows package runners #11466
  • Fail closed on malformed tool visibility #11474
  • Permission denies take precedence #11477
  • Clear custom provider transition secrets #11467
  • Require fresh file parameter input #11455
  • Escape OAuth callback content #11479
  • Sanitize Unicode tags in MCP prompts #11453
  • Honor plugin enablement for skills #11439
  • Honor MCP tool model visibility in Code Mode #11425
  • Suppress sensitive OTLP traces #11381
  • Fail closed on invalid default GCP credentials #11363
  • Bound call graph traversal #11193
  • Fail closed on invalid Codex ACP mode #11362
  • Validate memory categories #11191
  • Bound recursive mention scans #11228
  • Avoid predictable editor symlink #11188
  • Fail closed on malformed app visibility #11341
  • Encode session navigation parameters #11232
  • Redact URLs in provider errors #11230
  • Validate recipe parameter values #11234
  • Bind Foundry API keys to request origin #11347

Providers

  • Stop provider save from overwriting stored config with defaults #11517
  • Sanitize hidden Unicode in Bedrock tools #11121
  • Bound non-streaming JSON responses #11109
  • Inform user of clipboard copy and remove copilot auth retry on timeout #11160
  • Escape Gemini tool response ref keys in OpenRouter #11276
  • Estimate cost for Azure Foundry models via inferred catalog pricing #11264
  • Coalesce consecutive Thinking blocks in collect_stream #11317
  • Replace flat model list with routing table, add Gemma 4 Mantle support #10297
  • Include thinking tokens in Google usage output_tokens #10354
  • Send explicit thinking disabled to adaptive Claude models #11177
  • Include required annotations field on replayed output_text items #11263
  • Deprecated Gemini OAuth provider #11223
  • Stop paying the prompt-cache write premium on one-shot fast-model calls #11179
  • Classify byte-size request limit errors as context-length-exceeded #11173
  • Bound local image reads #11114
  • Map kimi_code provider name and pass correct provider to create_request #11130
  • Handle error code for context length exceeded #11283
  • DeepSeek and Alibaba compatibility with OpenAI responses API #11298

Desktop & UI

  • Honor remote working directory for new chats and allow typed paths #11322
  • Scope app events by extension #11486
  • Pin renderer ACP certificates #11485
  • Bind ACP permissions to request generations #11415
  • Chat input freeze after opening model picker #11525
  • Gate external URL protocols centrally #11311
  • Stop stale microphone test streams #11309
  • Prevent recipe parameter form from reloading the app on Enter #10522
  • Suppress extension loading toast when all extensions succeed #11016

CLI & Shell

  • Reject cmd.exe commands containing newlines #11537
  • Refuse symlink diagnostics outputs #11398
  • Deduplicate enabled builtins #11340
  • Avoid reading file params in recipe explain #11119
  • Honor provider overrides on session resume #10810

Core

  • Deduplicate parallel tool-pair summaries #11195
  • Exclude Git metadata from project hints #11148
  • Avoid sending images to non-vision capable models #11496
  • Keep recalled history agent-visible #11490
  • Honest compaction failure message and fast-fail when no tool responses exist #10500
  • Pass complete response to stop hooks #11366
  • Contain and bound skill supporting file reads #11342
  • Compact with the main session model, not the fast model #11255
  • Make Gemini plugin installs transactional #11303
  • Include working directory in stop hook context #11112
  • Re-enable minijinja builtins so documented recipe filters work #11310
  • Show tool inputs before approval #10932
  • Reject context commands for context-owning providers #11094
  • Bind deeplink recipe parameters to startup session #11123

ACP

  • Restrict project updates to visible sessions #11487
  • Seed provider handoff history #8941
  • Preserve tool result audience metadata #11375
  • Bound the handoff memo so long sessions stay resumable #11204
  • Return auth error for ACP provider from goose ACP server #11202
  • Ignore ACP provider generated title and use goose generated title #11197
  • Prevent large-session disconnects #11159

Recipes

  • Confine library writes #11482
  • Reject non-object response schemas #11478
  • Confine temporary extraction cleanup #11125

Extensions & MCP

  • Reject symlinked check sources #11489
  • Reject socket-backed MCP extensions for Codex #11304
  • Keep stdio extensions alive across worker exits #10364
  • Preserve extensions when adding MCP servers #11339
  • Preserve platform tool allowlists #11369

Other

  • Claude-Code: protect system prompt transport #11441
  • Fail fast when a recipe's structured response can't reach an ACP-bridged provider #11307
  • Fetch attestation bundles from bundle_url #10557
  • Contain REVIEW.md discovery #11367
  • Sanitize Pi imported output #10990
  • Honor RUST_LOG directives for OTEL logs #11360
  • Give GOOSE_SUBAGENT_PROVIDER/MODEL priority over LLM-injected params #9650
  • Respect ACP audience in bang-shell shortcut #11150
  • Redact Telegram tokens from request errors #11343
  • Isolate concurrent subagent notifications #10772
  • Serialize secret mutations #11388
  • Enforce secure OAuth token transport #11183
  • Skip local extension spawn when provider manages own context #11203
  • Decouple source file and tool response limits #11391
  • Bound action-required stream admission #11113
  • Bound partial thinking tags #11108
  • Enforce review check tool policy #11128
  • Secure Copilot API endpoint transport #11129
  • Remove goose tui command #11484
  • Update SQLite to 3.51.3 #11157
  • Narrow desktop file read IPC #11149
  • Render visualizer data as text #11186
  • Bound XLSX range reads #11190

🔧 Improvements

  • Session listing performance: limit sessions before counting messages #11521
  • Keep turn-context out of the OpenAI-compatible prefix cache #10937
  • Parallelize provider resolution and eagerly init SQLite pool #8899
  • Deduplicate _goose/providers/list RPC call at startup #8873
  • ACP provider setup and unified setup metadata #11100
  • Disable thinking for tool call labels #11207
  • Canonicalize mangled tool names before permission inspection #10285
  • Gate clear_thinking behind an opt-in flag (Z.AI-only) #10439
  • Scan uvx from selectors for malware #10988
  • Aura dark theme for Goose #10283
  • Unrolled agent loop state machine #11216
  • Generic unrolled loop state machine #11139
  • Retry ACP handoff context after failed prompts #10660
  • Use rmcp ContentBlock in goose-sdk UniFFI #11210
  • Upgrade ACP SDK to 1.3.0 #11218
  • Mergeable configs and cleanup #8378
  • Move mlx deps under macOS for goose-local-inference #11328
  • Share axum-server via workspace.dependencies #11326
  • Remove automation_script, web_scrape, and cache tools from computercontroller #11198
  • Agent provider using explicit type states #8879

📚 Documentation

  • SDK API reference for Rust, Python, and Kotlin #11251
  • Correct Telegram gateway setup #11527
  • Keep GitHub comments concise #11447
  • Improve readability in AGENTS.md #8979

Don't miss a new goose release

NewReleases is sending notifications on new releases.