DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Forge Dsh — DSH Plugin for DeepSeek Harness
← Plugins

@agent_forge/forge-dsh

Forge Dsh

Forge quality gates for DeepSeek Harness (dsh): task gates, read-before-edit, bash hazard interception and quality scoring, driven by the forge CLI through DSH's typed interception points.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @agent_forge/forge-dsh@1.66.1
READMECompatibilityVersions

Compatibility and provenance

Forge Dsh is published as @agent_forge/forge-dsh and currently resolves to version 1.66.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
9/20/2026

Versions

1.66.1stable

README

@agent_forge/forge-dsh

Forge quality gates for DeepSeek Harness (dsh) — task gates, read-before-edit, bash hazard interception, and quality scoring, enforced inside DSH sessions through the harness's typed interception points.

Forge is an AI-code quality gate engine. This plugin is a thin Cordis wrapper: it forwards DSH tool/session events to the forge CLI and translates forge's verdicts back into DSH decisions. All gate logic lives in the forge binary — the plugin itself has zero runtime dependencies.

How it works

The mapping table below and the fail-open contract at the end of this README are the two-sided bridge contract, mirrored machine-readably in contract.json and enforced by forge's compat snapshot (surface bridges). Change all three together: contract.json, this README, and the tests on both sides.

DSH interception pointforge hook eventA forge block becomes
tools/pre-executePreToolUse{kind:'deny', reason}
tools/post-executePostToolUse{kind:'block', feedback} (error result)
agent/pre-stepUserPromptSubmit{kind:'reject'}
agent/session-startSessionStart¹context via agent.inject()
agent/turn-stoppingStopagent.steer(reason) → another step

¹ source:'compact' additionally fires forge's PostCompact group — DSH rc.7 exposes no dedicated compaction point.

DSH tool names map onto the Claude Code names forge dispatches on (write/edit/str_replace_editor→Write/Edit, bash/pwsh→Bash, read→Read, skill→Skill); unmapped tools pass ungated. The wired hook roster mirrors forge's canonical spec (lib/spec.json, drift-guarded by a Go test in the Forge repo) — freeze-guard, task-guard, assertion-check, read-before-edit, bash-guard, hazard-guard, auto-compile, workflow-test-guard, file-sentinel, tool-track, test-nudge, failure-track (PostToolUseFailure), subagent-track (SubagentStop), task-verify, review-stop, skill-trigger, and the session-start group. failure-track/subagent-track are mirrored in the spec but inert until DSH exposes the corresponding event points (rc.7 has neither).

Requirements

  • The forge CLI on PATH (npm install -g @agent_forge/forge), with the project initialized (forge init) for task gates to have state to enforce.
  • DeepSeek Harness 0.1.0-rc.x (verified against 0.1.0-rc.7), Node.js ≥ 18.
  • Windows works out of the box: npm lays out forge as a forge.cmd shim, which the plugin spawns through cmd.exe (a bare spawn cannot execute it); timeout kills tear down the whole child tree via taskkill /T.

Install

# from npm
dsh plugin --profile web add @agent_forge/forge-dsh

# or straight from the Forge repo (subdirectory install)
dsh plugin --profile web add "github:MjxUpUp/Forge#main&path:/plugins/forge-dsh"

# local development
dsh plugin --profile web add "link:$(pwd)"

Restart dsh web after install. Check status inside a session with /forge-status.

Config

# profile patch
- insert:
    - id: forge-quality
      name: "@agent_forge/forge-dsh"
      config:
        forgeBin: forge      # binary name/path (env FORGE_BIN overrides the default)
        timeoutMs: 30000     # per-hook ceiling; timeout kills and FAILS OPEN
        enabled: true        # false unwires every listener
        debug: false         # log fail-open hook errors to console.error

Fail-open contract

Blocks are read from forge's stdout JSON (decision:"block"), never from exit codes — a forge internal error (exit 1) is indistinguishable from a deny otherwise. Every infrastructure failure (forge missing, spawn error, unparseable output, timeout) fails open: a forge outage never locks the agent out of its own tools. Such failures are silent by design; surface them with /forge-status or debug:true.

Two latency trade-offs to know: hooks run serially per event (up to five per group), so a slow hook chain delays the tool call — and a gate that legitimately exceeds timeoutMs (e.g. auto-compile cold-building a large project past 30s) silently loses that run's feedback to fail-open (visible in /forge-status). Raise timeoutMs on big projects.

Known watch items (dsh preview)

  • No stop-hook loop guard in rc.7 — a permanently-failing Stop gate steers at every stop boundary. forge's Stop gates are self-limiting once their gate passes, but a stuck gate loops the turn.
  • SessionStart context is best-effort (emit mode, detached): it may miss the first request of a very short-lived session — same limitation the official bridges document (TODO(session-start-gating)).
  • DSH is a developer preview; pin this plugin's version alongside your dsh version.

Development

npm install   # dev-only: @deepseek-ai/cordis for the wiring tests
npm test      # mapping, runner (incl. cross-OS planSpawn units), decision folding, real-cordis wiring

test/doubles/fake-forge.mjs stands in for the forge binary; the wiring suite boots a real cordis runtime and asserts dispatch order, short-circuit semantics, payload shape, and every decision mapping.

9/18/2026
1.66.0stable
9/18/2026
1.64.0stable
9/18/2026
Show 41 more versionsCollapse versions
1.63.0stable
9/18/2026
1.62.0stable
9/16/2026
1.61.3stable
9/16/2026
1.61.2stable
9/16/2026
1.61.1stable
9/15/2026
1.61.0stable
9/15/2026
1.60.0stable
9/15/2026
1.59.1stable
9/14/2026
1.58.1stable
9/14/2026
1.58.0stable
9/14/2026
1.57.1stable
9/13/2026
1.56.7stable
9/11/2026
1.56.6stable
9/11/2026
1.56.5stable
9/11/2026
1.56.4stable
9/11/2026
1.55.1stable
9/9/2026
1.55.0stable
9/9/2026
1.54.0stable
9/8/2026
1.53.0stable
9/8/2026
1.52.0stable
9/7/2026
1.51.0stable
9/6/2026
1.50.0stable
9/4/2026
1.49.0stable
9/2/2026
1.48.1stable
9/1/2026
1.48.0stable
8/31/2026
1.47.0stable
8/30/2026
1.46.0stable
8/28/2026
1.45.4stable
8/28/2026
1.45.3stable
8/28/2026
1.45.2stable
8/27/2026
1.45.1stable
8/27/2026
1.45.0stable
8/27/2026
1.44.0stable
8/26/2026
1.43.0stable
8/25/2026
1.42.2stable
8/24/2026
1.42.1stable
8/23/2026
1.42.0stable
8/23/2026
1.41.0stable
8/22/2026
1.40.1stable
8/21/2026
0.1.1stable
8/20/2026
0.1.0stable
8/20/2026

Related plugins

Loading related plugins…

Latest
1.66.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
51.4 kB
Files
9
Surface
any
License
Apache-2.0
Source
npm
GitHub
★ 2
Weekly downloads
1,982
Security scan
✓ v1.66.1 scan passed
Last push
9/9/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in developer-tools.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Sdk Minimal@deepseek-ai/dsh-sdk-minimalThe standalone minimal SDK profile bundle: JSON-RPC, one DeepSeek adapter, persistent shell, and JSONL sessionsSdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseSubagent Codex@deepseek-ai/dsh-subagent-codexOne-shot Codex subagent provider over the official app-server protocol