DSH Plugins Marketplace

DSH Plugins

Plugins

/

Workflow & Automation

/

dsh-proof

d

dsh-proof

Manifest valid

Independent read-only acceptance layer: spawns a read-only verifier before each top-level turn closes and steers non-pass gaps back into the agent.

hasBundlePatch

dsh-proof

Independent read-only acceptance layer for the DeepSeek Harness.

Awesome DSH Plugin

Before each top-level turn closes, dsh-proof spawns a read-only verifier subagent, collects its structured verdict, and steers any non-pass gaps back into the driving agent. It is the harness's missing "is the agent actually done" gate — no other plugin can substitute for it.

Install

dsh plugin --profile <name> add github:EvilIrving/dsh-proof

Or, from a checkout:

dsh plugin --profile <name> add ./dsh-proof

The bundle patch inserts one plugin row (dsh-proof); it needs the subagents service (the official dsh-subagent providers), which the base profile already mounts.

How it works

StepMechanism
Intercept "about to close"agent/turn-stopping (serial, awaited before the turn commits)
Spawn a read-only verifierctx.subagents.start('spawn', …) with toolFilter.deny + outputSchema
Block recursiondelegationDepthOf(agent) > 0 filter + maxDepth: 0
Steer gaps backagent.inject(gap details) + agent.steer(followup) on fail / insufficient-evidence

The verifier inherits the parent's tool set and is narrowed by the deny list (see deny list); it never sees a whitelist that could accidentally hide a newly added read-only tool. A verifier that ends with stopReason !== 'completed' or a missing structured result is treated as "no objection", so a failed proof never fails the user's turn.

Config

export interface Config {
  providerName: string          // default 'spawn'
  maxAttemptsPerTurn: number    // default 3
  denyTools: string[]           // default mutating-tool deny list
  verifierPrompt: string        // read-only acceptance instruction
  followupInstruction: string   // steering text after a failed verdict
}

Set any field from cordis.yml:

plugins:
  dsh-proof:
    config:
      maxAttemptsPerTurn: 2
      denyTools: [write, edit, str_replace_editor, bash, run_code, subagent]

Deny list

toolFilter.deny removes tools from the verifier's inherited full set. tools.restrict validates every name loudly, so denyTools must name tools the deployment actually registers. The default is write, edit, str_replace_editor, bash, run_code, subagent, which keeps read-only discovery tools (read, read_image, glob, grep) available. A deployment that adds its own mutating tools must extend the list; a deployment that forbids even shell/read access should switch to an explicit allow whitelist (set denyTools and verifierPrompt to match, or extend the plugin for an allowTools field).

Model Experience

Request context and condition

What the model sees

The top-level agent receives an injected user message listing the verifier's gaps and evidence, followed by the configured followupInstruction. Only a non-pass verdict injects anything; a passing turn adds nothing.

Token effect

Zero-direct effect on passing turns. A failing turn adds one bounded injected message (gaps + evidence) plus the short follow-up line.

KV Cache effect

Append-only: the injected context and follow-up are appended as new user messages, never rewriting earlier request tokens.

Known Limitations and Deferred Work

  • Deny list must match the deployment's tools — tools.restrict fails loud on unknown names, so a mismatched default blocks verifier startup. The exact mutating-tool set is deployment-specific and is resolved at first install.
  • No evidence normalization — the verifier gathers evidence itself; this plugin does not re-implement diff/test/typecheck/lint. A deployment wanting specific evidence channels should extend verifierPrompt.
  • Best-effort spawn — a provider that is absent or rejects the request degrades to a no-op (logged), rather than failing the user's turn.

Comments

Loading…

Similar plugins

dsh-veripipe

by zhangyy0423

dsh plugin: per-turn receipts (todo counts, goal id, fail-closed plan verdict) that survive the next turn, plus a read-only veripipe_receipt tool.

Sessions & MessagesManifest valid

★ 0

MIT

JavaScript

Oct 8, 2026

dsh plugin --profile web add dsh-veripipe

by MoonlitDropOfBlood

An independent approval subagent judges every sandbox escalation, with a configurable model and an audit log.

Workflow & AutomationSecurity & AuditTerminal & ClientsManifest valid

★ 4

↓ 753/wk

MIT

JavaScript

Oct 19, 2026

dsh plugin --profile web add @duke-dsh-plugins/dsh-agent-approval

by lion231226

Verified-progress ledger for long-running DSH work: an independent verifier certifies each claimed step, and a fingerprint check voids any verdict whose verifier mutated the workspace.

Workflow & AutomationManifest valid

★ 0

MIT

JavaScript

Oct 18, 2026

dsh plugin --profile web add dsh-verified-progress

by LAwLi3tCoding

Adds an "approve for me" access mode whose approval requests are answered by an independent reviewer model instead of a person: the reviewer can read the workspace read-only, a reviewer that cannot ru

Security & AuditManifest valid

★ 0

NOASSERTION

TypeScript

Oct 14, 2026

dsh plugin --profile web add dsh-approval-review

by onlyqzq

Risk-aware approval layer for high-risk AI Agent tool calls

Security & AuditManifest valid

★ 8

↓ 583/wk

Apache-2.0

TypeScript

Oct 27, 2026

dsh plugin --profile web add dsh-riskproof

Ingestion-time tool-output curation: keeps error and warning lines plus head and tail, spills the full text to disk with a pointer the model can read back; covers every text tool, small results pass t

Tools & CapabilitiesManifest valid

★ 0

↓ 68/wk

dsh plugin --profile web add dsh-funnel