Repository navigation
dsh-plugin-wsl-env — run a DSH session against a WSL distro, with the sandbox moved inside the distro #8644
Replies: 2 comments
中文版(内容已更新至 v0.14.0)这是什么: 不是一套新工具——三个 seam provider,让模型现有的
安装 dsh wsl --from-default-profile web --dump-config
dsh plugin --profile wsl add dsh-plugin-wsl-env
dsh --profile wsl以 DSH bundle( 沙箱是最有意思的部分。 DSH 的 Windows ACL runner 完全够不到 WSL(受限令牌调 ——使用与 如实声明: enforcement 是 验证(v0.14.0 现状): 单元测试 41/41(Node 22/24 × Linux/Windows CI);覆盖 97%+;六个真实 WSL2 发行版的兼容性矩阵(Ubuntu/Debian/Fedora/openSUSE Tumbleweed/Arch/Alpine-musl,含 systemd 与非 systemd);aarch64 原生代理在 qemu 下每次推送执行 18 项检查;shell agent 在五个非 Ubuntu 容器家族中各通过 7 项检查;12 项真机探针(沙箱语义、FS 变更、终端路由、picker、agent 双路径对拍等)每晚在自托管 runner 上运行;GUI 日常使用中,agent 越界写入在 distro 内被内核拒绝、随后的提权流程可用。 需要 Windows + WSL2,DSH
|
v0.15.0 更新(2026-10-28)兼容性矩阵发布版 —— 把“支持哪些环境”从口头承诺变成实测证据:
两个修复(都来自矩阵运行时踩到的首跑陷阱):
新特性:
安装 / 升级:
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
What it is: not a new tool set — three seam providers, so the model's existing
bash/read/write/edit/glob/greptools run against a WSL distro:ctx.shell— every command runs aswsl.exe -d <distro> --cd <linux dir> --exec <login shell> -lc <cmd>ctx.fs— Linux paths map onto the distro's UNC share, so the host fs stack (and the packaged ripgrep) operates on real distro filesctx.subprocess— the GUI terminal window opens inside the distro, in the Session workspaceInstall
It ships as a DSH bundle (
dsh.bundle.patch), so the layer is applied bydsh plugin add.The sandbox is the interesting part. DSH's Windows ACL runner cannot reach WSL at all (its restricted token fails
wsl.exewithWsl/E_ACCESSDENIED), so the execution world used to run unconfined and say so. It now gets the Linux sandbox instead: the plugin builds abubblewrapprofile on the host and executes it inside the distro —— using the same profile arguments, denial dialect and runner-failure rules as
dsh-sandbox-local's Linux rung.ctx.fsfences its mutations by the same per-call policy, so "bash can write /tmp but the write tool cannot" asymmetries don't arise, and the Permissions selector plus the denied/escalate flow come back.Reported honestly: enforcement is
partial, notfull. A distro process can still execute a Windows binary through interop (/mnt/c/.../*.exe), and that process runs outside bubblewrap under your ordinary Windows token.pnpm run probe:sandboxdemonstrates it. Also:bubblewrapmust be installed in the distro (sudo apt install bubblewrap); without it the providers fail closed (SANDBOX_UNAVAILABLE) rather than silently running unconfined.Verified (current state, v0.14.0): 41/41 unit tests on CI (node 22/24, Linux and Windows); coverage 97%+; a six-distro real WSL2 compatibility matrix (Ubuntu, Debian, Fedora, openSUSE Tumbleweed, Arch, Alpine-musl — systemd and non-systemd); the aarch64 native agent executes its 18-check suite under qemu on every push; the shell agent passes 7 checks in each of five non-Ubuntu container families; twelve real-machine probes (sandbox semantics, FS mutations, terminal routing, picker, both agent paths) run nightly on a self-hosted runner; and in daily GUI use, an agent write outside the Session workspace is refused inside the distro, with the escalation flow that follows succeeding.
Requires Windows + WSL2, DSH
0.2.1-rc.3(peer floor — newer harness releases install the plugin unchanged).All reactions