Hmbown/CodeWhale · error
dsh is offline: {reason}
Error message
dsh is offline: {reason} What it means
`ensure_launchable_dsh` reports `Offline` when a `dsh` binary exists but could not report a version — the detection probe (`dsh --version` / `--help` via the process runner) failed to spawn or returned nothing usable. `{reason}` carries the underlying spawn/parse error. dsh is present but not executable in practice, so the CLI refuses to plan or launch against it.
Source
Thrown at crates/tui/src/integrations/cli.rs:514
" (receipt history is kept at {}; $DSH_HOME is never touched)",
paths.receipt.display()
);
confirm(yes, "Remove the DSH integration files?")?;
let removed = dsh::remove(&paths)?;
println!("removed {} file(s)", removed.len());
Ok(())
}
}
}
fn ensure_launchable_dsh(report: &DshStatusReport) -> Result<()> {
match &report.state {
DshIntegrationState::NotInstalled => {
anyhow::bail!(
"dsh is not on PATH; install the official DeepSeek Harness first (npm i -g @deepseek-ai/dsh)"
)
}
DshIntegrationState::Offline { reason } => anyhow::bail!("dsh is offline: {reason}"),
DshIntegrationState::Incompatible { reason, .. } => {
anyhow::bail!("installed dsh is incompatible with this integration: {reason}")
}
_ => Ok(()),
}
}
View on GitHub (pinned to 8880682c63)
Solutions
- Run `dsh --version` manually in the same shell — its failure output is the real problem
- If the shim is stale, reinstall dsh: `npm i -g @deepseek-ai/dsh` (preferably after fixing the Node install)
- Ensure the `node` that dsh's shim references is present and first on PATH
- After dsh --version works, re-run the dsh subcommand; state should move to detected/connected
Defensive patterns
Strategy: validation
Validate before calling
let detection = detect_now();
if matches!(detection.compatibility, dsh::DshCompatibility::Incompatible) {
eprintln!("dsh is present but unusable; check `dsh --version` output");
return Ok(());
} Type guard
fn dsh_online(report: &DshStatusReport) -> bool {
!matches!(report.state, DshIntegrationState::Offline { .. })
} Prevention
- Run `dsh --version` after every Node or dsh upgrade to catch broken shims early
- Reinstall global npm packages when switching Node version managers
- Treat any 'shim exists but cannot execute' symptom as an offline dsh, not a missing one
When it happens
Trigger: connect/update/launch/install-bundle when the dsh shim exists on PATH but is broken: a node shim pointing at a removed Node install, an exec-format mismatch, a truncated script, or `dsh --version` crashing. `{reason}` distinguishes spawn failure from unusful output.
Common situations: Upgrading or removing Node while leaving global npm shims behind; installing dsh with a different Node version manager and switching versions; corrupted global npm package; Windows .cmd shims with a broken node association; disk-full truncating the shim script.
Related errors
- dsh binary path is unknown
- DSH plugin path not available: {reason}
- dsh is not on PATH; install the official DeepSeek Harness fi
- dsh binary is unknown
- No local {} API key was found in config, the secret store, o
AI-assisted analysis of Hmbown/CodeWhale@8880682c63 (2026-08-16).
Data as JSON: /api/errors/df84658440768f50.
Report an issue: GitHub.