ChatGPTClaudeGrok / X / CursorGemini

dsh-multi-shell: Letting DeepSeek Harness Models Pick a Shell Backend Per Call

deepseekv41flash/dsh-multi-shell

Tools & CapabilitiesVerified
Listed on 2026-10-30
Page last updated 2026-11-05

A DSH plugin that registers a single shell tool, letting the model pick Git Bash, PowerShell, or WSL as the backend on each call.

dsh-multi-shell is a multi-backend shell DSH plugin for DeepSeek Harness that registers a single shell tool while handing backend choice to the model. It addresses the case where a user setting fixes the backend and the model cannot switch per command, so POSIX scripts, PowerShell commands, and Linux distro commands all run within one session. Core capabilities include choosing gitbash, powershell, or wsl per call, targeting a distro, controlling execution with workdir and timeoutMs, and managing long commands as background jobs.

How to Install

install
npmdsh plugin --profile web add dsh-multi-shell
Category
Tools & Capabilities
Platform
DSH Plugin
Author
deepseekv41flash
Distribution
Plugin

dsh-multi-shell Key Features

One shell tool, model picks backendGit Bash, PowerShell, WSL supportPowerShell sandbox and approvalBackground jobs and timeoutsNo version gating across DSH releases
Listed on dsh-plugin.org

dsh-multi-shell Repo Summary

What Does It Do?

It is a DSH plugin for DeepSeek Harness that registers a single shell tool while letting the model pick the execution backend on every call: Git Bash (default), PowerShell, or WSL. It solves the problem of a backend being fixed by user settings so the model cannot switch per command, letting one session run POSIX scripts, PowerShell commands, and Linux distro commands alike. Maintained by deepseekv41flash under the MIT license, it is pure ESM with zero build step and was last updated on 2026-10-30.

Core Features

  • Per-call backend choice: the shell parameter accepts gitbash, powershell, or wsl, falling back to the configured default when omitted, so the model decides based on command syntax.
  • Full parameter control: command and description are required, plus distro (WSL only), workdir (relative paths expand against the session directory, and WSL maps Windows paths to /mnt/...), and timeoutMs (default 120000, cap 600000, killing the process tree on expiry).
  • Background jobs: run_in_background returns a job id managed through job_output / job_kill for long tasks without a timeout.
  • Explicit sandbox semantics: PowerShell wraps argv through the sandbox in read-only / workspace-write modes and fails closed, refusing to run when no provider is available; Git Bash and WSL are unconfined, and confined sessions get a model-visible unconfined notice on every render.
  • Parseable output: non-zero exits return a trailing [exit code: N], timeouts start with [timed out after Nms], and output beyond 64 KiB is truncated with the full output file path provided.
  • Loose version gating: only * ranges are declared and no version checks live in the module, so optional services resolve at call time and a missing one breaks a single call rather than the whole fiber load.

How to Use This Plugin?

After enabling it in DSH, the model calls the shell tool with command and description, adding the shell parameter to switch backends, for example powershell for commands with Chinese output or wsl with distro to target a specific distribution. For elevation, the plugin writes the Sudo for Windows inline-mode hint into the tool description so it can be triggered from the gitbash backend, but each call raises one UAC prompt with no credential caching, so scripts must carry their own timeout and cleanup. The default backend, pwsh / gitbash / wsl paths, timeouts, and output limits are overridden as needed in the profile config, and numeric values are validated at startup with clear field-level errors.

How to Troubleshoot This Plugin?

If the PowerShell backend throws encoding-related errors in a confined read-only session, it is because the read-only sandbox runs pwsh under ConstrainedLanguage; the plugin's preamble guard stops the two InvalidOperation lines from hitting stderr on every call, at the cost of non-ASCII output staying in code-page encoding there. If a command did not run and the sandbox is reported unavailable, the runner itself failed and was classified as SANDBOX_UNAVAILABLE, so repair the sandbox provider per the official instructions and retry. Passing sandbox_permissions to gitbash or wsl raises an error because those backends are not sandboxed; drop the parameter instead.

This page is an independent rewrite of the plugin's official README — for authoritative documentation and the latest changes, refer to the source: deepseekv41flash/dsh-multi-shell. The plugin is third-party code that runs on your machine once installed; inclusion does not imply endorsement — please review the source before installing.

Install, update, and uninstall this plugin in the Plugin Market of DeepSeek Harness's DSH Plugin Hub
ChatGPTClaudeGrok / X / CursorGemini

DSH Plugin FAQ