fix(bundle): drop the approval service from the Windows layer entirely

The Windows layer previously kept the approval service with policy 'never',
which made the approval plugin inject 'Approval prompts are disabled in
this session: actions that require approval are rejected automatically'
into the model context. On Windows nothing asks for approval — the
escalation surfaces (sandbox_permissions) do not exist — so the sentence
described a rejection surface that is not there. The layer now disables
the approval row too: the service is absent, the model is never told
approval exists, and the danger-full-access degradation is complete.

base.spec.ts pins approval among the Windows disables; the Agent Note and
bundle README record the absent service.
This commit is contained in:
Huanqi Cao
2026-08-07 01:41:32 +08:00
parent acac2149a5
commit 73c6f35171
9 changed files with 31 additions and 26 deletions

View File

@@ -46,7 +46,9 @@ describe('dsh-base bundle', () => {
.map(patch => patch.id)
// The POSIX-only sandboxed stacks leave the Windows roster as one unit:
// shell (bash-sandbox/tool-bash), the permission switcher it requires,
// and the fs/sandbox policy stack whose OS runners do not exist on win32.
// the fs/sandbox policy stack whose OS runners do not exist on win32,
// and the approval service — nothing on Windows asks for approval, so
// the model is never told approval exists or that asks auto-reject.
expect(disables).toEqual(
expect.arrayContaining([
'bash-sandbox',
@@ -56,6 +58,7 @@ describe('dsh-base bundle', () => {
'sandbox',
'sandbox-policy',
'fs-sandbox',
'approval',
]),
)
const inserted = parsed
@@ -64,9 +67,7 @@ describe('dsh-base bundle', () => {
expect(inserted).toEqual(
expect.arrayContaining(['pwsh-local', 'tool-pwsh', 'fs-local']),
)
// Full danger-full-access degradation: no approval prompts on Windows.
expect(parsed.find(patch => patch.id === 'approval')?.config).toEqual({
policy: 'never',
})
// Full danger-full-access degradation: no approval surface at all.
expect(parsed.find(patch => patch.id === 'approval')?.config).toBeUndefined()
})
})