Release notes
Goose v1.46.0
✨ Features
- Unrolled agent loop #9574
- Cache-safe request assembly with append-only turn context and declared cache semantics #11022
- Streaming shell output while commands run #10808
- Per-message usage stats UI (tokens, cost, TTFT, tok/s) #10210
- Per-message usage/cost tracking with derived session totals #10172
- Track cache tokens for accurate cost reporting #9752
- Markdown format option to session export #10703
- Resizable sidebar with drag handle and persisted width #10795
- Interactive menu for single select elicitations #10327
- Session metadata on sidebar chat hover #10663
- Configurable LOCAL_WHISPER_LANGUAGE for multilingual local transcription #10634
- Allow disabling built-in skills #10600
- Structured summary output with template rendering for compaction #10471
- Pass working_dir to the Stop hook context #10296
- Surface output-token-limit info #10831
- Tab completion and switch provider for
modelcommand #10585 - Collapse const-union enums in tool schemas #10577
- GenAI semantic convention attributes for OTEL #10700
- Enrich root span with gen_ai attributes and improve OTEL output format #10816
- Forward images and MCP embedded-resource blobs in Anthropic and Google formats #10340
- ACP session/new supports Hidden session via _meta.hidden #10811
- Stable agent event message identity #10716
- OAuth logo_uri in client ID metadata documents #10727
- Termux detection in installer to select musl portable build #10568
- Hooks feature with PreToolUse denial #9093, #9304
/goalcommand for agent self-evaluation before finishing #9069/statusslash command #9845/modelslash command to switch session model #8747--editsession flag to edit conversation before forking #9799goose reviewlocal code review command #9114- Open plugins generalization with skills support #9112
- Summon extension: peek mode for async background tasks #9519
- Summon extension: context and working_dir parameters for delegate tasks #9518, #9520
- Load global hints from ~/.agents/AGENTS.md #9736
- Proactive OAuth token refresh to avoid re-auth on every session #8386
- GOOSE_OAUTH_CALLBACK_PORT for stable OAuth redirect_uri #9209
- Unified thinking effort control across all providers #9242
- Projects as backend sources with system prompt injection #8739
- Group chat sessions by project in nav panel #10212
- Collapsible project group headers in nav panel #10278
- Worktree-aware directory switcher #8450
- Chat history search feature in navigation panel #8448
- Search filter to provider grid #10437
- Option to disable automatic update downloads #9872
- TUI diff viewer #9260
- MAX_CODE_BLOCK_LINES configurable via env vars #9301
- GOOSE_MAX_TOOL_RESPONSE_SIZE to configure tool output size limit #9256
- GOOSE_FAST_MODEL env var in ModelConfig::with_fast #9296
- GOOSE_DOCS_ROOT for air-gapped docs access #10294
- Quarterly option for scheduler #9076
- Harbor eval runner #9138
- goose://new-session and goose://resume deep links #9196, #9343
- Initial prompt with goose://new-session #9427
- Encrypted Nostr session sharing #8922
- Import sessions #9474
- Hugging Face OAuth support with auth tab in settings #9552
- MLX models support in local inference provider #9154
- Linux Vulkan support for local inference #9038
- Reconnect desktop ACP sessions after sleep and connection loss #10411
- TLS support for ACP serve #10088
- Group consecutive tool calls into one summarized chain card #8995
- Bind MCP apps to trusted ownership metadata #10747
- MCP extensions in open plugins #9471
- Skills to the chat composer #8881
- Dynamically refresh skill instructions each turn #9217
- CLI to list skills with token counts #9326
- Image read tool #9607
- View model interactions #9806
- UniFFI SDK for cross-language bindings #9593
- Provider bindings MVP to goose-sdk with Python wheel publishing #10208
- Kotlin FFI with build and Maven publish #10375
…