v1.39.0

snail007/goproxyv1.39.0Jun 25, 2026by github-actions[bot]

AI Summary

A major feature release for a desktop AI application introducing extensive ACP (Agent Control Protocol) improvements, new language support, and provider integrations.

Key Highlights

  • ACP method for managing recipes and UI changes
  • Korean and Spanish locale support
  • Support for OpenAI GPT models via AWS Bedrock
  • Image read tool for developer workflows
  • Configurable Open Model Gym output directory

New Features

  • ACP improvements for session management
  • New language support (Korean, Spanish, Japanese, etc.)
  • AWS Bedrock integration
  • Image read tool
  • Configurable output directory

Full Release Notes

## ✨ Features

- ACP method for managing recipes and UI changes [#9951](https://github.com/aaif-goose/goose/pull/9951)
- Use ACP to manage global config and session extensions [#9948](https://github.com/aaif-goose/goose/pull/9948)
- Recipe handling in new_session [#9935](https://github.com/aaif-goose/goose/pull/9935)
- `/status` slash command in CLI [#9845](https://github.com/aaif-goose/goose/pull/9845)
- ACP new session on desktop (non-recipe sessions) [#9914](https://github.com/aaif-goose/goose/pull/9914)
- Typed request/response for add, get session extensions in ACP [#9890](https://github.com/aaif-goose/goose/pull/9890)
- Option to disable automatic update downloads [#9872](https://github.com/aaif-goose/goose/pull/9872)
- Change cwd using ACP and refactor extension in bottom menubar [#9887](https://github.com/aaif-goose/goose/pull/9887)
- Track cache tokens for accurate cost reporting [#9752](https://github.com/aaif-goose/goose/pull/9752)
- Load session using ACP [#9875](https://github.com/aaif-goose/goose/pull/9875)
- View model interactions [#9806](https://github.com/aaif-goose/goose/pull/9806)
- Support OpenAI GPT models via AWS Bedrock mantle endpoint [#9707](https://github.com/aaif-goose/goose/pull/9707)
- Peek mode for async background tasks in summon [#9519](https://github.com/aaif-goose/goose/pull/9519)
- Korean localization for desktop app [#9856](https://github.com/aaif-goose/goose/pull/9856)
- Chat reply UI with ACP [#9857](https://github.com/aaif-goose/goose/pull/9857)
- Durable ACP chat session state for desktop UI [#9852](https://github.com/aaif-goose/goose/pull/9852)
- ACP for desktop chat prompt (feature toggle off) [#9802](https://github.com/aaif-goose/goose/pull/9802)
- MCP extensions support in open plugins [#9471](https://github.com/aaif-goose/goose/pull/9471)
- Initial prompt with goose://new-session deep link [#9427](https://github.com/aaif-goose/goose/pull/9427)
- Configurable Open Model Gym output dir [#9789](https://github.com/aaif-goose/goose/pull/9789)
- Spanish (es) locale support [#9833](https://github.com/aaif-goose/goose/pull/9833)
- EmpirioLabs as a declarative OpenAI-compatible provider [#9771](https://github.com/aaif-goose/goose/pull/9771)
- MLX models support for local inference provider [#9154](https://github.com/aaif-goose/goose/pull/9154)
- Elicitation method for ACP with improvements [#9797](https://github.com/aaif-goose/goose/pull/9797)
- View JSON [#9678](https://github.com/aaif-goose/goose/pull/9678)
- Load global hints from ~/.agents/AGENTS.md [#9736](https://github.com/aaif-goose/goose/pull/9736)
- Configurable per-agent timeout (GYM_AGENT_TIMEOUT) [#9791](https://github.com/aaif-goose/goose/pull/9791)
- Azure Entra ID bearer token auth via AZURE_OPENAI_AD_TOKEN [#9716](https://github.com/aaif-goose/goose/pull/9716)
- `_meta.conversationBefore` for ACP forking session [#9821](https://github.com/aaif-goose/goose/pull/9821)
- Quarterly option for scheduler [#9076](https://github.com/aaif-goose/goose/pull/9076)
- Together AI declarative provider [#9545](https://github.com/aaif-goose/goose/pull/9545)
- Image read tool [#9607](https://github.com/aaif-goose/goose/pull/9607)
- Context parameter for summon delegate tasks [#9518](https://github.com/aaif-goose/goose/pull/9518)
- Structured metadata for summon task load results [#9521](https://github.com/aaif-goose/goose/pull/9521)
- Working_dir override for summon delegate tasks [#9520](https://github.com/aaif-goose/goose/pull/9520)
- OrcaRouter as a declarative OpenAI-compatible provider [#9515](https://github.com/aaif-goose/goose/pull/9515)
- Elicitation decline and cancel actions propagation [#9437](https://github.com/aaif-goose/goose/pull/9437)
- ACP opt-in last message snippets [#9798](https://github.com/aaif-goose/goose/pull/9798)
- Japanese locale support [#9768](https://github.com/aaif-goose/goose/pull/9768)
- Unified OTLP logging schema for cross-tool detection [#9713](https://github.com/aaif-goose/goose/pull/9713)
- Canonical thinking modes [#9743](https://github.com/aaif-goose/goose/pull/9743)
- Hindi Desktop locale [#9733](https://github.com/aaif-goose/goose/pull/9733)
- Custom ACP method to get session info [#9729](https://github.com/aaif-goose/goose/pull/9729)
- GOOSE_SERVER__SECRET_KEY support at goose serve ACP endpoint [#9726](https://github.com/aaif-goose/goose/pull/9726)
- Surface Anthropic stream refusals as visible errors [#9724](https://github.com/aaif-goose/goose/pull/9724)
- ACP search session in Desktop [#9717](https://github.com/aaif-goose/goose/pull/9717)
- Steering messages with ACP [#9560](https://github.com/aaif-goose/goose/pull/9560)
- ACP list session with keyword and type filter [#9695](https://github.com/aaif-goose/goose/pull/9695)
- ACP thinking effort config option [#9711](https://github.com/aaif-goose/goose/pull/9711)
- Prompt injection mitigation enabled by default for internal users [#9612](https://github.com/aaif-goose/goose/pull/9612)
- ACP list sessions and manage sessions in Desktop [#9687](https://github.com/aaif-goose/goose/pull/9687)
- ACP methods for config extensions [#9581](https://github.com/aaif-goose/goose/pull/9581)
- Custom notifications only when ACP client specifies capability [#9596](https://github.com/aaif-goose/goose/pull/9596)
- Minimal uniffi setup for cross-language SDK [#9593](https://github.com/aaif-goose/goose/pull/9593)
- Hugging Face OAuth support with auth tab in settings [#9552](https://github.com/aaif-goose/goose/pull/9552)
- Import sessions [#9474](https://github.com/aaif-goose/goose/pull/9474)
- xAI SuperGrok OAuth subscription provider [#9420](https://github.com/aaif-goose/goose/pull/9420)
- Replay ACP images on session load [#9496](https://github.com/aaif-goose/goose/pull/9496)
- Raw provider supported models over ACP [#9475](https://github.com/aaif-goose/goose/pull/9475)
- ACP session system prompt setter [#9478](https://github.com/aaif-goose/goose/pull/9478)
- Scholar Sidekick MCP extension [#9433](https://github.com/aaif-goose/goose/pull/9433)
- `tui` feature flag to gate the tui command [#9428](https://github.com/aaif-goose/goose/pull/9428)
- CLI to list skills with token counts [#9326](https://github.com/aaif-goose/goose/pull/9326)
- Perplexity as a 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)
- Configurable tool output size limit via GOOSE_MAX_TOOL_RESPONSE_SIZE [#9256](https://github.com/aaif-goose/goose/pull/9256)
- `/model` slash command to CLI for session model switching [#8747](https://github.com/aaif-goose/goose/pull/8747)
- Databricks AI Gateway provider [#9274](https://github.com/aaif-goose/goose/pull/9274)
- Russian language support [#9406](https://github.com/aaif-goose/goose/pull/9406)
- Turkish desktop locale [#9392](https://github.com/aaif-goose/goose/pull/9392)
- Language selection feature [#9405](https://github.com/aaif-goose/goose/pull/9405)
- Handle resume deep links [#9298](https://github.com/aaif-goose/goose/pull/9298)

## 🐛 Bug Fixes

- Publish mac updater metadata [#9945](https://github.com/aaif-goose/goose/pull/9945)
- Activate hermit on macOS so STDIO extensions resolve node [#9482](https://github.com/aaif-goose/goose/pull/9482)
- Accept JSON-encoded string for autovisualiser data parameter [#9838](https://github.com/aaif-goose/goose/pull/9838)
- Send User-Agent on URL image fetches in developer/read_image [#9927](https://github.com/aaif-goose/goose/pull/9927)
- Allow unlisted models in search [#9933](https://github.com/aaif-goose/goose/pull/9933)
- Do not pass temperature to ChatGPT Codex provider [#9931](https://github.com/aaif-goose/goose/pull/9931)
- Sanitize extension environment maps [#9884](https://github.com/aaif-goose/goose/pull/9884)
- Desktop updater to target aaif-goose releases [#9868](https://github.com/aaif-goose/goose/pull/9868)
- Refresh provider when session working directory changes [#9883](https://github.com/aaif-goose/goose/pull/9883)
- Use refreshed gcloud token after reauth (retry Vertex AI on 401/403) [#9849](https://github.com/aaif-goose/goose/pull/9849)
- Start a turn when /goal or /grind is set [#9801](https://github.com/aaif-goose/goose/pull/9801)
- Remove hard-coded React alias that breaks dev render [#9842](https://github.com/aaif-goose/goose/pull/9842)
- Pass thinking config to Bedrock Anthropic models [#9794](https://github.com/aaif-goose/goose/pull/9794)
- Check for responses API support in Databricks [#9347](https://github.com/aaif-goose/goose/pull/9347)
- Use media marker parts for vision prompts in local-inference [#9452](https://github.com/aaif-goose/goose/pull/9452)
- Keep extensions icon visible after switching sessions [#9787](https://github.com/aaif-goose/goose/pull/9787)
- Skip non-recipe project config files in summon [#9808](https://github.com/aaif-goose/goose/pull/9808)
- Dedupe 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)
- Custom OpenAI provider dropping port when URL scheme is omitted [#9730](https://github.com/aaif-goose/goose/pull/9730)
- Preserve Windows backslash paths in custom extension command [#9741](https://github.com/aaif-goose/goose/pull/9741)
- 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)
- 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)
- Disable RPM build-id links [#9671](https://github.com/aaif-goose/goose/pull/9671)
- Preserve custom API path in OpenAI base_url derivation [#9649](https://github.com/aaif-goose/goose/pull/9649)
- 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)
- Add hermit cleanup to 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 OpenAI 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 ConverseStream API for Bedrock [#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)
- Add option for overriding API URL 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 in summon [#9514](https://github.com/aaif-goose/goose/pull/9514)
- OAuth timeout instead of hanging in WSL [#9536](https://github.com/aaif-goose/goose/pull/9536)
- Warn on unmatched extension names in summon delegate [#9513](https://github.com/aaif-goose/goose/pull/9513)
- Deleting a recently created session then creating new session 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 and update max tokens [#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)
- Goose-sdk release compat check with new schema [#9697](https://github.com/aaif-goose/goose/pull/9697)
- Compatibility of config extension ACP call in TUI [#9683](https://github.com/aaif-goose/goose/pull/9683)

## 🔧 Improvements

- Move OpenAI provider into goose-providers [#9880](https://github.com/aaif-goose/goose/pull/9880)
- Move ApiClient to goose-providers, lifting out TlsConfig [#9869](https://github.com/aaif-goose/goose/pull/9869)
- Refactor request logger out of providers [#9847](https://github.com/aaif-goose/goose/pull/9847)
- Delete embeddings support [#9865](https://github.com/aaif-goose/goose/pull/9865)
- Move provider trait into goose-providers [#9860](https://github.com/aaif-goose/goose/pull/9860)
- Move global config access out of ModelConfig, move ModelConfig into goose_providers [#9769](https://github.com/aaif-goose/goose/pull/9769)
- Add Ophis MCP server to the extensions registry [#9861](https://github.com/aaif-goose/goose/pull/9861)
- Make session.name the source of truth for displayed session titles [#9841](https://github.com/aaif-goose/goose/pull/9841)
- Split provider inventory out of providers [#9826](https://github.com/aaif-goose/goose/pull/9826)
- Drop debug info for dependencies in dev profile [#9843](https://github.com/aaif-goose/goose/pull/9843)
- Make context exceeded checker more precise [#9831](https://github.com/aaif-goose/goose/pull/9831)
- Update analyze extension instructions [#9585](https://github.com/aaif-goose/goose/pull/9585)
- Validate desktop i18n catalogs [#9776](https://github.com/aaif-goose/goose/pull/9776)
- Refresh canonical model registry [#9709](https://github.com/aaif-goose/goose/pull/9709)
- Move formats/openai.rs into goose-providers crate [#9633](https://github.com/aaif-goose/goose/pull/9633)
- Create goose-providers crate with canonical models, conversation and other types [#9588](https://github.com/aaif-goose/goose/pull/9588)
- Remove dead component and useNavigationSessions cleanup [#9603](https://github.com/aaif-goose/goose/pull/9603)
- ACP session setup refactor [#9488](https://github.com/aaif-goose/goose/pull/9488)
- 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)
- Improve benchmarking [#9637](https://github.com/aaif-goose/goose/pull/9637)
- Pattern-based detection adjustments for prompt injection confidence scores [#9690](https://github.com/aaif-goose/goose/pull/9690)
- Removed create recipe from session modal and REST API [#9916](https://github.com/aaif-goose/goose/pull/9916)

## 📚 Documentation

- Correct custom agents guide [#9947](https://github.com/aaif-goose/goose/pull/9947)
- Custom agents documentation [#9293](https://github.com/aaif-goose/goose/pull/9293)
- AAIF migration blog post [#9866](https://github.com/aaif-goose/goose/pull/9866)
- Remove DCO references [#9864](https://github.com/aaif-goose/goose/pull/9864)
- Self-improving agents blog post [#9846](https://github.com/aaif-goose/goose/pull/9846)
- Correct whitespace in installation fenced code block [#9867](https://github.com/aaif-goose/goose/pull/9867)
- Update docs for ACP clients [#9772](https://github.com/aaif-goose/goose/pull/9772)
- Fix stale session navigation/delete docs [#9727](https://github.com/aaif-goose/goose/pull/9727)
- Fix typo in MCP blog post [#9641](https://github.com/aaif-goose/goose/pull/9641)
- Add Scaleway provider docs [#9423](https://github.com/aaif-goose/goose/pull/9423)
- Scholar Sidekick tutorial page [#9477](https://github.com/aaif-goose/goose/pull/9477)