Preface

DeepSeek Harness (DSH) is an open-source agent runtime from DeepSeek, built on the core philosophy of “everything is a plugin” — capabilities are assembled and composed through Cordis plugins and agent presets rather than being hardcoded into the core code. The community has developed many useful plugins, which can be browsed in the SkillHub Plugin Repository. Note that this directory is community-maintained and has no official affiliation with DeepSeek or High-Flyer.

If you’ve used DSH’s built-in “Minimal Mode,” you likely appreciate its design approach: a fixed persona, only two tools exposed — str_replace_editor and bash — and no context compression, making it suitable for coding tasks requiring stable, predictable behavior. However, on Windows, this preset has long been nearly unusable — not because Git Bash isn’t installed, but due to two underlying hard limitations:

  1. PTY Platform Limitations: Minimal Mode relies on persistent bash sessions, but @deepseek-ai/dsh-subprocess-local on win32 directly rejects terminal inspection (error: terminal inspection is unsupported on platform win32).
  2. Missing Shell: Even if the PTY issue is bypassed, @deepseek-ai/dsh-bash-local looks for bash in the PATH, which is not present by default on Windows.

The community maintainer liceses released dsh-gitbash-preset (GitHub repo: liceses/dsh-gitbash-preset, SkillHub category “Workflow,” approximately 135 stars) specifically to address this pain point: it provides a one-click installation of an agent preset named “Minimal Mode (Git Bash),” mapping bash invocations to the MSYS bash included with Git for Windows, enabling Windows users to access the same minimal tool interface.

What Is This

dsh-gitbash-preset is a DSH workflow-type plugin, with the npm package name @icelily/dsh-gitbash-preset (MIT License). It does not modify the DSH core; instead, it inserts a Cordis bundle patch into the web profile, copying the packaged minimal-gitbash preset to the user’s preset directory (${DSH_HOME:-~/.dsh}/.agent-presets/minimal-gitbash/) at startup.

The delivered preset maintains the same tool surface as the official Minimal Mode — fixed persona, str_replace_editor, no context compression — with the key difference being the bash executor: each command is invoked via bash -c <command> using Git for Windows’ bash, coupled with sandbox-aware gating that prevents silently bypassing security boundaries under restricted policies.

Core Features and Highlights

Based on the repository README and SkillHub directory page, the plugin’s main capabilities can be summarized as follows:

  1. Idempotent Installation: The plugin automatically deploys preset files on startup; if the directory already exists, it skips installation. Files are only overwritten when force: true is configured.
  2. Automatic Bash Path Detection: It sequentially tries the GIT_BASH environment variable, common installation directories under ProgramFiles / ProgramFiles(x86) / LOCALAPPDATA, bash.exe in PATH, and finally falls back to bash, eliminating the need to manually specify absolute paths.
  3. Sandbox-Aware Gating: The MSYS runtime cannot start within Windows restricted token sandboxes (unable to create signal pipes), so commands only execute under the “Full Access” (danger-full-access) policy. When restricted, it throws a clear error with upgrade instructions instead of failing silently.
  4. Unchanged Minimal Experience: The model still sees the familiar minimal persona and dual-tool combination, suitable for developers accustomed to the official Minimal Mode workflow.

In terms of working principles, the plugin inserts the dsh-gitbash-preset line into the web profile via cordis.patch.yml; the gitbash-shell group in agent.cordis.yml provides shell services with an entry-local realm; and gitbash-executor.mjs handles timeouts, background tasks, output truncation, and error diagnostics.

Installation and Enablement

The officially recommended installation method (as per GitHub README and cordis.patch.yml comments) is as follows. Note that you must specify the web profile, and restart DSH after installation for changes to take effect:

dsh plugin --profile web add @icelily/dsh-gitbash-preset

Alternatively, you can manually copy the agent-presets/minimal-gitbash/ directory from the repository to ~/.dsh/.agent-presets/ without installing the plugin, or merge cordis.patch.yml into your own profile patch layer.

To overwrite existing preset files, set force: true in the plugin configuration (default is false, preserving user-added files).

Typical Usage

After installing and restarting DSH, follow these steps to use it:

  1. In the Web interface, create a new session and select Minimal Mode (Git Bash) as the agent preset.
  2. There are two ways to enable bash:
    - Switch the session sandbox to Full Access, after which all bash calls will go directly through Git Bash.
    - Or keep workspace-write and, after the first call failure, perform a one-time upgrade using sandbox_permissions: "danger-full-access" with justification as prompted (following the standard approval process).

The preset executor supports several adjustable parameters (in the gitbash-executor section of agent-presets/minimal-gitbash/agent.cordis.yml), for example:

Field Default Value Description
shellPath Auto-detect Used with priority when explicitly specified
timeoutMs 120000 Default timeout per command
maxTimeoutMs 600000 Maximum timeout limit
maxOutputBytes 64000 Bytes retained per stream
graceMs 3000 Grace period between SIGTERM and SIGKILL

Use Cases and Considerations

Suitable for:

  • Developers who regularly use DSH Web on Windows and want to leverage the official Minimal Mode for file editing and shell operations.
  • Teams that have Git for Windows installed and prefer model commands to run via MSYS bash rather than PowerShell.
  • Users who need a tool interface similar to Minimal Mode on Linux/macOS but don’t want to write Cordis patches manually.

Limitations to Note:

  • When the session sandbox is workspace-write or narrower, Git Bash cannot start — this is a known limitation of MSYS and restricted tokens. The plugin does not bypass the sandbox; you need to switch to Full Access or perform a one-time upgrade.
  • Unlike the original Minimal Mode, bash creates a new shell for each invocation and does not retain session states like cd or export — because persistent PTY sessions are unavailable on Windows, this is a deliberate design choice, not an oversight.
  • The plugin runs with the permissions of the current DSH process. Before installation, it’s recommended to read the GitHub source code and the MIT License to ensure it aligns with your security policies. The repository requires Node.js >= 20.

If you need “all agent modes to reroute pwsh to Git Bash,” the same maintainer offers sibling plugins like dsh-all-gitbash, which can be chosen based on specific scenarios. This article focuses on dsh-gitbash-preset, which only addresses the usability of Minimal Mode on Windows.

Conclusion

For Windows users of DSH, the long-standing “visible but unusable” issue with Minimal Mode is a genuine pain point. dsh-gitbash-preset bridges this gap through a community plugin: it preserves the Minimal Mode’s tool philosophy, maps bash to Git for Windows, and maintains security boundaries with sandbox gating. If you’re browsing workflow-type plugins on SkillHub, consider adding this one to your trial list.