DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Secret Paste — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-secret-paste

Secret Paste

DeepSeek Harness 插件:自动检测粘贴到编辑器中的机密信息,将其存储到官方凭据接口中,并向模型发送 [secret:REF] 占位符,而不是实际值。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:zhujiaqi/dsh-secret-paste#3876baea3685786124faaa76f14a4b8db4618a4c
README兼容性版本

兼容性与来源证明

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

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

版本

0.2.0stable
2026/8/21
0.1.0stable
2026/8/20

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 2
周下载
45
最近提交
2026/8/20
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Doctor@linxin666/dsh-doctorDSH 配置档案的事务性救援模式,配备受监督的启动器、隔离的恢复容器、确定性修复、健康监控以及本地 Web 恢复控制台Pocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Auto Reviewdsh-auto-review针对 DeepSeek Harness 审批请求的第二模型 AI 自动审查:只读审查子代理在审批应答链上决定允许或拒绝,并采用故障关闭回退机制和完整的会话日志审计。

README

dsh-secret-paste

A DeepSeek Harness plugin that detects secrets pasted into the composer, stores them in the official credentials seam, and sends a [secret:REF] placeholder to the model instead of the plaintext. The real value never reaches the message, the session history, or any transcript.

🌐 中文:README.zh.md | English

Why

You paste an API key or a token into the chat. Without protection it goes straight to the model and into the session log — which is exactly where a secret should never land. This plugin intercepts the paste, stores the value in the official DSH credential seam (~/.dsh/.credentials.yaml, mode 0600), and replaces it in the draft with [secret:REF]. The model only ever sees the placeholder, and can read the real value on demand through a dedicated tool.

How it works

StepWhat happens
Detect@sanity-labs/secret-scan (1,100+ rules derived from gitleaks / TruffleHog) runs on the pasted text.
StoreThe value is written with the official credentials.set Web API — no new server route.
ReplaceThe matched range becomes [secret:PASTE_N] in the draft.
ResolveThe model calls the secret_resolve(ref) tool when it actually needs the value.

The plaintext value lives in exactly two places: (1) this tab's memory, and (2) ~/.dsh/.credentials.yaml (mode 0600). Every other surface — the sent message, session history, transcripts — sees only [secret:REF].

Installation

Prerequisites

  • A DeepSeek Harness Web profile (the examples use web).
  • The dsh CLI and pnpm on your PATH (dsh plugin is a thin pnpm forwarder).

Install from the npm registry (recommended)

dsh plugin --profile web add dsh-secret-paste

What this command does:

  1. Runs pnpm add dsh-secret-paste inside the profile directory.
  2. Installs the single runtime dependency (@sanity-labs/secret-scan).
  3. Because the package declares dsh.bundle.patch, it is auto-registered in dsh.profile.bundles as a profile layer.

No build step runs on install — the browser bundle is prebuilt and shipped.

Restart

The server half (the secret_resolve tool) loads at boot, so restart the dsh web process after installing, then force-refresh the browser tab (Cmd+Shift+R / Ctrl+Shift+R) to load the client bundle:

# restart the dsh web process you manage (Ctrl-C + relaunch, or your process manager)

Verify

  • Settings → Plugins lists dsh-secret-paste.
  • Paste a GitHub token (ghp_...) into the composer: it is immediately replaced by [secret:PASTE_N] and a chip appears.

Installing from an agent or in automation

The exact same steps work when an AI agent or a CI job installs the plugin:

  1. dsh plugin --profile web add dsh-secret-paste
  2. Restart dsh web (required for the secret_resolve tool to register).
  3. Force-refresh the browser tab.
  4. Verify: paste ghp_... and expect [secret:PASTE_N], or confirm the served page's window.__DSH_BOOT__ contains a dsh-secret-paste entry.

Usage

Auto-detect and hide

Paste text that contains a high-confidence secret (ghp_..., sk-proj-..., JWT, …). It is stored and replaced with [secret:PASTE_N] immediately, and a chip shows:

🔒 Hidden · · PASTE_N · Undo

  • Hover the chip to reveal the value in a tooltip — no layout shift.
  • Undo restores the plaintext while you are still drafting.
  • After you send, the chip stays visible but the undo button disappears; once the answer arrives, the chip is removed.

Medium confidence

confidence === 'medium' hits (e.g. a Bearer <token>) stay in the draft as-is and a "Suspected secret" chip asks you to confirm (Hide) or ignore (Ignore).

Manual marking

Formats the detector does not recognize (ark-..., some sk-...) are never guessed. Select the text and use the "Mark selection as secret" action, then "Hide & store".

Nested placeholders

A selection that already contains [secret:REF] can be wrapped again. The secret_resolve tool resolves such chains recursively down to plaintext (cycles or missing inner refs return found: false).

Model side: secret_resolve

When the model needs the real value, it calls the secret_resolve(ref) tool:

  • Returns { found, value, source }.
  • Resolves nested placeholders recursively to plaintext.
  • The value is SENSITIVE: the tool description instructs the model never to echo, repeat, or write it into a reply, a file, a command, or a tool argument.

Security model

  • Values never leak: only [secret:REF] appears in the message, history, or transcripts. Values exist only in tab memory and the 0600 credential file.
  • Detection is conservative: high auto-hides, medium waits for a confirm, and unknown formats are never guessed (manual marking is the fallback).
  • Collision-safe refs: if a ref is already configured, the next free ref is used instead of overwriting; the same value is stored once per session.
  • No reveal endpoint: the credential seam reads value-free with no enumeration; after a refresh the in-memory value is gone and chips do not persist.
  • Use-time visibility (v1): secret_resolve brings the value into model context only when the model asks for it.

Development

node scripts/build.mjs   # rebuild lib/client.js (no external bundler)
npm test                 # node --test tests/*.test.mjs

Structure

dsh-secret-paste/
├── package.json           # dsh.bundle.patch + dsh.client declarations
├── cordis.patch.yml       # mounts the server row
├── lib/
│   ├── index.js           # server: secret_resolve tool (recursive resolution)
│   └── client.js          # prebuilt browser bundle
├── src/
│   ├── resolve.js         # nested-placeholder resolver (shared with server)
│   ├── scan.js            # detection helpers (shared with tests)
│   └── client/index.js    # paste interception, chips, credentials.set
├── vendor/secret-scan.cjs # vendored @sanity-labs/secret-scan@1.1.0 (MIT)
├── scripts/build.mjs      # assembles lib/client.js
└── tests/                 # node:test unit tests

License

MIT. vendor/secret-scan.cjs is the compiled dist/index.cjs of @sanity-labs/secret-scan v1.1.0 (MIT), whose rules derive from gitleaks (MIT) and TruffleHog detectors; its license is preserved at vendor/secret-scan.LICENSE.