Introduction

DeepSeek Harness (DSH) adopts a plugin-based architecture. By default, models use bash or PowerShell when executing tasks. dsh-nushell-only is a Profile Bundle that takes over DSH’s shell execution layer, forces all shell execution to use Nushell, and works with prompt-based guidance to prevent the model from outputting Bash or PowerShell syntax.

Features

This plugin mainly includes modifications across four aspects:

  1. Taking over the execution layer
    The plugin disables DSH’s built-in bash-sandbox and pwsh-sandbox, replacing them with a custom dsh-nushell-only/executor. All calls through ctx.shell (including model tools, background tasks, Hook bridging, etc.) become nu --no-config-file -c "<command>". Parameter settings (such as timeout, output limit, spill file) follow the first-party implementation; only the execution command is replaced.

  2. Enforcement guard
    The executor has a built-in guard mechanism that rejects attempts by the model to switch to other shells (such as bash -c, sh -c, cmd /c, pwsh -Command, wsl, etc.). This feature is enabled by default and can be disabled or configured with an allowlist.

  3. Teaching layer
    It provides nushell-rules and nushell-guide. The plugin rewrites the tool descriptions and command parameter descriptions seen by the model into Nushell dialect, includes a syntax manual and a Bash/PowerShell comparison table, and attaches the detected Nushell version during each assembly.

  4. Dialect pre-check and correction
    Before execution, it intercepts common Bash/PowerShell habits (such as 2>&1, 2>$null, $env:VAR, Get-Content, foreach, etc.) and suggests specific Nushell syntax alternatives. When execution fails, it appends a hint based on the actual Nushell error code.

Installation and Enablement

Run the following command to install the plugin:

dsh plugin --profile web add dsh-nushell-only

After installation, restart the Profile.

Configuration and Verification

If the Profile already contains the old dsh-nushell plugin, you must first uninstall it to avoid conflicts:

dsh plugin --profile web remove dsh-nushell

After installation, you can verify that the configuration is active with the following command:

dsh --profile web --dump-config | grep -n "nushell"

Configuration options include:
- enforceNushellOnly: false: Disables the enforcement guard.
- foreignShellAllowlist: Sets the allowlist for calling other shells.

Notes

  • Version compatibility: The plugin is compatible with DSH 0.2.0-rc.2.
  • Runtime requirement: Node.js version must be >=22.19.0.
  • Dependencies: The installer validates runtime versions according to peerDependencies and refuses installation if they do not match.

Conclusion

dsh-nushell-only is suitable for developers who want to standardize the shell ecosystem or cultivate Nushell habits for their models from scratch. By taking over the execution layer and the prompt layer, it forces the model to use Nushell and reduces errors caused by environment differences.

Catalog page: dsh-nushell-only - SkillHub
Source code: YMRwithNoworry/dsh-nushell-only - GitHub