v1.40.0
stackblitz/bolt.newv1.40.0Jul 2, 2026by github-actions[bot]
AI Summary
This release focuses on broad internationalization for the desktop app, extensive new AI provider integrations (declarative providers), and CLI enhancements including slash commands and TUI features.
Key Highlights
- Language selection and new desktop locales (French, German, Korean, Japanese, etc.)
- New slash commands (`/status`, `/model`, `/goal`) and `goose review` CLI command
- New declarative AI providers (Together AI, Vercel AI Gateway, Scaleway, etc.)
- New extensibility features including Hooks system and MLX models support
- TUI command and diff viewer support
New Features
- Language selection in desktop app
- New desktop locales (French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, Traditional Chinese, Korean, Japanese, Spanish, Hindi)
- Slash commands (`/status`, `/model`, `/goal`)
- Local code review command
- Peek mode for async background tasks
- Context parameter and working_dir override
- GLM-5.2 support
- Together AI declarative provider
- Vercel AI Gateway
- Scaleway provider
- Databricks AI Gateway provider
- Hooks system for extensibility
- MLX models support
- MCP extensions support
- Nushell terminal support
- TUI command and diff viewer
- Encrypted Nostr session sharing
Full Release Notes
## ✨ Features - Language selection in desktop app [#9405](https://github.com/aaif-goose/goose/pull/9405) - French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, Traditional Chinese desktop locales [#10072](https://github.com/aaif-goose/goose/pull/10072) - Korean localization for desktop app [#9856](https://github.com/aaif-goose/goose/pull/9856) - Japanese locale support [#9768](https://github.com/aaif-goose/goose/pull/9768) - Spanish (es) locale support [#9833](https://github.com/aaif-goose/goose/pull/9833) - Hindi desktop locale [#9733](https://github.com/aaif-goose/goose/pull/9733) - `/status` slash command in CLI [#9845](https://github.com/aaif-goose/goose/pull/9845) - `/model` slash command for session model switching [#8747](https://github.com/aaif-goose/goose/pull/8747) - `/goal` command for agent self-evaluation before finishing [#9069](https://github.com/aaif-goose/goose/pull/9069) - `goose review` local code review command [#9114](https://github.com/aaif-goose/goose/pull/9114) - Peek mode for async background tasks in summon [#9519](https://github.com/aaif-goose/goose/pull/9519) - Context parameter and working_dir override for delegate tasks [#9518](https://github.com/aaif-goose/goose/pull/9518) [#9520](https://github.com/aaif-goose/goose/pull/9520) - GLM-5.2 support [#9967](https://github.com/aaif-goose/goose/pull/9967) - Together AI declarative provider [#9545](https://github.com/aaif-goose/goose/pull/9545) - EmpirioLabs as declarative OpenAI-compatible provider [#9771](https://github.com/aaif-goose/goose/pull/9771) - OrcaRouter as declarative OpenAI-compatible provider [#9515](https://github.com/aaif-goose/goose/pull/9515) - NEAR AI Cloud provider [#9352](https://github.com/aaif-goose/goose/pull/9352) - Perplexity as declarative OpenAI-compatible provider [#9324](https://github.com/aaif-goose/goose/pull/9324) - Alibaba (Qwen via DashScope) declarative provider [#9443](https://github.com/aaif-goose/goose/pull/9443) - Databricks AI Gateway provider [#9274](https://github.com/aaif-goose/goose/pull/9274) - Scaleway provider [#9254](https://github.com/aaif-goose/goose/pull/9254) - Vercel AI Gateway [#9144](https://github.com/aaif-goose/goose/pull/9144) - xAI SuperGrok OAuth subscription provider [#9420](https://github.com/aaif-goose/goose/pull/9420) - OpenAI GPT models via AWS Bedrock mantle endpoint [#9707](https://github.com/aaif-goose/goose/pull/9707) - Azure Entra ID bearer token auth via AZURE_OPENAI_AD_TOKEN [#9716](https://github.com/aaif-goose/goose/pull/9716) - MLX models support for local inference provider [#9154](https://github.com/aaif-goose/goose/pull/9154) - Streamable HTTP support for deeplink generator [#9954](https://github.com/aaif-goose/goose/pull/9954) - Global hints loading from ~/.agents/AGENTS.md [#9736](https://github.com/aaif-goose/goose/pull/9736) - Unified thinking effort control across all providers [#9242](https://github.com/aaif-goose/goose/pull/9242) - Canonical thinking modes [#9743](https://github.com/aaif-goose/goose/pull/9743) - Hooks system for extensibility [#9093](https://github.com/aaif-goose/goose/pull/9093) - PreToolUse denial in hooks [#9304](https://github.com/aaif-goose/goose/pull/9304) - Honor blocking Stop hook decisions [#9468](https://github.com/aaif-goose/goose/pull/9468) - Option to disable automatic update downloads [#9872](https://github.com/aaif-goose/goose/pull/9872) - Track cache tokens for accurate cost reporting [#9752](https://github.com/aaif-goose/goose/pull/9752) - Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE [#9256](https://github.com/aaif-goose/goose/pull/9256) - Configurable MAX_CODE_BLOCK_LINES via env vars [#9301](https://github.com/aaif-goose/goose/pull/9301) - GOOSE_FAST_MODEL env var support [#9296](https://github.com/aaif-goose/goose/pull/9296) - Hugging Face OAuth support with auth tab in settings [#9552](https://github.com/aaif-goose/goose/pull/9552) - Chat history search in navigation panel [#8448](https://github.com/aaif-goose/goose/pull/8448) - Import sessions [#9474](https://github.com/aaif-goose/goose/pull/9474) - View model interactions [#9806](https://github.com/aaif-goose/goose/pull/9806) - View JSON content [#9678](https://github.com/aaif-goose/goose/pull/9678) - Image read tool [#9607](https://github.com/aaif-goose/goose/pull/9607) - goose://new-session deep link [#9196](https://github.com/aaif-goose/goose/pull/9196) - goose://resume session deep link [#9343](https://github.com/aaif-goose/goose/pull/9343) - Initial prompt with goose://new-session [#9427](https://github.com/aaif-goose/goose/pull/9427) - MCP extensions support in open plugins [#9471](https://github.com/aaif-goose/goose/pull/9471) - Nushell terminal and completion support [#8628](https://github.com/aaif-goose/goose/pull/8628) - TUI command on goose-cli [#9385](https://github.com/aaif-goose/goose/pull/9385) - TUI diff viewer [#9260](https://github.com/aaif-goose/goose/pull/9260) - Unified OTLP logging schema for cross-tool detection [#9713](https://github.com/aaif-goose/goose/pull/9713) - Prompt injection mitigation enabled by default for internal users [#9612](https://github.com/aaif-goose/goose/pull/9612) - Encrypted Nostr session sharing [#8922](https://github.com/aaif-goose/goose/pull/8922) - Quarterly option for scheduler [#9076](https://github.com/aaif-goose/goose/pull/9076) - Optional --parameters for scheduled recipes [#8741](https://github.com/aaif-goose/goose/pull/8741) - Worktree-aware directory switcher [#8450](https://github.com/aaif-goose/goose/pull/8450) - Harbor eval runner [#9138](https://github.com/aaif-goose/goose/pull/9138) - Linux musl CLI builds [#9240](https://github.com/aaif-goose/goose/pull/9240) ## 🐛 Bug Fixes - Mac auto-update config seeding [#10132](https://github.com/aaif-goose/goose/pull/10132) - Use async reqwest client so OTLP export works in `goose serve` mode [#10100](https://github.com/aaif-goose/goose/pull/10100) - Reject non-object tool-call arguments instead of panicking [#9832](https://github.com/aaif-goose/goose/pull/9832) - Save /edit prompts to history [#10011](https://github.com/aaif-goose/goose/pull/10011) - Use session.message_count for schedule sessions listing [#10026](https://github.com/aaif-goose/goose/pull/10026) - Sync session store after provider and model update [#10060](https://github.com/aaif-goose/goose/pull/10060) - Buffer thinking across stream chunks for DeepSeek/Kimi tool calls [#9704](https://github.com/aaif-goose/goose/pull/9704) - Surface actionable errors for truncated tool-call arguments [#9946](https://github.com/aaif-goose/goose/pull/9946) - Show optimistic toggle state when disabling an extension [#9882](https://github.com/aaif-goose/goose/pull/9882) - Do not pass temperature to ChatGPT Codex provider [#9931](https://github.com/aaif-goose/goose/pull/9931) - Resolve databricks_v2 pricing and surface cost in standard usage update [#9925](https://github.com/aaif-goose/goose/pull/9925) - Activate hermit on macOS so STDIO extensions resolve node [#9482](https://github.com/aaif-goose/goose/pull/9482) - Autovisualiser: accept JSON-encoded string for the data parameter [#9838](https://github.com/aaif-goose/goose/pull/9838) - Developer/read_image: send a User-Agent on URL image fetches [#9927](https://github.com/aaif-goose/goose/pull/9927) - Start a turn when /goal or /grind is set [#9801](https://github.com/aaif-goose/goose/pull/9801) - Pass thinking config to Bedrock Anthropic models [#9794](https://github.com/aaif-goose/goose/pull/9794) - Preserve Windows backslash paths in custom extension command [#9741](https://github.com/aaif-goose/goose/pull/9741) - Custom OpenAI provider dropping port when URL scheme is omitted [#9730](https://github.com/aaif-goose/goose/pull/9730) - ACP cancel race condition [#9804](https://github.com/aaif-goose/goose/pull/9804) - Removed window goosed when closing window [#9818](https://github.com/aaif-goose/goose/pull/9818) - Context exceeded checker more precise [#9831](https://github.com/aaif-goose/goose/pull/9831) - Inherit login-shell PATH in spawned subagents [#9737](https://github.com/aaif-goose/goose/pull/9737) - Accept string values for GOOSE_CONTEXT_LIMIT [#9738](https://github.com/aaif-goose/goose/pull/9738) - Clear rejected OAuth credentials after refresh [#9694](https://github.com/aaif-goose/goose/pull/9694) - Keep extended thinking within the Anthropic output cap [#9814](https://github.com/aaif-goose/goose/pull/9814) - RPM build-id links disabled [#9671](https://github.com/aaif-goose/goose/pull/9671) - Preserve custom API path in base_url derivation for OpenAI [#9649](https://github.com/aaif-goose/goose/pull/9649) - Handle resume deep links [#9298](https://github.com/aaif-goose/goose/pull/9298) - Repair PATH for plugin hook commands [#9615](https://github.com/aaif-goose/goose/pull/9615) - Restore Cmd/Ctrl+T new chat shortcut [#9614](https://github.com/aaif-goose/goose/pull/9614) - Lead with extension description, shorten HTTP/SSE transport label [#9653](https://github.com/aaif-goose/goose/pull/9653) - Mention menu icon to open the sidebar [#9643](https://github.com/aaif-goose/goose/pull/9643) - Dedupe React to prevent multiple instances in renderer [#9631](https://github.com/aaif-goose/goose/pull/9631) - Hermit cleanup in uvx and jbang scripts [#9616](https://github.com/aaif-goose/goose/pull/9616) - Use blocking OTLP HTTP exporter [#9599](https://github.com/aaif-goose/goose/pull/9599) - Fall back to default provider when resuming session with unavailable provider [#9547](https://github.com/aaif-goose/goose/pull/9547) - Provide Tokio runtime for OTLP HTTP exporter batch thread [#9541](https://github.com/aaif-goose/goose/pull/9541) - Read meta.n_ctx from /v1/models to fix context limit for local servers [#9530](https://github.com/aaif-goose/goose/pull/9530) - Align session history scrollbar with window edge [#9601](https://github.com/aaif-goose/goose/pull/9601) - Refresh session name in sidebar after rename [#9543](https://github.com/aaif-goose/goose/pull/9543) - Show resolved skill supporting file paths [#9584](https://github.com/aaif-goose/goose/pull/9584) - Implement real streaming via Bedrock ConverseStream API [#9579](https://github.com/aaif-goose/goose/pull/9579) - Record OpenAI-native cached_tokens in usage metering [#9829](https://github.com/aaif-goose/goose/pull/9829) - Override API URL option for Moonshot provider [#9819](https://github.com/aaif-goose/goose/pull/9819) - Detect image paths with spaces [#9387](https://github.com/aaif-goose/goose/pull/9387) - Restore new chat shortcut navigation [#9528](https://github.com/aaif-goose/goose/pull/9528) - Evict stale completed tasks to prevent unbounded memory growth [#9514](https://github.com/aaif-goose/goose/pull/9514) - OAuth callback timeout instead of hanging in WSL [#9536](https://github.com/aaif-goose/goose/pull/9536) - Warn on unmatched extension names in delegate [#9513](https://github.com/aaif-goose/goose/pull/9513) - Deleting recently created session and creating new shows deleted session's content [#9351](https://github.com/aaif-goose/goose/pull/9351) - Close modal when canceling recipe parameter form [#9195](https://github.com/aaif-goose/goose/pull/9195) - Ensure tool request timestamp precedes tool response timestamp [#9462](https://github.com/aaif-goose/goose/pull/9462) - Correctly map ollama_cloud to canonical provider [#9639](https://github.com/aaif-goose/goose/pull/9639) - Incorrect max tokens values for groq provider [#9790](https://github.com/aaif-goose/goose/pull/9790) - Mark stream decode errors retryable [#9723](https://github.com/aaif-goose/goose/pull/9723) - Classify Bedrock ValidationException as ExecutionError [#9735](https://github.com/aaif-goose/goose/pull/9735) - Page through all Databricks AI Gateway v2 endpoints when listing models [#9753](https://github.com/aaif-goose/goose/pull/9753) - Preserve unparseable extension entries during config refresh [#9439](https://github.com/aaif-goose/goose/pull/9439) - Surface Anthropic stream refusals as visible errors [#9724](https://github.com/aaif-goose/goose/pull/9724) - Skip non-recipe project config files in summon [#9808](https://github.com/aaif-goose/goose/pull/9808) - Dedup duplicate tool-call ids within a turn [#9792](https://github.com/aaif-goose/goose/pull/9792) - Resolve bundled extensions from discovery [#9759](https://github.com/aaif-goose/goose/pull/9759) - Include agentInfo in ACP initialize response [#9765](https://github.com/aaif-goose/goose/pull/9765) - Keep extensions icon visible after switching sessions [#9787](https://github.com/aaif-goose/goose/pull/9787) - Use media marker parts for vision prompts in local-inference [#9452](https://github.com/aaif-goose/goose/pull/9452) - Make azure api-version query param optional [#9221](https://github.com/aaif-goose/goose/pull/9221) - Preserve pending env vars in Add Extension form [#9285](https://github.com/aaif-goose/goose/pull/9285) - Tolerate missing responses output [#9449](https://github.com/aaif-goose/goose/pull/9449) - Stop main window growing taller on every launch [#9409](https://github.com/aaif-goose/goose/pull/9409) - Serialize per-session agent creation to stop duplicate MCP init [#9357](https://github.com/aaif-goose/goose/pull/9357) - Respect GOOSE_MAX_TURNS in gateway sessions [#9354](https://github.com/aaif-goose/goose/pull/9354) - Send empty object instead of null for Anthropic tool_use input [#9355](https://github.com/aaif-goose/goose/pull/9355) - Use context limit from /model/info for LiteLLM custom models [#9303](https://github.com/aaif-goose/goose/pull/9303) - Skip OTLP signals when protocol=grpc to avoid background-thread panic [#9512](https://github.com/aaif-goose/goose/pull/9512) - Forward ACP server context window size to clients [#9455](https://github.com/aaif-goose/goose/pull/9455) - Refresh provider list in Switch Models picker [#9408](https://github.com/aaif-goose/goose/pull/9408) - Start new chat in current window from recipe param modal [#9422](https://github.com/aaif-goose/goose/pull/9422) - Use refreshed gcloud token after reauth (retry Vertex AI on 401/403) [#9849](https://github.com/aaif-goose/goose/pull/9849) - Set TCP_USER_TIMEOUT on streamable HTTP clients [#9207](https://github.com/aaif-goose/goose/pull/9207) - Activate custom provider after adding via configure [#9213](https://github.com/aaif-goose/goose/pull/9213) - Reduce excessive MISSING_TRANSLATION warnings for fallback locales [#9294](https://github.com/aaif-goose/goose/pull/9294) - Eliminate cross-window deep link contamination [#9273](https://github.com/aaif-goose/goose/pull/9273) - Improve Telegram gateway error reporting and connection reliability [#9223](https://github.com/aaif-goose/goose/pull/9223) - Enable VT processing on Windows Console Host [#9248](https://github.com/aaif-goose/goose/pull/9248) - Zero out cost for local providers (ollama, local) [#9219](https://github.com/aaif-goose/goose/pull/9219) - Autovisualiser: use appInfo instead of clientInfo in MCP Apps init handshake [#9249](https://github.com/aaif-goose/goose/pull/9249) - Use mkdir -p for self-test workspace initialization [#9247](https://github.com/aaif-goose/goose/pull/9247) - Show tool name in approval prompt [#9216](https://github.com/aaif-goose/goose/pull/9216) - Resolve Azure CLI on Windows by using az.cmd [#9215](https://github.com/aaif-goose/goose/pull/9215) - Handle non-interactive terminal in goose configure on Windows [#9214](https://github.com/aaif-goose/goose/pull/9214) - Persist accumulated cost in session DB to survive reload [#9191](https://github.com/aaif-goose/goose/pull/9191) - Prevent tool-use marker leakage in toolshim output [#8310](https://github.com/aaif-goose/goose/pull/8310) - Re-apply canonical limits when delegate overrides model [#9183](https://github.com/aaif-goose/goose/pull/9183) - Remove hard-coded React alias that points to wrong location [#9842](https://github.com/aaif-goose/goose/pull/9842) ## 🔧 Improvements - Keep turn-context out of the Anthropic prefix cache [#10030](https://github.com/aaif-goose/goose/pull/10030) - Disable extended thinking for fast-model operations [#9815](https://github.com/aaif-goose/goose/pull/9815) - Support streamed tool calls without indexes [#10023](https://github.com/aaif-goose/goose/pull/10023) - Diagnostics migrated to JSON report [#9964](https://github.com/aaif-goose/goose/pull/9964) - Route MCP elicitations through tool streams [#9943](https://github.com/aaif-goose/goose/pull/9943) - Propagate elicitation decline and cancel actions end-to-end [#9437](https://github.com/aaif-goose/goose/pull/9437) - Allow unlisted models in search [#9933](https://github.com/aaif-goose/goose/pull/9933) - Sanitize extension environment maps [#9884](https://github.com/aaif-goose/goose/pull/9884) - Drop debug info for dependencies in dev profile [#9843](https://github.com/aaif-goose/goose/pull/9843) - Databricks responses API support check [#9347](https://github.com/aaif-goose/goose/pull/9347) - Open Model Gym output dir configurable [#9789](https://github.com/aaif-goose/goose/pull/9789) - Per-agent timeout configurable (GYM_AGENT_TIMEOUT) [#9791](https://github.com/aaif-goose/goose/pull/9791) - Session name as source of truth for displayed session titles [#9841](https://github.com/aaif-goose/goose/pull/9841) - Stricter GGUF requirements with auto detection of tool calling support [#9442](https://github.com/aaif-goose/goose/pull/9442) - Prefer goose aliases for Databricks v2 inventory [#9430](https://github.com/aaif-goose/goose/pull/9430) - Build summon instructions per turn [#9329](https://github.com/aaif-goose/goose/pull/9329) - ACP session list pagination [#9199](https://github.com/aaif-goose/goose/pull/9199) - Structured per-provider config block, non-destructive provider switching [#8977](https://github.com/aaif-goose/goose/pull/8977) - Emit trace_output as span attribute instead of event [#9255](https://github.com/aaif-goose/goose/pull/9255) - Flush OTLP traces reliably on exit with configurable timeout [#9228](https://github.com/aaif-goose/goose/pull/9228) - Proactive OAuth token refresh to avoid re-auth on every session [#8386](https://github.com/aaif-goose/goose/pull/8386) - Better parsing of pasted HTML as markdown [#9190](https://github.com/aaif-goose/goose/pull/9190) - Preserve thinking content for providers that require it [#8857](https://github.com/aaif-goose/goose/pull/8857) - Dynamically refresh skill instructions each turn [#9217](https://github.com/aaif-goose/goose/pull/9217) - GOOSE_OAUTH_CALLBACK_PORT support for stable OAuth redirect_uri [#9209](https://github.com/aaif-goose/goose/pull/9209) - Honor Retry-After on 429 responses [#9161](https://github.com/aaif-goose/goose/pull/9161) - Coalesce streaming Thinking deltas [#9162](https://github.com/aaif-goose/goose/pull/9162) - Strip chain-of-thought markers from custom provider output [#8635](https://github.com/aaif-goose/goose/pull/8635) - Use LRU cache for token counting [#9586](https://github.com/aaif-goose/goose/pull/9586) - Replace review subprocess timeout with turn limits [#9571](https://github.com/aaif-goose/goose/pull/9571) - Opt-in ACP last message snippets [#9798](https://github.com/aaif-goose/goose/pull/9798) - Expose raw provider supported models over ACP [#9475](https://github.com/aaif-goose/goose/pull/9475) - CLI to list skills with token counts [#9326](https://github.com/aaif-goose/goose/pull/9326) - Include request URL in provider error messages [#9232](https://github.com/aaif-goose/goose/pull/9232) - Surface resolved Databricks model metadata [#9206](https://github.com/aaif-goose/goose/pull/9206) - Ensure parallel tool image responses don't interleave for Databricks [#9241](https://github.com/aaif-goose/goose/pull/9241) - Slash commands (built-in, skill, recipe) in ACP server [#9238](https://github.com/aaif-goose/goose/pull/9238) - Open-plugins generalization + skills [#9112](https://github.com/aaif-goose/goose/pull/9112) - Use plain '> ' prompt instead of goose emoji [#9305](https://github.com/aaif-goose/goose/pull/9305) ## 📚 Documentation - Name the message field in the hooks payload guide [#9913](https://github.com/aaif-goose/goose/pull/9913) - Custom agents guide [#9293](https://github.com/aaif-goose/goose/pull/9293) - Correct custom agents guide [#9947](https://github.com/aaif-goose/goose/pull/9947) - Add guide for connecting goose Desktop to a remote goosed server [#9275](https://github.com/aaif-goose/goose/pull/9275) - Hooks guide [#9288](https://github.com/aaif-goose/goose/pull/9288) - Blog post for hooks feature [#9227](https://github.com/aaif-goose/goose/pull/9227) - Document summon extension requirement for delegate and load tools [#9231](https://github.com/aaif-goose/goose/pull/9231) - ACP clients documentation update [#9772](https://github.com/aaif-goose/goose/pull/9772) - AAIF migration blog post [#9866](https://github.com/aaif-goose/goose/pull/9866) - Self-improving agents blog post [#9846](https://github.com/aaif-goose/goose/pull/9846) - Orchestrating with goose blog post [#9104](https://github.com/aaif-goose/goose/pull/9104) - Goose with peekaboo blog post [#8884](https://github.com/aaif-goose/goose/pull/8884) - Built-in Local Inference blog post [#8808](https://github.com/aaif-goose/goose/pull/8808) - MiniMax and office QA benchmark findings blog post [#8984](https://github.com/aaif-goose/goose/pull/8984) - Scaleway provider documentation [#9423](https://github.com/aaif-goose/goose/pull/9423) - SaladCloud AI Gateway documentation [#9253](https://github.com/aaif-goose/goose/pull/9253) - Scholar Sidekick tutorial page [#9477](https://github.com/aaif-goose/goose/pull/9477) - Documentation reorganization [#9310](https://github.com/aaif-goose/goose/pull/9310)