v1.36.0

aaif-goose/goosev1.36.0May 27, 2026by github-actions[bot]

AI Summary

Feature-rich release with TUI command for CLI, comprehensive hooks system, and multiple new AI providers. Includes deep link support, improved session management, and expanded internationalization.

Key Highlights

  • TUI command on goose-cli
  • Hooks system for PreToolUse denial
  • New providers: NEAR AI Cloud, Scaleway, Vercel AI Gateway, Atomic Chat, Routstr, FuturMix, oMLX
  • Deep links: goose://resume and goose://new-session
  • Internationalization: Russian, Turkish, Simplified Chinese

New Features

  • TUI command on goose-cli
  • TUI diff viewer
  • goose review local code review command
  • /goal command for agent self-evaluation
  • Hooks system for PreToolUse denial and extensibility
  • Slash commands in ACP server
  • Open-plugins generalization + skills
  • Summon subagent instructions
  • Unified thinking effort control
  • NEAR AI Cloud provider
  • Scaleway provider
  • Vercel AI Gateway provider
  • Atomic Chat declarative OpenAI-compatible provider
  • Routstr declarative provider
  • FuturMix provider
  • oMLX declarative provider
  • Harbor eval runner
  • goose://resume and goose://new-session deep links
  • MAX_CODE_BLOCK_LINES configurable via env vars
  • GOOSE_FAST_MODEL env var support
  • GPT-5.5 in known models
  • Paginate ACP session list
  • GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri
  • Proactive OAuth token refresh
  • Strip chain-of-thought markers from custom provider output
  • Encrypted Nostr session sharing
  • Simplified Chinese translation
  • Russian language support
  • Turkish desktop locale
  • Nushell terminal and completion support
  • Optional --parameters flag for scheduled recipes
  • Quarterly option for scheduler
  • GitHub Copilot /responses API support
  • Worktree-aware directory switcher
  • Chat history search feature
  • Projects as backend sources with system prompt injection
  • Linux Vulkan support for local inference
  • GOOSE_DISABLE_TOOL_CALL_SUMMARY env var

Full Release Notes

## ✨ Features

