DSH Standard Mode on Windows uses PowerShell as the shell by default, but development work often requires Linux commands (such as grep, rsync, etc.). dsh-wsl-preset maps shell invocations in DSH Standard Mode to Windows Subsystem for Linux (WSL), giving Windows development environments full Linux command-line capabilities.

Plugin Positioning

  • Name: dsh-wsl-preset
  • Maintainer: yukitakasama
  • Category: Workflow
  • License: MIT

Core Capabilities

  • One-click installation: Install the “WSL mode” agent preset with one click through dsh plugin.
  • Environment mapping: Change the shell executor to wsl -e bash -c, while preserving the standard persona and full tool surface (bash, file system, search, skills, workflows, delegation, present, etc.).
  • Automatic discovery: Automatically discover whether wsl.exe is available, without hard-coded paths.
  • Sandbox awareness: WSL cannot be launched inside a Windows restricted-token sandbox. Execution is allowed only under the full-access policy; when restricted, clear escalation guidance is provided.
  • Idempotent self-repair: On plugin startup, the preset is installed to ${DSH_HOME:-~/.dsh}/.agent-presets/wsl/. If existing files are inconsistent, they are automatically refreshed to resolve issues left behind by older versions.

Installation

Recommended: direct GitHub installation

dsh plugin --profile web add github:yukitakasama/dsh-wsl-preset

Pin a specific version:

dsh plugin --profile web add github:yukitakasama/dsh-wsl-preset#v0.3.0

Usage Flow

  1. Create a new session in the web UI and select WSL mode.
  2. Enable command execution:
    • Switch the session sandbox to Full Access, after which all commands are routed directly through WSL.
    • Or keep workspace-write, and let the model follow the prompt and use sandbox_permissions: "danger-full-access" + justification for a one-time escalation after the first call fails.

Configuration and Limitations

Preset configuration (wsl-executor in agent-presets/wsl/agent.cordis.yml):
* timeoutMs: 120000 (default timeout for a single command)
* maxTimeoutMs: 600000 (maximum timeout)
* maxOutputBytes: 64000 (bytes retained per stream)
* maxSpillBytes: 67108864 (spillover file limit)
* graceMs: 3000 (SIGTERM→SIGKILL grace period)

Plugin configuration (inserted lines in cordis.patch.yml):
* autoUpdate: true (automatically refresh when the installed preset files differ from the packaged files)
* force: false (overwrite even if the files are already in sync)

Limitations:
* Sandbox limitation: If the session sandbox is workspace-write (or narrower), WSL cannot be launched. You must switch to Full Access or perform a one-time escalation.
* State isolation: Each command invocation uses a new shell, so cd / export state is not preserved.
* Tool name: The tool name is fixed to bash.
* System requirements: WSL must already be installed and enabled on the system.

Ecosystem Context

The DSH philosophy is “everything is a plugin”. This plugin is maintained by the community and has no official affiliation with DeepSeek / High-Flyer.

References