DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Escrow — DeepSeek Harness 插件(DSH Plugin)
← Plugins
E

dsh-escrow

Escrow

延迟执行窗口:把 agent 的不可逆动作放进托管队列,批准才交割,超时默认拒绝。Deferred execution window (escrow) for DeepSeek Harness.

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Floralee2024/dsh-escrow#14ac5f303a03546024d23fb9cb30644e7fa45299
README兼容性版本

兼容性与来源证明

Escrow 以 dsh-escrow 发布,当前版本为 0.3.26。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/24

版本

0.3.26stable
2026/9/24
0.3.25stable
2026/9/22

相关插件

正在加载相关插件…

最新版
0.3.26
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 security-access 分类下经过校验的插件。

Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式Auto Reviewdsh-auto-review针对 DeepSeek Harness 审批请求的第二模型 AI 自动审查:只读审查子代理在审批应答链上决定允许或拒绝,并采用故障关闭回退机制和完整的会话日志审计。

README

dsh-escrow

Pre-execution escrow and fail-closed human approval for irreversible agent actions.

dsh-escrow is a plugin for DeepSeek Harness. It classifies tool calls before execution, places high-risk actions in an escrow window, and releases them only after an explicit decision. Silence, timeout, adapter failure, and unknown outcomes do not release an action.

Current release: v0.3.26. This repository is a system/artifact prototype. Its tests document implemented invariants and exercised behaviors; they do not prove universal security, production-scale effectiveness, or safety against every attacker.

What it provides

  • Deterministic pre-execution classification for shell and trusted non-shell effects.
  • green / yellow / red routing with built-in coverage for destructive, privileged, external-side-effect, shared-resource, and governance actions.
  • Synchronous human approval for host or local adapter mode; asynchronous queueing with escrow_result for the default queue mode.
  • One-shot replay tokens, same-signature deduplication, late-call protection, and fail-closed red-path handling.
  • Structured approval details: operation, target, remote, branch/ref, URL, database/schema, resource, permission scope, tool, risk class, and learning policy.
  • A dependency-free local approval adapter that renders a browser card on 127.0.0.1.
  • Append-only redacted ledger records with hash-chain and HMAC integrity checks, migration, replay, reporting, and doctor commands.
  • Explicit never-learn handling for critical actions such as force push, recursive deletion, disk/system operations, external publishing, privilege elevation, shared-resource deletion, and dsh governance changes.

Why escrow?

Permission presets and post-hoc rollback answer “what can be attempted” or “how can damage be repaired.” Escrow adds a decision point before the side effect takes place. A red action is not treated as successful merely because it was queued, and a missing human decision is not interpreted as consent.

Install from GitHub

Prerequisites: Node.js 18+ and an installed DeepSeek Harness profile.

git clone https://github.com/Floralee2024/dsh-escrow.git
cd dsh-escrow
dsh plugin --profile web add .

Restart the dsh profile after installing or changing the plugin. If you install from another directory on Windows, pass that directory as the plugin path instead of the example ..

Quick start: local approval adapter

The adapter is an MVP replacement approval surface. It binds to loopback, keeps pending requests in memory, supports the two stable one-shot outcomes currently used by the host protocol (allowed-once and rejected), and automatically opens the local approval page when a new request arrives if no approval page is currently visible.

Start it from the repository root:

node approval-adapter/bin/dsh-escrow-approval-adapter.mjs --port 3099

The adapter attempts to open the tokenized local URL automatically. If the environment is headless or the launcher is unavailable, open the printed local URL manually. Do not expose the adapter on a LAN or public interface.

Configure the dsh profile without committing the token:

- id: escrow
  config:
    approvalMode: adapter
    approvalAdapterUrl: http://127.0.0.1:3099
    approvalAdapterTimeoutSec: 300
    mode: sync
    ttlSec: 300
    timeoutPolicy: cancel
    defaultAction: yellow
    builtinRules: true

Set the token in the process environment, or put it in a private profile overlay:

$env:DSH_ESCROW_APPROVAL_TOKEN = '<token printed by the adapter>'

The end-to-end flow is:

3081 Web session
  -> dsh tool call
  -> dsh-escrow tools/pre-execute
  -> POST 127.0.0.1:3099/v1/approvals
  -> structured approval card
  -> human clicks “允许一次” or “拒绝”
  -> the original tool call is released or denied
  -> result returns to the 3081 session

The adapter UI deliberately exposes only the MVP buttons. approve-now and explicit manual whitelist decisions remain available through the /escrow command surface; richer adapter buttons require a compatible host protocol extension.

Approval card and policy

