Hmbown/CodeWhale · error

installed dsh is incompatible with this integration: {reason

Error message

installed dsh is incompatible with this integration: {reason}

What it means

`ensure_launchable_dsh` reports `Incompatible` when the detected dsh version is older than the release Codewhale verified, or the binary lacks the `--patch` flag the whole overlay mechanism depends on. `{reason}` names which condition failed. The integration only writes overlays launchable by the installed dsh, so it refuses rather than generating an overlay the installed dsh would ignore or reject.

Source

Thrown at crates/tui/src/integrations/cli.rs:516

            );
            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

  1. Upgrade dsh to at least the verified release: `npm i -g @deepseek-ai/dsh@latest`
  2. Check `codewhale integrations dsh status` — it prints the detected version and compatibility label
  3. Confirm the new binary is the one being found first on PATH (`which -a dsh`)
  4. If you must stay on old dsh, do not use this integration: the overlay would not be honored anyway
Defensive patterns

Strategy: validation

Validate before calling

let detection = detect_now();
if !matches!(detection.compatibility, dsh::DshCompatibility::Verified { .. }) {
    eprintln!("upgrade dsh: npm i -g @deepseek-ai/dsh@latest");
    return Ok(());
}

Type guard

fn dsh_compatible(report: &DshStatusReport) -> bool {
    !matches!(
        report.state,
        DshIntegrationState::Incompatible { .. } | DshIntegrationState::NotInstalled | DshIntegrationState::Offline { .. }
    )
}

Prevention

When it happens

Trigger: connect/update/launch/install-bundle with a dsh release predating the `--patch` seam, or older than the version baked into Codewhale's verified-release constant. Detection runs `dsh --version` and `--help`; a `--help` without `--patch` triggers this even if the version number looks new enough.

Common situations: Pinning dsh to an old version in CI; a system-wide old npm global install shadowing a newer one; a dsh fork or wrapper that drops the `--patch` flag; using a preview/renamed build whose help text differs from the verified release.

Related errors


AI-assisted analysis of Hmbown/CodeWhale@8880682c63 (2026-08-16). Data as JSON: /api/errors/bddc85d061887414. Report an issue: GitHub.