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