goose v1.25.0 is here
✨ Features
- macOS sandboxing — Goose Desktop now runs in a macOS sandbox for enhanced security [#7197](#7197)
- Unified summon extension — Replaced subagent and skills with a single, unified summon extension [#6964](#6964)
- MCP Apps UI integration — Integrated
AppRendererfrom@mcp-ui/clientSDK with fallback request handler support [#7013](#7013) [#7208](#7208) - Edit recipes from the GUI — Model and extensions of a recipe can now be edited directly in the desktop app [#6804](#6804)
- Load provider/model from recipe config — Recipes can now specify their own provider and model [#6884](#6884)
- Claude Code streaming support — Streaming output for the Claude Code CLI provider [#6833](#6833)
- Claude Code dynamic model switching — Dynamic model listing and mid-session model switching for Claude Code [#7120](#7120)
- Gemini CLI stream-json and session reuse — Gemini CLI provider now uses stream-json output and re-uses sessions [#7118](#7118)
- MCP support for agentic CLI providers — MCP extensions now work with agentic CLI providers (Claude Code, Codex, Gemini CLI) [#6972](#6972)
- Reasoning content in API — Expose
reasoning_contentin the API for reasoning models [#6322](#6322) - Gemini OpenAI compat extra field — Support for the
extrafield in chat completion tool calls for Gemini OpenAI compatibility [#6184](#6184) - OTel standard env var support — Respect standard OpenTelemetry environment variables for exporter selection [#7144](#7144)
- ACP model selection — Model selection support for
session/newandsession/set_modelendpoints [#7112](#7112) - Override bat themes — Allow overriding default bat syntax highlighting themes using environment variables [#7140](#7140)
AGENT=gooseenv variable — SetAGENT=gooseenvironment variable for cross-tool compatibility [#7017](#7017)- Manpage generation — Automatic manpage generation for goose-cli [#6980](#6980)
- Top Of Mind (tom) extension enabled by default — The tom platform extension is now on by default [#7111](#7111)
- Standalone Goose Apps filtering — Apps page now filters to only show standalone Goose Apps [#6811](#6811)
- MCP Apps UI extension capability — Upgraded rmcp to 0.15.0 and advertise MCP Apps UI extension capability [#6927](#6927)
- Custom headers for OpenAI-compatible providers — Desktop now supports custom headers for custom OpenAI-compatible providers [#6681](#6681)
- SLSA build provenance — Release workflows now include SLSA build provenance attestations [#7097](#7097)
🐛 Bug Fixes
- Subrecipe relative path resolution with summon [#7295](#7295)
- Extension selector not displaying the correct enabled extensions [#7290](#7290)
reasoning_contenthandling for Kimi/thinking models [#7252](#7252)- Shell-escaping special characters except quotes [#7242](#7242)
- Dynamic port for Tetrate auth callback server [#7228](#7228)
- Fork session not working correctly [#7219](#7219)
- Deprecated skills extension now ignored gracefully [#7139](#7139)
- Filetype detection returning PLAIN_TEXT instead of HTML [#6885](#6885)
- Concurrent tool execution within the same MCP extension [#7202](#7202)
- Missing arguments in MCP tool calls causing GUI crash [#7143](#7143)
- Save and run recipe not working [#7186](#7186)
- Speech-to-text local functionality [#7181](#7181)
- MCP resource content decoding [#7155](#7155)
- Provider custom headers configuration [#7157](#7157)
- Keyring fallback now handled as success [#7177](#7177)
- Panic replaced with proper error handling in
get_tokenizer[#7175](#7175) - Text editor view broken [#7167](#7167)
- Assistant messages with
tool_callsnow always include content field [#7076](#7076) - GCP Vertex AI model mapping handled correctly [#6836](#6836)
- Missing content from Langfuse traces [#7135](#7135)
- Extension selector syncing issues [#7133](#7133)
- Per-session Agent for model isolation and
load_sessionrestore (ACP) [#7115](#7115) - Claude Code defensive coding improvements for model switching [#7131](#7131)
- Isolated claude-code sessions via stream-json
session_id[#7108](#7108) - Duplicated output in Code Mode by filtering content by audience [#7117](#7117)
- Strip empty extensions array in deeplinks [#7096](#7096)
- Goose Desktop missing Calendar and Reminders entitlements [#7100](#7100)
- Flatpak icon [#7154](#7154)
- Ask-ai bot hitting tool call limits [#7162](#7162)
- OTel monotonic_counter prefix and temporality env var support [#7234](#7234)
- Node installed in goose dir [#7267](#7267)
- Windows bundle random failure and optimised canary build [#7105](#7105)
🔧 Improvements
- Streaming markdown rendering [#7233](#7233)
- Improved compaction messages for better post-compaction agent behavior [#7259](#7259)
- Smaller system prompt for reduced token usage [#6991](#6991)
- Static Regex compilation for performance [#7205](#7205)
- Show directory in window title [#7138](#7138)
- Improved error message logging from Electron [#7130](#7130)
- Updated ElevenLabs API module and remove button UX [#6781](#6781)
- Inline worklet source for audio processing [#7128](#7128)
- PATH detection restored in developer extension [#7161](#7161)
- Platform extensions moved into their own folder [#7210](#7210)
- Grouped dependencies in root
Cargo.toml[#6948](#6948) - Switched
jsonwebtokento useaws-lc-rs[#7189](#7189) - Session working directory now used correctly [#7285](#7285)
- Diagnostic files copying support [#7209](#7209)
- No-window flags expanded for background processes [#7122](#7122)
- Upgraded npm packages for latest security updates [#7183](#7183)
📖 Documentation
- White label guide [#6857](#6857)
- Standalone MCP apps and apps extension [#6791](#6791)
- Reasoning effort levels for Codex provider [#6798](#6798)
- Codex subscription support [#7104](#7104)
- Keyring fallback to
secrets.yaml[#7165](#7165) - GCP Vertex AI org policy filtering [#7125](#7125)
- Tool output optimization guide [#7109](#7109)
- Pin version in CI/CD docs [#7168](#7168)
- Removed LLM Usage admonitions [#7227](#7227)
- Skills Marketplace UI improvements [#7158](#7158)
- "One shot prompting is dead" blog post [#7113](#7113)
- Speech-to-text testing instructions [#7185](#7185)