This release significantly expands model provider support with 12 new built-in providers, adds mouse support and new commands to the TUI, introduces a SafetyPolicy primitive, and includes numerous bug fixes and performance improvements.
What's New
- Adds Baseten as a built-in model provider (
provider: baseten) - Adds OVHcloud AI Endpoints as a built-in model provider (
provider: ovhcloud) - Adds Groq as a built-in model provider (
provider: groq) - Adds DeepSeek as a built-in model provider (
provider: deepseek) - Adds Cerebras as a built-in model provider (
provider: cerebras) - Adds Fireworks AI as a built-in model provider (
provider: fireworks) - Adds Together AI as a built-in model provider (
provider: together) - Adds Hugging Face Inference Providers as a built-in model provider (
provider: huggingface) - Adds Moonshot AI (Kimi) as a built-in model provider (
provider: moonshot) - Adds Vercel AI Gateway as a built-in model provider (
provider: vercel) - Adds Cloudflare Workers AI and Cloudflare AI Gateway as built-in model providers
- Adds mouse support to the agent picker: hover highlights a card, single click selects it, double-click immediately starts the session, and scroll wheel navigates the YAML details panel
- Adds metadata
tagsfield to agent config and surfaces tags as coloured chips in the agent picker - Adds
/effortslash command to select the model's reasoning level directly (available in both full and lean TUI) - Adds
SafetyPolicyprimitive (unsafe/safer/strict) to sessions, forwarded to hooks viahooks.Input.SafetyPolicy - Enforces
lifecycle.startup_timeoutfor MCP/LSP toolset startup, which was previously parsed but never acted on - Adapts
safer_shellhook classification to the sessionSafetyPolicy - Collapses file picker keyboard shortcuts to a single line on wide dialogs
- Strengthens default memory toolset instructions
Improvements
- Memoizes successful OCI config reads per process, halving warm startup latency for OCI agent refs
- Suppresses spurious empty-response warning for benign post-tool stops in forked-skill sub-sessions
- Agent picker dialog is larger and truncates long lines instead of wrapping; cards are 70 columns wide
Bug Fixes
- Fixes coalescing of system messages for self-hosted and OpenAI-compatible endpoints that reject multiple system messages (e.g. vLLM with Qwen)
- Fixes OVHcloud default model to
Qwen3.5-397B-A17B - Fixes macOS Option-key characters not triggering file picker
alt+h/alt+ivisibility toggles - Removes duplicate "Initializing MCP servers…" spinner from the sidebar that fired on every turn even for agents with no MCP servers
- Adds 5-second timeout to graceful-shutdown calls that previously used
WithoutCancelwithout a deadline, preventing indefinite blocking - Fixes concurrent
Connectraces and goroutine leak on startup timeout for MCP/LSP toolsets - Fixes auto-deny of tool asks in non-interactive sessions instead of blocking indefinitely
- Fixes tool-call confirmations being dropped without a Resume under
--yoloin JSON mode - Fixes Anthropic provider falling back to token thinking for effort levels on models without adaptive thinking support (e.g. Haiku 4.5)
- Fixes tool call render briefly disappearing or shrinking while JSON arguments are still streaming in the lean TUI
- Clamps
max_tokensto the context window for OpenAI-compatible providers to prevent "context window exceeded" errors on self-hosted vLLM - Fixes cost and context limit display in the lean TUI
Technical Changes
- Derives provider API-key env vars forwarded to eval containers from the provider registry instead of a hard-coded list
- Refactors provider client boilerplate into shared helpers across openai, anthropic, gemini, bedrock, and dmr clients
- Consolidates OpenAI-compatible alias provider tests into a single shared test
- Extracts shared
calleeObjecthelper in lint cops to remove duplication - Adds
OTelTracerNamelint cop to enforce scoped OpenTelemetry tracer names - Replaces 44
time.Sleepcalls in the test suite with deterministic synchronization primitives
What's Changed
- docs: update CHANGELOG.md for v1.93.0 by @docker-read-write[bot] in #3339
- docs: sync documentation with recent main merges by @aheritier in #3340
- feat: add Baseten provider support by @dgageot in #3341
- feat: add OVHcloud AI Endpoints provider support by @aheritier in #3343
- chore: bump github.com/anthropics/anthropic-sdk-go to v1.55.0 by @dgageot in #3345
- feat: add Groq as a supported model provider by @Sayt-0 in #3358
- fix(openai): coalesce system messages for self-hosted and open-model endpoints by @Sayt-0 in #3357
- feat: add DeepSeek as a supported model provider by @Sayt-0 in #3361
- docs: group and collapse left navigation sections by @aheritier in #3360
- docs: list providers alphabetically by name in nav by @aheritier in #3364
- fix(docs): restore inline code contrast in light mode by @aheritier in #3365
- feat: collapse file picker shortcuts to one line on wide dialogs by @dgageot in #3366
- fix(tui): remove duplicate MCP-init spinner from sidebar by @dgageot in #3367
- fix: add 5s timeout to graceful-shutdown calls that used WithoutCancel by @dgageot in #3370
- feat: add Cerebras as a supported model provider by @Sayt-0 in #3368
- fix(tui): accept macOS Option-key chars for file picker toggles by @Sayt-0 in #3333
- feat: add Fireworks AI as a supported model provider by @Sayt-0 in #3369
- test: consolidate OpenAI-compatible alias provider tests by @dgageot in #3374
- refactor(config): derive provider API-key env vars from config by @dgageot in #3375
- feat: enforce lifecycle.startup_timeout for MCP/LSP toolset startup by @dgageot in #3373
- feat: add Hugging Face Inference Providers as a supported model provider by @Sayt-0 in #3379
- docs: tighten comment guidance in AGENTS.md by @dgageot in #3380
- fix: unblock headless tool-Ask paths (dispatcher + JSON runner) by @melmennaoui in #3377
- feat(session): add SafetyPolicy primitive and hook pass-through by @melmennaoui in #3378
- feat: add Together AI as a supported model provider by @Sayt-0 in #3376
- fix(anthropic): use token thinking for effort levels on models without adaptive support by @Sayt-0 in #3381
- fix(tui): keep tool call render stable while args stream by @rumpl in #3382
- feat(hooks/safer_shell): adapt classification to session SafetyPolicy by @melmennaoui in #3383
- feat: add Moonshot AI (Kimi) as a supported model provider by @Sayt-0 in #3384
- feat: add Vercel AI Gateway as a supported model provider by @Sayt-0 in #3385
- feat: add Cloudflare Workers AI and AI Gateway as model providers by @Sayt-0 in #3389
- test: make models-list tests hermetic and parallelizable by @dgageot in #3388
- feat(lint): add OTelTracerName cop to enforce scoped tracer names by @dgageot in #3386
- feat: add tags field to agent config metadata by @dgageot in #3390
- feat: add mouse support to the agent picker (hover, double-click, wheel) by @dgageot in #3391
- fix(runtime): suppress spurious empty-response warning for benign post-tool stops by @dgageot in #3392
- feat(memory): strengthen default toolset instructions by @dgageot in #3395
- fix: clamp max_tokens to the context window for OpenAI-compatible providers by @Sayt-0 in #3393
- test: make the test suite faster and sleep-free by @dgageot in #3399
- perf(config): memoize successful OCI reads to halve warm startup latency by @dgageot in #3397
- fix: show lean tui cost and context limit by @rumpl in #3400
- refactor: extract shared calleeObject helper in lint cops by @dgageot in #3396
- feat: show metadata tags as coloured chips in the agent picker by @dgageot in #3394
- refactor(provider): deduplicate provider client boilerplate by @dgageot in #3398
- feat(tui): add /effort command to select the model's reasoning level by @Sayt-0 in #3403
Full Changelog: v1.93.0...v1.94.0