- 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)
- `goose review` local code review command [#9114](https://github.com/aaif-goose/goose/pull/9114)
- `/goal` command for agent self-evaluation before finishing [#9069](https://github.com/aaif-goose/goose/pull/9069)
- Hooks system for PreToolUse denial and extensibility [#9093](https://github.com/aaif-goose/goose/pull/9093), [#9304](https://github.com/aaif-goose/goose/pull/9304)
- 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)
- Summon subagent instructions [#9325](https://github.com/aaif-goose/goose/pull/9325)
- Unified thinking effort control across all providers [#9242](https://github.com/aaif-goose/goose/pull/9242)
- NEAR AI Cloud provider [#9352](https://github.com/aaif-goose/goose/pull/9352)
- Scaleway provider [#9254](https://github.com/aaif-goose/goose/pull/9254)
- Vercel AI Gateway provider [#9144](https://github.com/aaif-goose/goose/pull/9144)
- Atomic Chat declarative OpenAI-compatible provider [#9210](https://github.com/aaif-goose/goose/pull/9210)
- Routstr declarative provider [#9175](https://github.com/aaif-goose/goose/pull/9175)
- FuturMix provider [#8840](https://github.com/aaif-goose/goose/pull/8840)
- oMLX declarative provider [#9177](https://github.com/aaif-goose/goose/pull/9177)
- Harbor eval runner [#9138](https://github.com/aaif-goose/goose/pull/9138)
- `goose://resume` and `goose://new-session` deep links [#9343](https://github.com/aaif-goose/goose/pull/9343), [#9196](https://github.com/aaif-goose/goose/pull/9196)
- `MAX_CODE_BLOCK_LINES` configurable via env vars [#9301](https://github.com/aaif-goose/goose/pull/9301)
- Honor `GOOSE_FAST_MODEL` env var in ModelConfig [#9296](https://github.com/aaif-goose/goose/pull/9296)
- GPT-5.5 in known models [#9292](https://github.com/aaif-goose/goose/pull/9292)
- Paginate ACP session list [#9199](https://github.com/aaif-goose/goose/pull/9199)
- Pass session cwd param to ACP providers [#9229](https://github.com/aaif-goose/goose/pull/9229)
- Opt-in to Vercel AI gateway leaderboard [#9259](https://github.com/aaif-goose/goose/pull/9259)
- `GOOSE_OAUTH_CALLBACK_PORT` for stable OAuth redirect_uri [#9209](https://github.com/aaif-goose/goose/pull/9209)
- Proactive OAuth token refresh to avoid re-auth on every session [#8386](https://github.com/aaif-goose/goose/pull/8386)
- Strip chain-of-thought markers from custom provider output [#8635](https://github.com/aaif-goose/goose/pull/8635)
- Encrypted Nostr session sharing [#8922](https://github.com/aaif-goose/goose/pull/8922)
- Simplified Chinese (zh-CN) translation [#8765](https://github.com/aaif-goose/goose/pull/8765)
- Russian language support [#9406](https://github.com/aaif-goose/goose/pull/9406)
- Turkish desktop locale [#9392](https://github.com/aaif-goose/goose/pull/9392)
- Nushell terminal and completion support [#8628](https://github.com/aaif-goose/goose/pull/8628)
- Optional `--parameters` flag for scheduled recipes [#8741](https://github.com/aaif-goose/goose/pull/8741)
- Quarterly option for scheduler [#9076](https://github.com/aaif-goose/goose/pull/9076)
- GitHub Copilot `/responses` API support [#9043](https://github.com/aaif-goose/goose/pull/9043)
- Worktree-aware directory switcher [#8450](https://github.com/aaif-goose/goose/pull/8450)
- Chat history search feature [#8448](https://github.com/aaif-goose/goose/pull/8448)
- Projects as backend sources with system prompt injection [#8739](https://github.com/aaif-goose/goose/pull/8739)
- Linux Vulkan support for local inference [#9038](https://github.com/aaif-goose/goose/pull/9038)
- Linux musl CLI builds [#9240](https://github.com/aaif-goose/goose/pull/9240)
- Windows CUDA release artifacts [#8750](https://github.com/aaif-goose/goose/pull/8750)
- `GOOSE_DISABLE_TOOL_CALL_SUMMARY` env var [#8947](https://github.com/aaif-goose/goose/pull/8947)

## 🐛 Bug Fixes

- 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)
- Desktop chat search session limiting [#9366](https://github.com/aaif-goose/goose/pull/9366)
- 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)
- Preserve thinking content for provider context [#9314](https://github.com/aaif-goose/goose/pull/9314)
- Mention configurable timeout env vars in Ollama stream stall error [#9246](https://github.com/aaif-goose/goose/pull/9246)
- Include full recipe parameter details in load/discovery output [#9233](https://github.com/aaif-goose/goose/pull/9233)
- Remove unused fetch-metadata IPC handler (SSRF) [#9340](https://github.com/aaif-goose/goose/pull/9340)
- Use context limit from `/model/info` for LiteLLM custom models [#9303](https://github.com/aaif-goose/goose/pull/9303)
- Plain `> ` prompt instead of goose emoji in CLI [#9305](https://github.com/aaif-goose/goose/pull/9305)
- Stop killing goosed when a window closes [#9302](https://github.com/aaif-goose/goose/pull/9302)
- Emit trace_output as span attribute instead of event [#9255](https://github.com/aaif-goose/goose/pull/9255)
- Check file fallback when keyring has no entry [#9279](https://github.com/aaif-goose/goose/pull/9279)
- Align sidebar hamburger in macOS fullscreen [#9257](https://github.com/aaif-goose/goose/pull/9257)
- Use `current_exe()` instead of PATH lookup when spawning goose [#9236](https://github.com/aaif-goose/goose/pull/9236)
- 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)
- Flush OTLP traces reliably on exit with configurable timeout [#9228](https://github.com/aaif-goose/goose/pull/9228)
- 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)
- 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)
- Report cumulative total_tokens in stream-json/json output [#8910](https://github.com/aaif-goose/goose/pull/8910)
- Refresh GCP metadata server token on expiration [#8929](https://github.com/aaif-goose/goose/pull/8929)
- Apply request_params to outgoing OpenAI API payload [#9151](https://github.com/aaif-goose/goose/pull/9151)
- Gemini 3.x known_location Global routing entries [#9142](https://github.com/aaif-goose/goose/pull/9142)
- Coalesce streaming Thinking deltas + list available tools on not-found [#9162](https://github.com/aaif-goose/goose/pull/9162)
- Honor `Retry-After` on 429 responses [#9161](https://github.com/aaif-goose/goose/pull/9161)
- Preserve user-set session name for recipe-based chats [#9079](https://github.com/aaif-goose/goose/pull/9079)
- Enforce exp independently of `MAX_TOKEN_AGE_SECONDS` in OIDC proxy [#8839](https://github.com/aaif-goose/goose/pull/8839)
- Improve inline code contrast in light theme [#9058](https://github.com/aaif-goose/goose/pull/9058)
- Omit max_tokens for OpenAI-compatible requests when unset [#9123](https://github.com/aaif-goose/goose/pull/9123)
- Set correct MCP-app host capabilities [#9116](https://github.com/aaif-goose/goose/pull/9116)
- Normalize nullable schemas for Vertex Gemini compatibility [#8930](https://github.com/aaif-goose/goose/pull/8930)
- Isolate GitHub recipe temp paths [#8878](https://github.com/aaif-goose/goose/pull/8878)
- Set X-Initiator header on GitHub Copilot requests [#8809](https://github.com/aaif-goose/goose/pull/8809)
- Honor `dynamic_models: false` in declarative provider configs [#8795](https://github.com/aaif-goose/goose/pull/8795)
- Cache trailing message for stable prefix across Bedrock agent turns [#8916](https://github.com/aaif-goose/goose/pull/8916)
- Case-insensitive model name lookup for context_limit [#8906](https://github.com/aaif-goose/goose/pull/8906)
- Handle Bedrock ReasoningContent blocks gracefully [#8843](https://github.com/aaif-goose/goose/pull/8843)
- Ensure parallel tool image responses don't interleave on Databricks [#9241](https://github.com/aaif-goose/goose/pull/9241)
- Insert tool pair summaries at chronological position in conversation [#9087](https://github.com/aaif-goose/goose/pull/9087)
- Enable SQLite foreign key enforcement in session pool [#9121](https://github.com/aaif-goose/goose/pull/9121)
- Deleted chat session still appears in sidebar list [#8674](https://github.com/aaif-goose/goose/pull/8674)
- Correct WSL2 OS detection by removing PWD-based Windows override [#8869](https://github.com/aaif-goose/goose/pull/8869)
- Accept null tool_call arguments in OpenAI streaming chunks [#9035](https://github.com/aaif-goose/goose/pull/9035)
- Use `python3` in developer extension instructions for macOS/Linux [#8784](https://github.com/aaif-goose/goose/pull/8784)
- Synchronously reap ACP child to avoid SIGCHLD race [#9023](https://github.com/aaif-goose/goose/pull/9023)
- Elicitation fixes [#8999](https://github.com/aaif-goose/goose/pull/8999)
- Return 400 instead of panicking on invalid CSP header value [#8810](https://github.com/aaif-goose/goose/pull/8810)
- Keep SSE reconnect loop alive on long disconnects [#8846](https://github.com/aaif-goose/goose/pull/8846)
- Convert quoted numeric config values to numbers if needed [#8844](https://github.com/aaif-goose/goose/pull/8844)
- 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)
- Exclude preprompt from session title generation [#8793](https://github.com/aaif-goose/goose/pull/8793)
- Prevent login-shell PATH probe from suspending goose on startup [#8804](https://github.com/aaif-goose/goose/pull/8804)

## 🔧 Improvements

- Local inference: stricter GGUF requirements, auto detection of tool calling support, fixed thinking output parsing [#9442](https://github.com/aaif-goose/goose/pull/9442)
- Simplify UI customization [#9353](https://github.com/aaif-goose/goose/pull/9353)
- Build summon instructions per turn [#9329](https://github.com/aaif-goose/goose/pull/9329)
- Protocol cleanup [#9147](https://github.com/aaif-goose/goose/pull/9147)
- Dependency hygiene [#9360](https://github.com/aaif-goose/goose/pull/9360)
- Preserve selected branch across project chats [#9010](https://github.com/aaif-goose/goose/pull/9010)
- Prompt injection mitigation: update pattern-based detection to reduce FPs [#9350](https://github.com/aaif-goose/goose/pull/9350)
- Surface resolved Databricks model metadata [#9206](https://github.com/aaif-goose/goose/pull/9206)
- Include request URL in provider error messages [#9232](https://github.com/aaif-goose/goose/pull/9232)
- Flag for login shell PATH [#9313](https://github.com/aaif-goose/goose/pull/9313)
- Remove popular chat topics from new chat screen [#9307](https://github.com/aaif-goose/goose/pull/9307)
- Structured per-provider config block, non-destructive provider switching [#8977](https://github.com/aaif-goose/goose/pull/8977)
- TUI spacing/layout improvements [#9243](https://github.com/aaif-goose/goose/pull/9243)
- 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)
- Better parsing of pasted HTML as markdown [#9190](https://github.com/aaif-goose/goose/pull/9190)
- Show tool name in approval prompt [#9216](https://github.com/aaif-goose/goose/pull/9216)
- Localize hardcoded strings in provider settings UI [#8931](https://github.com/aaif-goose/goose/pull/8931)
- Move settings into app shell [#9047](https://github.com/aaif-goose/goose/pull/9047)
- Location column in CLI skills table [#8785](https://github.com/aaif-goose/goose/pull/8785)
- Consolidate logging setup into shared helper [#8817](https://github.com/aaif-goose/goose/pull/8817)
- Support optional api_key configuration for declarative openai-engine providers [#9202](https://github.com/aaif-goose/goose/pull/9202)
- Remove vendored Windows binaries [#9318](https://github.com/aaif-goose/goose/pull/9318)
- Polish sidebar and context panel [#9059](https://github.com/aaif-goose/goose/pull/9059)
- Polish inline code snippet styling [#9011](https://github.com/aaif-goose/goose/pull/9011)
- Refresh onboarding when provider catalog loads [#9051](https://github.com/aaif-goose/goose/pull/9051)
- Recipe discovery/execution in ACP server [#8925](https://github.com/aaif-goose/goose/pull/8925)
- Group consecutive tool calls into one summarized chain card [#8995](https://github.com/aaif-goose/goose/pull/8995)
- Replace artifact heuristics/regexes with protocol messages [#8996](https://github.com/aaif-goose/goose/pull/8996)
- Improvements to LM Studio declarative provider [#8973](https://github.com/aaif-goose/goose/pull/8973)
- Parallelize provider resolution and eagerly init SQLite pool [#8899](https://github.com/aaif-goose/goose/pull/8899)
- Deduplicate `_goose/providers/list` RPC call at startup [#8873](https://github.com/aaif-goose/goose/pull/8873)
- Native arm64 runners for Linux artifact builds [#9075](https://github.com/aaif-goose/goose/pull/9075)
- ACP streamable HTTP spec compliance [#9034](https://github.com/aaif-goose/goose/pull/9034)
- Provider-first onboarding [#9039](https://github.com/aaif-goose/goose/pull/9039)
- Redesign extensions page [#8940](https://github.com/aaif-goose/goose/pull/8940)
- Redesign skills library [#8868](https://github.com/aaif-goose/goose/pull/8868)
- Skills in chat composer [#8881](https://github.com/aaif-goose/goose/pull/8881)
- Mergeable configs cleanup [#8378](https://github.com/aaif-goose/goose/pull/8378)

## 📚 Documentation

- Stats update [#9410](https://github.com/aaif-goose/goose/pull/9410)
- Hooks guide [#9288](https://github.com/aaif-goose/goose/pull/9288)
- Hooks feature blog post [#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)
- Guide for connecting goose Desktop to a remote goosed server [#9275](https://github.com/aaif-goose/goose/pull/9275)
- SaladCloud AI Gateway provider documentation [#9253](https://github.com/aaif-goose/goose/pull/9253)
- Reorganize documentation [#9310](https://github.com/aaif-goose/goose/pull/9310)
- Fix internal documentation anchors [#9094](https://github.com/aaif-goose/goose/pull/9094)
- Tunnel remote access documentation update [#9077](https://github.com/aaif-goose/goose/pull/9077)
- Linux desktop Vulkan packages [#9323](https://github.com/aaif-goose/goose/pull/9323)
- Orchestrating with goose blog [#9104](https://github.com/aaif-goose/goose/pull/9104)
- Goose with Peekaboo blog [#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 blog post [#8984](https://github.com/aaif-goose/goose/pull/8984)
- Repology badge in README [#9245](https://github.com/aaif-goose/goose/pull/9245)