DSH Toolbox

DeepSeek Harness errors

Most DSH failures are one of five: the transport to the model provider, a missing corepack, a plugin built for another dsh, an old Node, or a wildcard host flag.

Each section is the message you saw, why it happens, and one command to run. No theories.

Transfer interrupted

The session is fine; the request to the model provider never completed. Usually the network path, a proxy that drops long-lived streams, or a provider key that expired.

Check which profile and provider are configured before touching anything else:

dsh --profile web --dump-config

corepack missing

Plugin management runs pnpm through corepack. Node 24 ships corepack, but some version managers and Linux packages strip it.

Enable it once, then retry the plugin command:

corepack enable && dsh plugin --profile web add @deepseek-ai/dsh-otel

Plugin version mismatch

The plugin declares engines.dsh, and your dsh is outside that range. The CLI skips the plugin at boot instead of running a combination that may crash.

Upgrade dsh, or accept the risk for that one package:

dsh plugin allow-version <package>

Node too old

The package requires Node.js 24.9.0 or newer. npm prints EBADENGINE and installs anyway, then the CLI fails at start-up with a syntax error.

Check the version, then install the current LTS:

node --version
npm install -g @deepseek-ai/dsh@latest

Wildcard address rejected

--host takes one concrete local IPv4 or IPv6 literal. Wildcard addresses are rejected on purpose, so a container or a LAN setup that expects 0.0.0.0 fails at boot.

Pass the address you actually want to bind:

dsh web --host 192.168.1.20 --port 8080 --no-open

Common questions

Where do I see the error text?

In the terminal that started the profile. dsh web prints the stack there, not in the browser tab.

Do these fix a logged-out state?

No. Credentials live in the profile; re-run the login flow for the provider instead of editing files by hand.

What if none of these match?

Run dsh --profile web --dump-config and read the composed tree. A row that does not exist yet is usually the answer.