v1.43.0

aaif-goose/goosev1.43.0Jul 14, 2026by github-actions[bot]

AI Summary

This release introduces significant UI enhancements including per-message usage tracking and project-based session grouping, alongside support for new AI providers like iFlytek Spark and Fireworks AI. It also improves the developer experience with provider bindings for the goose-sdk and adds TLS support for the ACP serve command, while resolving numerous stability issues with models like DeepSeek.

Key Highlights

  • Per-message usage stats UI (tokens, cost, TTFT, tok/s)
  • OllamaCloudProvider with dynamic model discovery and context limits
  • iFlytek Spark and Astron MaaS providers
  • Provider bindings MVP to goose-sdk with Python wheel publishing
  • GPT-5.6 family support

New Features

  • Reconnect desktop ACP sessions after sleep and connection loss
  • Per-message usage stats UI (tokens, cost, TTFT, tok/s)
  • Per-message usage/cost tracking with derived session totals
  • Group chat sessions by project in nav panel
  • Show project names in directory switcher dropdown
  • OllamaCloudProvider with dynamic model discovery and context limits
  • Delete support for custom apps from Apps UI
  • `--edit` session flag to edit conversation before forking
  • iFlytek Spark and Astron MaaS providers
  • Fireworks AI declarative provider
  • OpenRouter request parameters support
  • OVHcloud Qwen3.6-27B model (262K context)
  • GPT-5.6 family support
  • GLM-5.2 support
  • French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, and Traditional Chinese desktop locales
  • Provider bindings MVP to goose-sdk with Python wheel publishing
  • TLS support for ACP serve
  • Streamable HTTP support in deeplink generator

Full Release Notes

## ✨ Features