A card includes the tool, risk class, reason, approval id, and structured action fields where available. It also states the applicable learning policy.

  • Normal learnable red actions: after two approvals, the default policy waits for a 24-hour cooling period before automatic allow. A configured immediate-allow learning choice is available in the protocol payload, but is not rendered as an adapter MVP button.
  • Two decisions rejecting the same signature activate the learned deny path.
  • never-learn actions never become automatically allowed, regardless of approval count. They can only be added by an explicit /escrow allow action, with the associated risk left to the administrator.
  • critical-red is reserved for actions such as force push, production/shared-resource deletion, formal package publishing, privilege elevation, security-policy changes, and dsh governance changes. These require an explicit decision each time.
  • Classification is based on the action representation, not on a claim such as -WhatIf; a dry-run command can still require review.

Command surface

/escrow pending
/escrow approve <id>
/escrow approve-now <id>
/escrow approve-and-allow <id>
/escrow deny <id>
/escrow allowlist
/escrow allow <signature>
/escrow deny <signature>
/escrow forget <signature>
/escrow approve all
/escrow deny all
/escrow export [path]
/escrow import <path>
/escrow reduce [--since 7d]
/escrow migrate
/escrow doctor
/escrow stats

queue mode is asynchronous and returns a synthetic foreground result while the action remains pending. host and adapter modes are synchronous and wait for the decision. Any unavailable approval path or timeout is fail-closed under timeoutPolicy: cancel.

Configuration

The main configuration is applied through the profile's cordis.patch.yml:

- id: escrow
  config:
    ttlSec: 300
    timeoutPolicy: cancel       # cancel | release | hold
    defaultAction: yellow       # green | yellow | red
    builtinRules: true
    mode: async                 # async | sync
    approvalMode: queue          # queue | host | adapter
    approvalAdapterUrl: http://127.0.0.1:3099
    approvalAdapterToken: ''     # prefer DSH_ESCROW_APPROVAL_TOKEN
    approvalAdapterTimeoutSec: 300
    learnWhitelist: true
    learnThreshold: 2
    autoBlacklist: true
    cooldownHours: 24
    approvalChoices:
      immediateAllow: true
      manualWhitelist: true
    selfModification:
      red: true
    trustedToolEffects:
      - tool: email.send
        effects: [external-write]
      - tool: browser.publish
        effects: [external-write, shared-resource-write]

User rules are deterministic and first-match-wins. A user green rule cannot suppress an internal red rule. Non-shell tools must receive trusted effects from the host or administrator; tool arguments and MCP annotations cannot self-declare that an action is safe.

Ledger and integrity

Decisions are written to $DSH_HOME/.dsh-escrow/ledger.jsonl after secret redaction. The ledger records observations, queued actions, decisions, waiting time, tool identity, and session identity. Size limits rotate the active file to ledger.jsonl.bak.

Each current-format row carries a SHA-256 chain value and HMAC. /escrow doctor reports integrity, key mismatch, legacy rows, schema problems, and classifier performance. Legacy rows must be migrated before the ledger can provide the full current integrity guarantee.

The integrity design protects against accidental or unnoticed tampering and against an attacker who can rewrite the chain but does not possess the HMAC key. It does not protect against an attacker who can modify both the ledger and its key, nor does it establish that the surrounding runtime is trustworthy.

Tests and reproduction

Run from the repository root:

npm test
npm run test:taste
npm run test:integration
npm run test:host
npm run test:side-effects
npm run test:all

The current full suite covers 107 smoke assertions, 43 taste-state assertions, 76 plugin integration assertions, the visible host seam, external-side-effect classification, adapter integration, and adapter server behavior. The test suite is executable evidence for these cases, not a universal security proof.

The paper artifact is in paper/:

  • paper/manuscript.md — system/artifact paper draft;
  • paper/experiment-card.json — claim boundary and falsifiers;
  • paper/reproduce.ps1 — reproducibility entry point.

Known limitations

  • The local adapter is an in-memory MVP. Restarting it safely loses pending requests and causes the waiting call to fail closed.
  • The adapter is loopback-only and has no multi-user identity, durable storage, TLS, or remote notification service.
  • The current adapter card supports only allowed-once and rejected; richer learning choices remain command-based.
  • The classifier is deterministic but not complete. A tool or effect not represented in the configured rules may be misclassified.
  • The repository does not claim to prove security, eliminate prompt injection, or replace deployment-specific threat modeling and operational review.

Related material

  • approval-adapter/README.md
  • 设计-v0.2.md
  • 红灯细分规则-v0.4.md
  • third-party-review/
  • paper/

License

MIT. See LICENSE.