<!-- codsh-publication:grok-cli-dsh-rewrite:ticket-12 --> ## Parent https://github.com/Blackman99/codsh/issues/132 **Ticket:** 12 **Status:** ready-for-agent **User Stories:** 26, 27, 62(见父规格) ## What to build 用户选择安全执行配置后,子进程网络和环境变量按声明受限,取消与退出会清理受管理进程树。 ## Acceptance criteria - [ ] 核实并实现整进程与逐工具策略的组合,明确各平台网络限制差异,不把 dsh 文件模式当成网络沙箱。 - [ ] 环境过滤对启动环境及支持的 shell 路径有效;测试凭据不泄漏到不获授权的命令。 - [ ] 进程创建、终止、终端断连及沙箱启动失败有真实效果测试;无法兑现保护时拒绝,不静默降级。 - [ ] 记录上游缺口和已验证平台;相关发布元数据、用户限制说明与回归测试齐备。 ## Blocked by - #137 — Ticket 05: 取消执行并安全返回 Prompt - #143 — Ticket 11: 文件系统沙箱真实执行 ## Delivery contract 用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。
Activity
Blackman99 commentedon Sep 24, 2026
Ticket 12 / #144 已合入
rewrite/grok-dsh-20260920的590f9bf。restrict_network在现有 macOS Seatbelt 配置里追加(deny network*)。拒绝时连到127.0.0.1得到 EPERM,未拒绝时可以连上。请求了网络隔离但当前平台无法施加时,启动拒绝,不降级。Linux 与 Windows 不记为已支持。shell_environment_policy过滤本客户端拉起的 shell 子进程环境。探测用的凭据在排除时不会出现在sh -c env里,列入include_only时会出现。dsh 自己的 bash 工具继承 dsh 进程,第二层 Seatbelt 不能嵌套,所以这条路径没有再过滤,文档写明了。取消会杀掉探测进程组。无法表达的策略在写出沙箱报告之前拒绝。验证:合并后的
scripts/rust-network-env-sandbox-test.py通过。cargo fmt --check、cargo clippy -D warnings、cargo test --locked --workspace(451 + 498 + 42 + 61 + 2 + 379)通过。