Public DSH Contract Matrix

August 24, 2026 ยท View on GitHub

Validated against DeepSeek Harness 0.1.1-rc.2 and the official plugin development guide.

NeedPublic contractDecision
Tool registration@deepseek-ai/dsh-tools: ctx.tools.register(defineTool(...))Supported; Cordis-owned cleanup.
Session identity / cwd / cancellationexec.agent?.session, session.header.cwd, exec.signalSupported; tools fail closed without an agent cwd.
Canonical filesystem@deepseek-ai/dsh-fs: ctx.fsSupported.
Filesystem policyctx.sandboxPolicy.resolve(...), ctx.fs.sandboxMode, and ctx.fs.writeText(..., policy)Supported; mutations use an exact provider version guard, and read-only escalation is unavailable for bare non-enforcing providers.
Read observationsPublic fs/observed eventSupported; this plugin also owns exact observed line intervals.
Process management@deepseek-ai/dsh-subprocess: ctx.subprocessSupported.
Process confinement@deepseek-ai/dsh-sandbox: ctx.sandbox.confineSupported; process-backed read tools force read-only policy and inspect reported enforcement. Full is required by default; explicitly opted-in native Windows may accept partial enforcement. The public contract has no backend attestation.
Atomic process read whitelistNo public contractUnsupported; AST directory/path scans are gated off and exact provider-read file bytes are supplied over stdin.
Process launch approvalGeneric ctx.approval.request onlyEnabled by default and operator-configurable; disabling the prompt never disables forced read-only policy, enforcement eligibility checks, or the exact configured spawn plan.
Oversized output@deepseek-ai/dsh-spill: ctx.spillStore.saveTextSupported when an owner session exists; otherwise output remains bounded.
Settings UI@deepseek-ai/dsh-settings plus the public settings.plugin.item client slotSupported; the Host exposes coding-tools, while the browser card edits four live availability controls, two live approval controls, and one warned native-Windows compatibility control through the revision-fenced settings scope. The Host uses SettingsScope.watch, exact registration disposers, a transition guard, and generation-scoped cancellation.
Built-in read bookkeepingNo consumer API requiredThe plugin uses its own code_read observation store.

No DSH private source path is imported.