DSH Toolbox

@deepseek-ai/dsh-shell

@deepseek-ai/dsh-shell is a DeepSeek Harness capability seam: Bash executor seam (ctx.shell). On Windows, dsh-pwsh-local supplies the PowerShell implementation instead.

Published on npm at 0.0.1-rc.5. It installs into $DSH_HOME/profiles/<name> as a dependency of that profile.

Install

Plugin management forwards to pnpm inside the profile directory, so this behaves like pnpm add.

dsh plugin --profile web add @deepseek-ai/dsh-shell

What it does in a profile

Bash executor seam (ctx.shell). On Windows, dsh-pwsh-local supplies the PowerShell implementation instead. Currently 0.0.1-rc.5. To check whether it is already installed, read the dependencies in $DSH_HOME/profiles/<name>/package.json, or read the composed tree with --dump-config.

When you need to look at this package

Symptom: a command runs and never comes back, or background work vanishes. run(spec) resolves when the command finishes and rejects only for infrastructure failures — a nonzero exit is a result, not a rejection. start(spec) returns a ShellProcess handle immediately and applies no timeout.

What breaks if you remove or replace it

Remove it and every tool that shells out fails. On Windows the shipped profile does not use this package: windows.cordis.patch.yml disables tool-bash and mounts the PowerShell executor instead, so a “bash is broken on Windows” report is usually this swap, not a fault.

The package it gets confused with

It is not dsh-jobs. The executor runs a command; jobs tracks it. Job ids, ownership, collection, cancellation and completion notices belong to ctx.jobs. The per-session sandbox override rides the sandbox/mode event and the effectiveSandboxMode(events) fold, not the shell call.

Common questions

How do I remove it again?

Use dsh plugin --profile <name> remove @deepseek-ai/dsh-shell, the mirror of the install command.

What if the version does not match my dsh?

Plugins declare a compatible range through engines.dsh or DSH peer dependencies. Outside that range the CLI skips the plugin and prints the requirement instead of booting a combination that may crash.