dsh-sandbox-permissions-not-strictly-wider-justification-empty-fix
修复 sandbox_permissions 和 justification 字段在 pwsh/bash/fs/dsh-sandbox 中的 no-op 升级报错。当会话已是 danger-full-access 模式时,模型携带空 justification 或重申同一模式被拒的问题。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 27, 2026
- Updated
- Aug 27, 2026
Introduction
dsh-sandbox-permissions-not-strictly-wider-justification-empty-fix
English | 中文
A DSH plugin that fixes two related bugs in the sandbox_permissions and justification fields across four tools: pwsh, bash, fs (write/edit), and dsh-sandbox.
The Bug
When a session is already at danger-full-access mode, two errors can occur:
- Empty justification: The model sends
justification: ""(empty string), which triggersvalidateEscalationArgsto throwinvalid justification: expected a non-empty sentence. - No-op escalation: The model sends
sandbox_permissions: "danger-full-access"(same as current mode), which triggersapproveEscalationto throwsandbox escalation to "X" is not strictly wider.
This is the 4th independent report (GitHub #3519 → #4359 → #4383 → #4412) and affects all sessions using non-default models.
The Fix
Two-layer defense:
- Schema descriptions: Updated to clearly explain that same-mode retries are accepted as no-ops, reducing the model's tendency to send empty fields.
- Runtime normalization: Added normalization logic at each tool's execute/resolvePolicy entry point to clear escalation parameters when the requested mode is not strictly wider than the effective mode.
How It Works
- Install (
dsh plugin add): Thepreparescript runspatch.js apply, which backs up original files and applies all modifications. - Uninstall (
dsh plugin remove): Thepreuninstallscript runspatch.js restore, which restores all original files from backups.
Installation
dsh plugin --profile <your-profile> add github:your-username/sandbox-escalation-fix
Uninstallation
dsh plugin --profile <your-profile> remove sandbox-escalation-fix
What Gets Modified
| File | Change |
|---|---|
dsh-sandbox/lib/index.js | approveEscalation: throw → return effectiveMode |
dsh-tool-pwsh/lib/index.js | import +WIDER_MODES, execute normalization, schema descriptions |
dsh-tool-bash/lib/index.js | import +WIDER_MODES, execute normalization, schema descriptions |
dsh-tool-fs/lib/index.js | import +WIDER_MODES, resolvePolicy normalization, schema descriptions |
Compatibility
- Compatible with the latest
dsh-stdplugin meta protocol - Does not conflict with other plugins (modifies only tool implementation files)
- Works with both desktop and web installations (modifies DSH_HOME, which is hard-linked to the desktop app)
License
MIT