Skip to content
Discussion options

You must be logged in to vote

先说结论:这是策略按设计生效,不是沙箱故障C:\src\vcpkg\buildtrees 这个路径不在本次调用的任何可写面里。

可写面到底有哪些

workspace-write 下只有两处:

  1. 工作区根 —— 授权方式是按工作区路径确定性派生一个 SID、在根上落一条可继承的常驻 ACE(packages/sandbox/sandbox-local/src/index.ts:395-414materializeAclGrant:397 派生 SID、:401grant.add(workspaceRoot, true));
  2. 每个「会话 × 工作区」对一个随机私有临时目录 —— :418mkdtempSync(join(tmpdir(), 'dsh-')),其 TMP/TEMP 会在 spawn 前被改写到那里。

C:\src\vcpkg 两处都不在,所以你看到的 permission denied 是预期结果。这也是为什么手动开 danger-full-access 后同一条命令直接跑通。

为什么后台完全看不到「拒绝」标记

这里有个退出码门槛,值得说清楚。拒绝判定是「退出码非零stderr 命中该后端的拒绝方言」两个条件同时成立:

  • 方言表:packages/sandbox/sandbox-local/src/index.ts:205-213,其中 'windows-acl' = ['access is denied', 'access to the path', 'permission denied', 'operation not pe…

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by yiman0919
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants