DeepSeek Harness DeepSeek Harness plugin catalog

← Catalog

sandbox-escalation-compat

sandbox-escalation-compat@0.1.3
loader sandbox-escalation-compat

Published Updated

Name, description, and notes are shown in the submitted language and are not translated.

Fix Error: sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode。gpt-5.6-sol 常见。tools/execute 事件剥掉非加宽 sandbox_permissions(同级或更窄),真正加宽仍走审批。

For agents: Markdown · JSON · tarball

Install on a machine that already has the plugin market

curl -fsSL https://addon.dshdo.com/install-plugin-market.sh | sh
# then in /plugin-market/ install sandbox-escalation-compat and enable it

Open /plugin-market/ → Cloud catalog, install this id, then enable. Install only registers; enable runs it.

Versions

Files

sha256
fa0cbd8725a647ceb4d72e5c0a2bac6ee73659eeddce044a0b4fefb7a700f185
6939 bytes · package sandbox-escalation-compat

README

sandbox-escalation-compat

English | 中文

Fix: Error: sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode

Out-of-tree DeepSeek Harness plugin. Some models (GPT-5.6-sol and siblings) retry bash / write / edit with sandbox_permissions that are not strictly wider than the session's standing mode — typically workspace-write while the session is already danger-full-access. The official executor then fails closed with:

Error: sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode

This plugin listens on the registry's tools/execute around-dispatch waterfall and strips that non-widening pair (sandbox_permissions + justification) from the call's arguments, so the call continues under the standing mode. A strictly wider request is never touched and still requires user approval.

It does not change the harness tree, does not grant extra permissions, and does not bypass approval for a real escalation.

Why a tools/execute listener and not an execute wrapper

Version 0.1.x wrapped registered tool execute() callbacks (ctx.tools.schemas() + ctx.tools.get()). Since agent presets (dsh-web-app 0.1.x) moved model-facing tools into per-preset scope layers, a host-plane plugin enumerating ctx.tools sees only the global layer — it never reaches the bash / write / edit definitions a session actually dispatches, so the wrap silently did nothing.

The tools/execute waterfall is the documented around-dispatch seam (the timeout policy uses it) and reaches every dispatch regardless of which scope registered the tool. A host-plane (untagged) listener receives each agent's events, resolves the session's standing sandbox mode through ctx.sandboxPolicy, and rewrites exec.arguments only when the call carries a non-widening sandbox_permissions.

Behavior

Standing modeRequested modeResult
danger-full-accessworkspace-writeStrip; run as-is
danger-full-accessdanger-full-accessStrip; run as-is (restatement, not escalation)
workspace-writedanger-full-accessUnchanged; approval still required
read-onlyworkspace-writeUnchanged; approval still required
any*(field omitted)*Unchanged

If ctx.sandboxPolicy is not composed, or the standing mode cannot be resolved to a known sandbox mode, the listener is a no-op and the official fail-closed path decides.

Install

From the plugin market (/plugin-market/): install catalog id sandbox-escalation-compat, then enable it. Or copy this directory to ~/dsh-plugins/sandbox-escalation-compat/ and enable the local shelf entry.

Search / SEO: this plugin is the fix for Error: sandbox escalation to "workspace-write" is not strictly wider than this call's current "danger-full-access" mode on GPT-5.6-sol (and related models) in DeepSeek Harness.

Restart dsh web after updating the plugin so the Loader picks up the new entry (a running process does not hot-reload a patch written while it is up).

Tests

node --test ~/dsh-plugins/sandbox-escalation-compat/tests/*.test.mjs