This release improves agent reliability and performance with better tool loop detection, enhanced MCP handling, and various bug fixes.
What's New
- Adds framework-level tool loop detection to prevent degenerate agent loops when the same tool is called repeatedly
- Adds support for dynamic command expansion in skills using
!\command`` syntax - Adds support for running skills as isolated sub-agents via
context: forkfrontmatter - Adds CLI flags (
--hook-pre-tool-use,--hook-post-tool-use, etc.) to override agent hooks from command line - Adds stop and notification hooks with session lifecycle integration
Improvements
- Reworks thinking budget system to be opt-in by default with adaptive thinking and effort levels
- Caches syntax highlighting results for code blocks to improve markdown rendering performance
- Optimizes MCP catalog loading with single fetch per run and ETag caching
- Derives meaningful names for external sub-agents instead of using generic 'root' name
- Optimizes filesystem tool performance by avoiding duplicate string allocations
- Speeds up history loading with ReadFile and strconv.Unquote optimizations
Bug Fixes
- Fixes context cancelling during RAG initialization and query operations
- Fixes frozen spinner during MCP tool loading
- Fixes model name display in TUI sidebar for all model types
- Fixes two data races in shell tool execution
- Fixes character handling issues in tmux integration
- Fixes binary download URLs in documentation to match release artifact naming
- Validates thinking_budget effort levels at parse time and rejects unknown values
Technical Changes
- Removes unused methods from codebase
- Hardens and simplifies MCP gateway code
- Adds logging for selected model in Agent.Model() for better observability
- Fixes pool_size reporting to reflect actual selection pool
- Reverts timeout changes for remote MCP initialization and tool calls
What's Changed
- Fix rag init context cancel by @gtardif in #2114
- docs: update CHANGELOG.md for v1.32.4 by @docker-read-write[bot] in #2112
- Bump dependencies by @dgageot in #2113
- Fix frozen spinner during MCP tool loading by @dgageot in #2115
- Support dynamic command expansion in skills (!
commandsyntax) by @dgageot in #2116 - Fix model name display in TUI sidebar for all model types by @dgageot in #2118
- perf(markdown): cache syntax highlighting results for code blocks by @dgageot in #2119
- feat: framework-level tool loop detection by @derekmisler in #2123
- Fix issues on builtin filesystem tools by @dgageot in #2125
- Fix two data races in shell tool by @dgageot in #2127
- Fix a few characters for tmux by @dgageot in #2128
- Simplify MCP catalog loading: single fetch per run with ETag caching by @dgageot in #2124
- docs: fix binary download URLs to match release artifact naming by @dgageot in #2129
- More doc fixing with "agent serve mcp" by @gtardif in #2130
- Rework thinking budget: opt-in by default, adaptive thinking, effort levels by @dgageot in #2121
- Add timeouts to remote MCP initialization and tool calls by @dgageot in #2131
- Optimize start time by @dgageot in #2138
- gateway: harden and simplify MCP gateway code by @dgageot in #2133
- Derive meaningful names for external sub-agents instead of using 'root' by @dgageot in #2132
- Add --hook-* CLI flags to override agent hooks from the command line by @dgageot in #2135
- feat: support running skills as isolated sub-agents via context: fork by @dgageot in #2137
- Revert "Add timeouts to remote MCP initialization and tool calls" by @dgageot in #2141
- Add stop and notification hooks, wire up session lifecycle hooks by @dgageot in #2136
- Reject unknown thinking_budget effort levels at parse time by @dgageot in #2142
- Log selected model in Agent.Model() for alloy observability by @derekmisler in #2134
Full Changelog: v1.32.4...v1.32.5