- Reconnect desktop ACP sessions after sleep and connection loss [#10411](https://github.com/aaif-goose/goose/pull/10411)
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) [#10210](https://github.com/aaif-goose/goose/pull/10210)
- Per-message usage/cost tracking with derived session totals [#10172](https://github.com/aaif-goose/goose/pull/10172)
- Group chat sessions by project in nav panel [#10212](https://github.com/aaif-goose/goose/pull/10212)
- Show project names in directory switcher dropdown [#10207](https://github.com/aaif-goose/goose/pull/10207)
- OllamaCloudProvider with dynamic model discovery and context limits [#10264](https://github.com/aaif-goose/goose/pull/10264)
- Delete support for custom apps from Apps UI [#10127](https://github.com/aaif-goose/goose/pull/10127)
- `--edit` session flag to edit conversation before forking [#9799](https://github.com/aaif-goose/goose/pull/9799)
- iFlytek Spark and Astron MaaS providers [#9837](https://github.com/aaif-goose/goose/pull/9837)
- Fireworks AI declarative provider [#9990](https://github.com/aaif-goose/goose/pull/9990)
- OpenRouter request parameters support [#9276](https://github.com/aaif-goose/goose/pull/9276)
- OVHcloud Qwen3.6-27B model (262K context) [#10339](https://github.com/aaif-goose/goose/pull/10339)
- GPT-5.6 family support [#10349](https://github.com/aaif-goose/goose/pull/10349)
- GLM-5.2 support [#9967](https://github.com/aaif-goose/goose/pull/9967)
- French, German, Italian, Portuguese, Indonesian, Malay, Vietnamese, and Traditional Chinese desktop locales [#10072](https://github.com/aaif-goose/goose/pull/10072)
- Provider bindings MVP to goose-sdk with Python wheel publishing [#10208](https://github.com/aaif-goose/goose/pull/10208)
- TLS support for ACP serve [#10088](https://github.com/aaif-goose/goose/pull/10088)
- Streamable HTTP support in deeplink generator [#9954](https://github.com/aaif-goose/goose/pull/9954)

## 🐛 Bug Fixes

- Exclude MCP App tools from Code Mode callbacks [#10290](https://github.com/aaif-goose/goose/pull/10290)
- Preserve reasoning_content for DeepSeek thinking mode on multi-turn tool calls [#10366](https://github.com/aaif-goose/goose/pull/10366)
- Compaction disabled during approval [#10089](https://github.com/aaif-goose/goose/pull/10089)
- Treat empty-string finish_reason as non-terminal in streaming [#10258](https://github.com/aaif-goose/goose/pull/10258)
- Gemini OAuth onboarding failure [#10363](https://github.com/aaif-goose/goose/pull/10363)
- Retry empty provider turns instead of stopping silently [#10360](https://github.com/aaif-goose/goose/pull/10360)
- Guard llama.cpp backend init against SIGILL on x86_64 CPUs without FMA/AVX2 [#10105](https://github.com/aaif-goose/goose/pull/10105)
- Sanitize responses function call names [#10344](https://github.com/aaif-goose/goose/pull/10344)
- Pick session mode from the IDs the agent actually offers [#10320](https://github.com/aaif-goose/goose/pull/10320)
- Desktop ACP shell PATH [#10336](https://github.com/aaif-goose/goose/pull/10336)
- Dedupe duplicate signed thinking blocks to fix Anthropic 400 [#10083](https://github.com/aaif-goose/goose/pull/10083)
- Resolve provider default model instead of leaking sentinel "current" [#10305](https://github.com/aaif-goose/goose/pull/10305)
- Return effective context limit from /model-info [#10165](https://github.com/aaif-goose/goose/pull/10165)
- Gate rcgen aws_lc_rs feature behind rustls-tls [#10116](https://github.com/aaif-goose/goose/pull/10116)
- Recover malformed tool calls from GLM/Minimax models instead of rejecting them [#10230](https://github.com/aaif-goose/goose/pull/10230)
- Restore cursor when configure exits [#10222](https://github.com/aaif-goose/goose/pull/10222)
- Skip scheduled sessions for implicit resume [#10178](https://github.com/aaif-goose/goose/pull/10178)
- Sync slash help with builtins [#10173](https://github.com/aaif-goose/goose/pull/10173)
- Treat unicode punctuation as image path terminators [#10106](https://github.com/aaif-goose/goose/pull/10106)
- Don't bleed provider-specific request_params into delegate() sessions [#9906](https://github.com/aaif-goose/goose/pull/9906)
- Purge empty phantom sessions on startup [#9651](https://github.com/aaif-goose/goose/pull/9651)
- Include structuredContent from MCP tool response [#10128](https://github.com/aaif-goose/goose/pull/10128)
- Propagate agent cleanup errors on session delete [#10112](https://github.com/aaif-goose/goose/pull/10112)
- Tolerate partial Responses output items [#10108](https://github.com/aaif-goose/goose/pull/10108)
- Always use OpenAI-compatible "parameters" for Databricks tools [#10101](https://github.com/aaif-goose/goose/pull/10101)
- Unescape shell-escaped image paths [#10098](https://github.com/aaif-goose/goose/pull/10098)
- Send inference config (max_tokens, temperature) on Bedrock Converse [#9889](https://github.com/aaif-goose/goose/pull/9889)
- Dedupe Nostr session deep link imports [#9918](https://github.com/aaif-goose/goose/pull/9918)
- Don't retry deterministically-permanent 400s (thinking-block immutability) [#10005](https://github.com/aaif-goose/goose/pull/10005)
- 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)
- 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)
- 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)
- Prompt timestamps are now timezone-explicit [#10209](https://github.com/aaif-goose/goose/pull/10209)

## 🔧 Improvements

- Apply the default extension timeout to developer shell tool calls [#10348](https://github.com/aaif-goose/goose/pull/10348)
- Disable thinking preservation for Groq [#10284](https://github.com/aaif-goose/goose/pull/10284)
- Bound code-mode execution with timeout and cancellation [#10214](https://github.com/aaif-goose/goose/pull/10214)
- 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)
- Switch the local inference provider MLX backend to use the safemlx crate [#10304](https://github.com/aaif-goose/goose/pull/10304)
- OpenAI Responses API store param configurable [#10040](https://github.com/aaif-goose/goose/pull/10040)
- Support streamed tool calls without indexes [#10023](https://github.com/aaif-goose/goose/pull/10023)
- Fail closed on unverifiable update provenance [#10168](https://github.com/aaif-goose/goose/pull/10168)
- Migrate diagnostics 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)
- ACP migration for desktop UI [#10081](https://github.com/aaif-goose/goose/pull/10081)
- Relabel settings 'Session' tab to 'External Backend' [#10318](https://github.com/aaif-goose/goose/pull/10318)
- Show manual-setup indicator for extensions without an install link [#10321](https://github.com/aaif-goose/goose/pull/10321)

## 📚 Documentation

- Clarify session --edit context retention [#10257](https://github.com/aaif-goose/goose/pull/10257)
- 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)