Changelog / release
0.12.15 — Tool calls stop truncating what your agent writes
Released 2026-08-18 · full changelog · GitHub releases
If a coding agent wrote files through a local Qwen model on 0.12.5–0.12.14, upgrade first — outputs could be silently shortened. Also in this release: Qwen3.8-27B up to 23% faster with one flag (identical output, checksummed), downloads that reroute instead of stalling, voice transcription that stops inventing words, and safer model loading.
- Upgrade first if you run coding agents. On 0.12.5–0.12.14, an agent (Claude Code, Aider, and friends) writing files through a Qwen 3.5/3.6 model could have its output silently shortened: a file meant to be 710 bytes arrived as 11 bytes, and nothing looked wrong — no error, valid response. Even short values could corrupt (
Tokyo→Toyo). The cause was our constrained decoding fighting the model’s own output format; 0.12.15 fixes it. If your agent edited anything important on those versions, it’s worth re-checking those files. Gemma-4 and JSON-wire models were never affected (#1996, #1997). - Qwen3.8-27B gets faster — for free. Add one flag —
--speculative-config '{"method":"mtp"}'— and generation goes 38.9 → 44.1 tok/s on an M3 Ultra, up to 23% faster when the model writes code, JSON or lists. The output is exactly the same: same sha256 with it on and off. Works on the aliases that ship an MTP head (#2004); in the desktop app it’s a switch under Settings → Performance (#1987). - Downloads stay fast. Pulling a model now watches its own transfer speed, file by file; if a download slows to a crawl, that file automatically finishes from Hugging Face instead — mid-pull, no restart. In our fresh-install test a 9B model was downloaded and chatting in about two minutes at 90 MB/s.
RAPID_MLX_MIRROR_MIN_MBPS=0restores the old behaviour if you ever need it (#2015). - DeepSeek Harness works out of the box.
rapid-mlx agents dsh --setupwires thedshcoding agent to your local server — it joins Claude Code, Codex, Hermes and Aider as agents we run against every release before shipping (#1982). And when the served model can’t do step-by-step reasoning,dshno longer shows an effort selector that does nothing (#1984). - Voice transcription stops inventing words. Pauses and silence used to come back as imagined speech — Whisper was transcribing its own padding. A silent clip now returns an empty transcript, like it should (#1964).
- Safer to try models you just found. A model repository can no longer run code on your machine simply by being loaded; downloaded Python artifacts are integrity-checked (SHA256); the audio loader refuses pickled weights unless you explicitly allow them;
rapid-mlx sharewarns before a key leaves your machine; and--trusted-hostscan pin which HTTP Host headers your server answers (#2011). - Fixes.
install.shrequires a native arm64 Python and repairs a half-built venv (#1994); hybrid vision models get the right cache instead of answering from stale state (#1963); media-only models no longer appear as launchable chat models (#1965);rapid-mlx psandmodelsstop colliding columns andconnectno longer announces a server that is not running (#2006); the unusedjlenssubcommand is removed (#1992). - Desktop. Settings gains a Developer section in development builds only — rehearse first-run without touching real state, with every erasure opt-in and named before it happens (#1993); the status footer sheds readouts instead of squeezing six chips into four’s width (#1991); an MTP sidecar whose quantization differs from the base now warns instead of silently degrading (#1989).
- @xiaoxiunique — Settings → Developer with re-onboarding (#1993) and the status-footer fix (#1991)
- @rinaldofesta — warn when an MTP sidecar’s quantization differs from the base (#1989)
- @YUHAO-corn — strip multi-line release-note comments (#1990)
- @moinulmoin — reported the x86_64-Python installer trap (#1994)