This release adds new providers and Anthropic fast mode support, completes built-in agent definitions, fixes several correctness and security issues, and includes extensive internal refactoring.
What's New
- Adds Obscurify.ai to the built-in provider catalog (OpenAI-compatible, default model
deepseek/deepseek-v4-flash) - Adds fast mode to the Anthropic provider via
provider_opts.speed(fast|standard) for the Messages API - Adds support for Claude Fable 5.2 and Mythos 5.2 on Bedrock
- Completes default and minimal built-in agents; the built-in default is now a coding agent with a
minimalgeneral-purpose alternative - Emits a warning when a final reply is missing after tool use, instead of silently treating it as successful
Improvements
- Ends the Kitty graphics terminal probe on the DA1 reply, reducing startup delay for terminals that do not support Kitty graphics
- Loads prompt history off the startup path, cutting time to first TUI frame
Bug Fixes
- Fixes MCP tool results where separate text blocks were concatenated without separators, causing file lists and other multi-element results to run together
- Fixes Gemini handling of
MALFORMED_FUNCTION_CALL/UNEXPECTED_TOOL_CALLto fail the stream with a non-retryable error instead of silently ending as a finished answer - Fixes Gemini to omit
thinkingConfigfor non-reasoning models (fixes Gemini Flash Image) - Fixes Gemini to keep invalid function calls non-retryable
- Fixes OpenAI-compatible stream adapter to treat
content_filterfinish reason as a refusal instead of passing it through unhandled - Fixes config loading to accept agent configs and
.envfiles saved with a UTF-8 BOM (affects files written by PowerShell 5 on Windows) - Fixes
.agentsignoreparsing to remove the 64 KiB per-line scanner limit - Fixes RAG package detection to stop dropping files with over-long lines
- Fixes transcript writes to be flushed before compaction is persisted, preventing ordering issues on Windows
- Fixes inherited Windows socket handles to be released with
closesocketinstead ofCloseHandle - Fixes
docker agent serve acpto use the default agent when no agent argument is specified - Fixes API read-only hints to apply only to GET requests; other HTTP methods are no longer incorrectly classified as read-only
- Fixes sandbox auto-kits to exclude workspace prompt symlinks, preventing host targets from being copied in
- Fixes message-merge probes to report aggregate prompt tokens correctly
- Fixes Anthropic catalogue pricing to be preserved for
ANTHROPIC_BASE_URLendpoints in fast mode
Technical Changes
- Extensive internal refactoring across runtime, TUI, RAG, providers, shell, config, and other packages — removes redundant helpers, unused adapters, write-only state, and duplicate logic (net ~169 lines removed from production code)
- Refreshes the models.dev catalog snapshot (32 models added, 14 removed, 84 updated)
- Isolates test suites from the developer's home directory to prevent personal config from affecting test results
- Adds opt-in message-merging compatibility probes for provider testing
What's Changed
- refactor(leantui): clone cached tool lines directly by @dgageot in #4868
- refactor(rag): reuse initialization file sets by @dgageot in #4867
- refactor(rag): stop collecting unused fusion ranks by @dgageot in #4865
- refactor(markdown): reuse incremental renderer reset by @dgageot in #4866
- refactor(leantui): inline single-use command filter by @dgageot in #4864
- refactor(cli): reuse model-list JSON encoder by @dgageot in #4863
- refactor(runtime): remove redundant JSON key sorting by @dgageot in #4862
- refactor(bedrock): remove lazy document forwarder by @dgageot in #4861
- refactor(effort): use standard first-match lookup by @dgageot in #4860
- refactor(tui): remove write-only inline edit content by @dgageot in #4859
- refactor(markdown): remove unused derived style state by @dgageot in #4856
- refactor(tui): reuse snapshot pluralization helper by @dgageot in #4857
- refactor(runtime): remove harness tool ID accessor by @dgageot in #4858
- refactor(tasks): remove JSON result forwarder by @dgageot in #4855
- build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #4827
- refactor(shell): remove shell detection forwarder by @dgageot in #4853
- refactor(mermaid): reuse sequence canvas for lifelines by @dgageot in #4854
- refactor(skills): consolidate skill lookup by @dgageot in #4851
- refactor(providers): remove stream adapter forwarders by @dgageot in #4852
- refactor(runtime): reuse prompt joiner for delegation notes by @dgageot in #4850
- refactor(codemode): use maps.Clone for schema copies by @dgageot in #4849
- refactor(codemode): remove unused comment indentation layer by @dgageot in #4848
- refactor(tui): remove redundant extractor state flags by @dgageot in #4846
- refactor(leantui): remove image forwarding layer by @dgageot in #4845
- refactor(fetch): remove HTML-to-text forwarding helper by @dgageot in #4844
- refactor(kit): remove unused auto-install check by @dgageot in #4834
- refactor(shellpath): collapse redundant Unix shell helper by @dgageot in #4835
- refactor(runtime): remove unused approval source mappers by @dgageot in #4833
- refactor(skills): remove unused git root helper by @dgageot in #4832
- refactor(httpclient): inline test-only ID source option by @dgageot in #4838
- refactor(path): delegate home shortening to shared helper by @dgageot in #4840
- refactor(tui): remove test-only validation adapters by @dgageot in #4841
- refactor(tui): remove write-only pointer state by @dgageot in #4843
- fix(runtime): flush transcript writes before persisting compaction by @dgageot in #4871
- refactor(anthropic): remove test-only content helper by @dgageot in #4837
- docs: update CHANGELOG.md for v1.158.0 by @docker-read-write[bot] in #4830
- fix(oaistream): end a content_filter turn as a refusal by @jaeminbird in #4825
- fix(acp): use default agent when none is specified by @dgageot in #4876
- Make the default built-in a coding agent by @dgageot in #4875
- refactor(runtime): reuse notifier pointer identity helper by @dgageot in #4847
- refactor(tui): inline agent registry index lookups by @dgageot in #4839
- refactor(rag): remove BM25 document-loading adapter by @dgageot in #4870
- refactor(config): share instruction-file decoder callback by @dgageot in #4869
- refactor(providerutil): remove redundant nil-map guards by @dgageot in #4842
- fix(config): accept agent configs and env files saved with a UTF-8 BOM by @jaeminbird in #4826
- chore: bump direct Go dependencies by @dgageot in #4878
- Bump golang.org/x/term to v0.48.0 by @dgageot in #4879
- fix(server): release inherited Windows sockets with closesocket by @dgageot in #4872
- fix(gemini): fail invalid function calls, end unfinished continuations by @jaeminbird in #4808
- feat: add Obscurify.ai to the built-in provider catalog by @tonydavis629 in #4751
- chore: refresh models.dev snapshot (+32 -14 ~84) by @github-actions[bot] in #4880
- docs: correct configuration and tool guidance by @dgageot in #4885
- feat: support Claude Fable and Mythos 5.2 by @aheritier in #4883
- test(providers): add opt-in message-merging compatibility probes by @onatozmenn in #4831
- refactor: remove accidental complexity in 33 small, behavior-preserving steps by @dgageot in #4887
- fix(mcp): keep separate text blocks of a tool result apart by @jaeminbird in #4802
- fix(rag): stop dropping files with over-long lines in package detection by @TDnorthgarden in #4828
- fix(fsx): read .agentsignore lines without the 64 KiB scanner limit by @TDnorthgarden in #4836
- fix(gemini): omit thinking config for non-reasoning models by @gargsajal9 in #4884
- perf(tui): cut time to first frame (Kitty probe, prompt history) by @dgageot in #4888
- Warn when a final reply is missing after tool use by @dgageot in #4892
- test: isolate test suites from the developer's home directory by @dgageot in #4893
- feat(anthropic): add fast mode via provider_opts.speed by @simonferquel-clanker in #4886
- fix: restrict API read-only hints to GET requests by @dgageot in #4896
- fix(sandbox): keep workspace prompt symlinks out of auto-kits by @dgageot in #4897
- fix(providers): report aggregate prompt tokens in message-merge probes by @TDnorthgarden in #4894
New Contributors
- @tonydavis629 made their first contribution in #4751
Full Changelog: v1.158.0...v1.159.0