0.24.0 (2026-07-14)
Features
- add ultrathink keyword detection and ultracode effort level (#1551) (#1630) (fb11372)
- aimlapi: add guided top-up and key provisioning (#1886) (9a53290)
- codex-oauth: manual callback URL paste for SSH / remote sessions (#1288) (#1414) (c3db07f)
- doctor: add WebSearch backend diagnostics (#1884) (e204d5a)
- model-picker: surface inactive provider profiles in /model (#1119 piece 2) (#1164) (db01038)
- provider: add Cloudflare Workers AI integration (#1100) (#1178) (eeed68f)
- settings: add settings-based subscription override and agy terminal support (#1731) (a5b2779)
- settings: per-model context_window and max_output_tokens overrides (#1234) (06e0ae6)
Bug Fixes
- bg: match background-session command args on token boundaries (#1834) (67bebbd)
- bg: revalidate process identity before signals (#1937) (af0885d)
- cache: use a monotonic clock for conversation-cache LRU recency (#1965) (9fc8806)
- clipboard: fall back to image retrieval after Windows probe failure (#1922) (218064e)
- command-semantics: cover remaining linter runner exits (#1700) (3b41cf3)
- command-semantics: treat linter exit 1 as violations, not an error (#1846) (2f98208)
- commands: escape named-argument names before building the regex (#1914) (3f85b25)
- config: recover from a healthy backup when the global config is corrupt (#1819) (5105dff)
- context: order pruned messages by envelope timestamp, not phantom field (#1934) (2970b5f)
- diff: count dropped lines correctly in truncated diff snippet (#1916) (87c457c)
- diff: don't overcount new-file additions by the trailing newline (#1873) (8d90849)
- diff: number diff-snippet hunks by their new-file position (#1917) (0369c86)
- editor: account for NFC boundary composition in insert offset (#1954) (ed3927d)
- editor: guard editor-override lookup against prototype keys (#1915) (de751f3)
- effort: keep effort indicator visible in prompt footer (#1919) (b588c26)
- env: align WebSearch and Ollama env docs (#1904) (ae9a765)
- gitdiff: apply the 1MB diff cap in bytes, not UTF-16 char length (#1932) (ffc5a6e)
- installer: gate native-binary install behind NATIVE_PACKAGE_URL (#1838) (780f703)
- keep footer mounted across slash suggestions (#1943) (4faf666)
- mcp: preserve ":-" inside ${VAR:-default} default values (#1933) (9bf9926)
- model: default NVIDIA NIM main loop model (#1928) (5918e33)
- nvidia-nim: enable reasoning template kwargs (#1893) (de97295)
- openai-shim: guard tool-arg field lookup against prototype keys (#1880) (aac2d8c)
- permissions: resolve relative worktree edit paths (#1930) (4f971a1)
- powershell: make CMDLET_PATH_CONFIG prototype-safe (#1913) (7995b9f)
- provider: add Use Anthropic option to switch back from third-party profiles (#1429) (f7d472e)
- proxy: bypass subdomains for a bare NO_PROXY domain entry (#1848) (a46046e)
- query-guard: exclude human-interaction wait from session timeout (#1879) (2047fb2)
- query: warn before repeated tool failures stop (#1927) (2448ea9)
- read: report zero lines for an empty file (#1881) (cde6e09)
- safety: relax over-restrictive safety checks for benign coding tasks (#1897) (e086e8c)
- shim: don't infer Z.AI tool_stream for non-catalog GLM gateways (#1908) (2259c80)
- suspend footer work during ctrl-c feedback (#1963) (f961ae7)
- tokens: include attachments in incremental cache key (#800) (5afd4f4)
- tools: keep HY3 tool schemas inline (#1923) (64d164d)
- update: avoid upstream package commands for custom builds (#1944) (85cf2ac)
- websearch: add built-in provider request timeouts (#1874) (8599560)
- websearch: match allowed/blocked domains case-insensitively (#1872) (2308881)