CodeWhale is the canonical project, command, npm package, and
release-asset name. The legacy npm packagedeepseek-tuiis
deprecated and receives no further releases. Users coming from
v0.8.x legacydeepseek/deepseek-tuinames should migrate
withdocs/REBRAND.md.
Install
Recommended — npm (one command, both binaries)
npm install -g codewhaleThe wrapper downloads both binaries from this Release and places them in the same directory.
Docker / GHCR
docker run --rm -it \
-e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \
-v ~/.deepseek:/home/codewhale/.deepseek \
ghcr.io/hmbown/codewhale:v0.8.62The image ships the codewhale dispatcher and codewhale-tui runtime. The latest tag is also updated on release.
Cargo (Linux / macOS)
cargo install codewhale-cli codewhale-tui --lockedBoth crates are required — codewhale-cli produces the codewhale dispatcher and codewhale-tui produces the interactive runtime that the dispatcher delegates to. Installing only one binary will fail at runtime with a MISSING_COMPANION_BINARY error.
Manual download — platform archives (recommended)
Each archive below contains both the codewhale dispatcher and codewhale-tui runtime, plus an install script:
| Platform | Archive | Install script |
|---|---|---|
| Linux x64 | codewhale-linux-x64.tar.gz |
install.sh |
| Linux ARM64 | codewhale-linux-arm64.tar.gz |
install.sh |
| Linux RISC-V | codewhale-linux-riscv64.tar.gz |
install.sh |
| macOS x64 | codewhale-macos-x64.tar.gz |
install.sh |
| macOS ARM | codewhale-macos-arm64.tar.gz |
install.sh |
| Windows x64 (installer) | CodeWhaleSetup.exe |
NSIS setup |
| Windows x64 | codewhale-windows-x64.zip |
install.bat |
| Windows x64 (portable) | codewhale-windows-x64-portable.zip |
— |
Unix (Linux / macOS):
tar xzf codewhale-<platform>.tar.gz
cd codewhale-<platform>
./install.shWindows:
- For the installer path, run
CodeWhaleSetup.exe; it installs both binaries under%LOCALAPPDATA%\Programs\CodeWhale\binand adds that directory to the current-user PATH. - Extract
codewhale-windows-x64.zip - Run
install.bat(copies to%USERPROFILE%\bin) - Add
%USERPROFILE%\binto your PATH
The portable Windows archive skips the install script — extract and run from any directory. The NSIS installer is currently unsigned and may trigger Windows SmartScreen until a signing certificate is wired into the release pipeline.
Each platform also has bare, unarchived binaries attached below (codewhale-<platform> and codewhale-tui-<platform>) — these are what the npm wrapper and the in-app codewhale update download, whereas the .tar.gz / .zip archives above are the recommended manual download and additionally bundle an install script. The legacy npm package deepseek-tui is deprecated and is not republished. For migration from v0.8.x legacy binary names, see docs/REBRAND.md.
Verify (recommended)
Download the checksum manifests from this Release and verify:
# Linux — archive bundles
sha256sum -c codewhale-bundles-sha256.txt
# Linux — individual binaries
sha256sum -c codewhale-artifacts-sha256.txt
# macOS
shasum -a 256 -c codewhale-bundles-sha256.txt
shasum -a 256 -c codewhale-artifacts-sha256.txtWhat's in v0.8.62
Changed
- GLM-5.2 is now the default direct Z.AI model.
DEFAULT_ZAI_MODELresolves
toGLM-5.2in bothcodewhale-tuiandcodewhale-config; theglm-5.1
alias still resolves toGLM-5.1(the defaulting was decoupled from the alias
arm so it no longer tracks the default). Docs andconfig.example.tomlno
longer describe GLM-5.2 as an opt-in preview. - GLM-5-Turbo registered as a real model and wired as the faster/explore
sub-agent sibling for the GLM family: aGLM-5.2parent routes
faster/explore children toGLM-5-Turbo(direct Z.ai) andz-ai/glm-5-turbo
(OpenRouter), instead of down to GLM-5.1. GLM-5.1 and GLM-5-Turbo themselves
have no cheaper tier and keep children on the parent. type: "explore"sub-agents default tomodel_strength: "faster". Bounded
read-only lookup/search/status work now uses the cheaper same-family sibling
automatically, unless an explicitmodelormodel_strength: "same"is
supplied. Non-explore roles keep the conservativesamedefault.- GPT-5.5 / OpenAI Codex faster route stays on GPT-5.5 with reasoning
resolved tolow(the Codex Responses API has no trueoff, so the resolved
effort is now honestlowrather thanoffsilently rewritten). No
DeepSeek/GLM fallback is fabricated when no cheaper same-provider sibling
exists. DeepSeek Pro→Flash routing and its no-thinking faster lane are
unchanged. - Base prompt / delegate skill guidance updated to encourage parallel
read-only exploration (2-4type: "explore"sub-agents) for broad repo,
version, branch, benchmark, and API-surface investigations, while keeping
architecture, integration, and final verification in the parent. The
delegate skill examples now use provider-neutralmodel_strengthinstead of
hardcoded DeepSeek model ids. - Agent synthesis guardrails. The base constitution now frames tools around
sufficient evidence rather than open-ended persistence: extra reads, searches,
and delegation must target a missing fact, and agents should answer with
limits instead of broadening searches indefinitely. The runtime loop guard
now blocks duplicate read-only/delegated calls earlier and caps repeated
broad lookup/delegation loops in a single turn with a synthesis-forcing tool
error. Guard metadata distinguishes exact duplicates
(identical_tool_call) from no-progress loops (no_progress_tool_loop). - Sub-agent handoff and visibility. Direct sub-agent completions are drained
before the next parent model request, so finished children can wake the main
model promptly instead of waiting for an empty-tool-use branch or idle engine
path. Nested sub-agents now report completions to their immediate parent
inbox; the main model still receives only direct-child completions, avoiding
grandchild floods while preserving nested evidence flow. Sub-agent output
guidance now requires child-agent provenance when a sub-agent relies on a
child report: cite the childagent_idand the child's EVIDENCE line(s), and
do not present child findings as directly verified facts. The sidebar orders
sub-agents as a parent/child tree and annotates nested rows with parent and
depth information in hover text. - Sub-agent summary provenance (#2652). A sub-agent's free-text result is now
explicitly treated as an unverified self-report rather than confirmed
evidence. The completion sentinel carriessummary_kind: complete | truncated
so the parent model can branch on whether it saw the full report or a clipped
excerpt. Short summaries (≤ 12,000 chars) get a soft "re-verify material
claims" suffix; longer ones are head+tail truncated with an honest marker
stating the elided middle is not retrievable viaretrieve_tool_result.
Every summary therefore carries exactly one boundary marker, never both. - Provider metadata centralization. Provider env vars, config keys, aliases,
and auth hints are now resolved through the sharedProviderMetadataregistry
acrosscodewhale-config,codewhale-tui, andcodewhale-cli, reducing drift
between the provider picker,codewhale auth,doctor --json, and setup
hints.
Added
- Agent clarification questions (#3102). Agents now have a first-class
request_user_inputtool to ask the user structured clarifying questions
through a modal UI surface instead of only emitting a chat message and hoping
the user notices. Mirrors the approval/secret-request flow the harness
already used for permissions. The tool accepts 1-3 questions, each with a
header, an id, 2-4 selectable options (label + description), and
allow_free_text/multi_selectflags (both default tofalsefor
back-compat). Input is validated up front with actionable errors. Wired
across all layers: therequest_user_inputtool, engine handling
(turn_loop→approval), an interactive TUI modal (UserInputView) with
full keyboard navigation, and the runtime protocol
(EventFrame::UserInputRequest+AppRequest::SubmitUserInput) so headless
/ app-server clients can answer programmatically. Parity tests cover the
wire round-trip and the omitted-flags default. - Transcript hyperlinks — out-of-band OSC 8 (#3029). Clickable file /
file:line / URL links now reach the terminal through a column-drift-safe
path. Link payloads are embedded in-band by the markdown renderer, then
extracted out of the ratatui buffer cells and re-emitted out-of-band by
ColorCompatBackend— so theESCbytes never occupy display columns or
corrupt selection. Supporting terminals get live hyperlinks; others see the
label text unchanged. Clipboard/selection extraction strips residual codes as
defense-in-depth. - CodeWhale-only skill discovery gate (#3296). New
[skills].scan_codewhale_only = truelimits session-time skill discovery to
CodeWhale-owned roots (<workspace>/.codewhale/skills,~/.codewhale/skills,
and any explicitskills_dir) while ignoring cross-tool directories such as
.claude/skills,.opencode/skills,.cursor/skills, and~/.agents/skills.
The default remains the broad compatibility scan. - Permission/ask runtime rules (#3295). Sibling
permissions.tomlask-only
rules are now loaded by the TUI engine and applied toexec_shellbefore
Auto/session approval shortcuts. Matching ask rules force an approval prompt
in otherwise auto-approved flows and are rejected under
approval_mode = "never". - Runtime API no-auth documentation.
docs/RUNTIME_API.mdnow documents
codewhale app-server --insecure-no-authfor loopback-only testing and warns
against combining it with--mobileon0.0.0.0.
Fixed
- TUI polish. The empty-startup welcome block is centered by the actual
rendered text width, fixing the off-center layout left over from the old
sidebar-oriented welcome composition. Streaming HTTP body read errors now
explain whether CodeWhale can retry before output, or is surfacing a warning
after partial output to avoid replaying and duplicating streamed text. - Config comment preservation. Rewriting
config.toml,settings.toml, or
tui.tomlnow merges user comments and formatting back into the serialized
document; if comment merge fails, the write falls back to plain serialized
output rather than failing. - Snapshot gate respected for per-tool snapshots (#3292). Per-tool snapshots
now check[snapshots].enabledbefore writing, matching the existing
session-level gate. - Poppler
pdftotextdetection (#1667). The dependency resolver now probes
pdftotext -vinstead of--version, because Poppler treats--versionas
an input filename. Fixes detection on systems where only Poppler is installed. - Plan confirmation checklist visibility. The Plan-mode confirmation modal
now shows the active checklist under the plan details, so users can review the
concretechecklist_writework breakdown before accepting or revising a plan.
Retroactive credits
A credit-reconciliation pass found shipped community fixes that were never
recorded in this changelog. Crediting them now, with the version they shipped in:
- Global
~/.deepseek/AGENTS.mdfallback loading — thanks @manaskarra (fix) and @xfy6238 (report) (#1157, v0.8.27) - CRLF SSE event parsing for MCP — thanks @reidliu41 (fix) and @djairjr (report) (#1309, v0.8.29)
- Reduce-motion default on VTE/flicker terminals — thanks @Geallier (report) (#1470, v0.8.34)
portable-pty0.9 upgrade for LoongArch64 — thanks @quentin-lian (fix) and @k0tran (report) (#1531, #1992, v0.8.46)DEEPSEEK_ALLOW_INSECURE_HTTPguard for LAN vLLM — thanks @F1LT3R (report) (#1656, v0.8.47)- Hidden
reasoning_contentkept in English regardless of locale — thanks @cmyyy (report) (#1842, v0.8.47) ExternalToolabstraction layer — thanks @aboimpinto (#1794, #2294, v0.8.48)- Ephemeral generated project context — thanks @Final527 (report) (#3058, v0.8.59)
Contributor credits for this release live in the changelog entry above —
thank you to everyone whose reports, PRs, reviews, and reproductions shaped it.
See CHANGELOG.md for full notes and docs/CHANGELOG_ARCHIVE.md for older releases.