🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

沙箱权限修复 0-v-0/dsh-grantwrite-patch

DeepSeek Harness
0-v-020 天前有提交已提供中文文档扫描:含敏感能力

自动修复 Windows 沙箱写入授权失败并静默重试命令

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 0-v-0/dsh-grantwrite-patch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · security
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 8 处,展示前 8 条)
  • 读取本地文件
    src/index.ts:99
    if (statSync(base).isDirectory())
  • 读取本地文件
    src/index.ts:126
    if (existsSync(script)) {return script}
  • 写入本地文件
    src/index.ts:183
    mkdirSync(opts.outDir, { recursive: true })
  • 执行外部命令固定命令
    src/index.ts:184
    const child = spawn(
  • 执行外部命令固定命令
    src/index.ts:259
    const child = spawn(
  • 写入本地文件
    src/patch.ts:47
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/patch.ts:49
    copyFileSync(PRELOAD, copy)
  • 读取本地文件
    src/size-probe.ts:37
    handle = await opendir(dir)
扫描于 2026/11/1(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 修复写入授权失败
  • 静默重试命令

Windows 沙箱 ACL 修复插件,给 DeepSeek Harness(dsh)用——修掉 grantWrite 失败(SetNamedSecurityInfoW Win32 5),再悄悄重试命令

README

由 DeepSeek 最新模型翻译生成
dsh-grantwrite-patch 为 DeepSeek Harness (dsh) 开发的 Windows 沙箱 ACL 修复插件 —— 修复 grantWrite 失败(SetNamedSecurityInfoW Win32 5),并静默重试原命令。 它解决什么问题 Windows 上 workspace-write 沙箱在执行命令前要往工作区根目录 DACL 写写入授权(AclWriteGrant.add → grantWrite)。当链上某个目录缺有效 WRITE_DAC/WRITE_OWNER 时,SetNamedSecurityInfoW 以 Win32 5(ERROR_ACCESS_DENIED)失败,该工作区所有受限命令都在 spawn 前报错: Error: SetNamedSecurityInfoW failed (Win32 5): grantWrite 本插件拦截这个错误,自动修复权限后重试命令,让你无感继续工作。 工作方式 插件按工作区大小自动选择策略: - 普通工作区:在内存层拦截错误,零副作用地重试,不改任何文件权限。 - 大工作区:探测到对象过多时(默认超过 2 万),主动给工作区补一次完整权限——这样不用每次都重复授权,省下大目录的等待时间。
展开完整文档(README 剩余 1 节)
dsh-grantwrite-patch

为 DeepSeek Harness (dsh) 开发的 Windows 沙箱 ACL 修复插件 —— 修复 grantWrite 失败(SetNamedSecurityInfoW Win32 5),并静默重试原命令。

它解决什么问题

Windows 上 workspace-write 沙箱在执行命令前要往工作区根目录 DACL 写写入授权(AclWriteGrant.add → grantWrite)。当链上某个目录缺有效 WRITE_DAC/WRITE_OWNER 时,SetNamedSecurityInfoW 以 Win32 5(ERROR_ACCESS_DENIED)失败,该工作区所有受限命令都在 spawn 前报错:

Error: SetNamedSecurityInfoW failed (Win32 5): grantWrite

本插件拦截这个错误,自动修复权限后重试命令,让你无感继续工作。

工作方式

插件按工作区大小自动选择策略:

- 普通工作区:在内存层拦截错误,零副作用地重试,不改任何文件权限。
- 大工作区:探测到对象过多时(默认超过 2 万),主动给工作区补一次完整权限——这样不用每次都重复授权,省下大目录的等待时间。
- 兜底:上面的方法失效时,跑诊断脚本修一次权限再重试;脚本不可用时退回 icacls 授权。

三种方式互不冲突,按需叠加。

运行要求

| 项 | 要求 |
| 操作系统 | Windows(NTFS)。其他平台插件自动不启用 |
| DSH 版本 | >= 0.1.7-rc.1。完整诊断脚本修复需 >= 0.2.0-rc.2 |
| 适用沙箱 | 仅 workspace-write 需要(read-only / danger-full-access 不需要) |

安装

从 npm 安装

dsh plugin --profile web add dsh-grantwrite-patch

从源码安装(GitHub)

git clone https://github.com/0-v-0/dsh-grantwrite-patch
cd dsh-grantwrite-patch
pnpm install && pnpm build
dsh plugin --profile web add .

说明:

- dsh plugin 等同于向 profile 添加依赖。bundle 插件的完整包名出现在 profile 的 dsh.profile.bundles 列表后即被加载(自动添加);bundle 补丁(cordis.patch.yml)在下一次启动时生效。
- 源码安装必须先跑 pnpm build:lib/ 不入库,且 FFI preload 是从已安装包内解析的(lib/preload.cjs)。
- 更新时重新执行相同命令即可(add dsh-grantwrite-patch@latest)。
- 也可以手动把 cordis.patch.yml 的 - insert: 段并入宿主 cordis.yml。

配置

- insert:
id: grantwrite-patch
name: dsh-grantwrite-patch
config:
enable: true
mode: auto # auto | patch | repair
objectThreshold: 20000 # 对象数达到此值视为大工作区,触发持久修复 probeTimeoutMs: 10000 # 大小探测超时;超时按大工作区处理 probeCooldownMs: 3600000 # 每工作区探测判定缓存时长 repairTimeoutMs: 120000 maxRetries: 1 cooldownMs: 60000 appendDiagnostics: true grantFallback: true # 诊断脚本不可用(0.1.7)/失败时回退裸 icacls grant;磁盘根拒绝 scriptPath: <绝对路径> # 默认: 从 @deepseek-ai/dsh-sandbox-windows-acl 包 assets 解析 (DSH >= 0.2.x) outDir: <绝对路径> # 默认: $DSH_HOME/grantwrite-patch(无 DSH_HOME 时 ~/.dsh/grantwrite-patch)

安全模型

- patch 路径:不改任何系统 ACL、无持久副作用;保留 WRITE_RESTRICTED 受限令牌、capability SID Allow ACE、world SID FILE_DELETE_CHILD Deny。失去的仅是 Low 完整性标签这一层纵深(子进程 Medium),且仅在本来打不上标签的环境发生。
- repair 路径:修复范围由脚本的 -AllowRoot 硬边界约束:只改目标目录或严格在其内部的对象;reparse 点与托管应用树拒绝;deny ACE 永不删除;每次改动先备份、后重读验证,失败回滚本批改动。
- grant 回退(grantFallback):脚本不可用或失败时跑裸 icacls <root> /grant "<user>:(OI)(CI)F。磁盘根硬拒(isDriveRoot:D:\ 等盘根拒绝,只授权真实工作区);不碰继承策略、不删 deny ACE;可 icacls <root> /remove:g "<user>" 回滚。脚本优先(更安全:有 -AllowRoot 边界+备份+验证),回退仅兜底。
- 插件进程是宿主进程(非受限 token),脚本修改权限正是沙箱受限 token 做不了的事;插件不提升 token。
- 只匹配 grantWrite 上下文的 SetNamedSecurityInfoW 失败,其他 Win32 失败、命令退出码、EPERM 等一律原样放行。
- 重试只发生一次(maxRetries 可调 0–3),修复失败不重试,防止循环。

致谢与许可证

FFI patch 核心改编自 masknull/dsh-acl-sandbox-patch

MIT
预览分享卡片长什么样 ↓0-v-0/dsh-grantwrite-patch
分享 · DeepSeek Harness Hub
0-v-0/dsh-grantwrite-patch

自动修复 Windows 沙箱写入授权失败并静默重试命令

回到顶部