DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-allow

Allow

DeepSeek Harness 权限记忆插件:将某类命令加入允许列表,之后相同命令不再询问。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:DWJZ/dsh-allow#9e852119e6d1e483f4c780fcd0a4c7a1eb18d17c
README兼容性版本

说明

记住 sandbox-escalation 审批,以便相同命令不再询问。

兼容性与来源证明

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

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

版本

0.1.0stable
2026/9/18

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Pocketdsh-pocket把 DeepSeek Harness 装进你的口袋:一个包、一个设置页,手机扫码即同步访问电脑上的 DSH(局域网 + 公网,实时同屏)。DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Auto Reviewdsh-auto-review针对 DeepSeek Harness 审批请求的第二模型 AI 自动审查:只读审查子代理在审批应答链上决定允许或拒绝,并采用故障关闭回退机制和完整的会话日志审计。Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式

README


description: "dsh-allow: the approval card gains an always-allow button, and remembered command prefixes stop asking."

dsh-allow

English | 中文

The permission card grows a third button — 总是允许「pnpm dsh plugin」开头的命令 — and the rules it writes live in your harness home, managed with /allow. Click it and the command continues; the same command prefix never asks again.

What it does

DSH keeps a file sandbox: a command that writes outside the session workspace is denied, and the model may retry it with sandbox_permissions, which raises an approval card. That card is fine the first time and tedious the tenth, because the same handful of operations keep coming back (pnpm dsh plugin …, brew install …, gh repo view …).

  • A remembered rule settles the escalation in the host before any UI sees it — no card, no click.
  • No rule shows the approval card with three buttons:
    • 拒绝 — deny the call.
    • 总是允许「gh repo view」开头的命令 — store that rule, then allow this call.
    • 允许一次 — allow this call only.
  • Every other approval request (hooks, write/edit path escalations, anything that is not a sandbox escalation) keeps the built-in card untouched.

A rule is scoped by tool + requested sandbox mode + the command's leading words, and it only ever covers a single command (see below), so allowing pnpm dsh plugin never allows rm, and a rule recorded for danger-full-access does not cover a different request. The prefix drops a leading cd … &&, drops VAR=value, reduces the program to its basename (/opt/homebrew/bin/gh → gh), and then keeps words until the first flag, path, or shell operator. The button names the exact prefix before you agree to it.

What a rule does not cover

A compound line never rides a rule. brew install gh && rm -rf / starts with the words a rule for brew install gh names, but the rule grants the whole line — so the second half would ride along. Such a line is therefore never matched against rules and never offers the always-allow button: the card says why and asks every time. A leading cd … && chain is the one exception, because the rule names the program after it (cd /tmp && brew install gh is rememberable as brew install gh). Pipes, semicolons, redirects, $(…), backticks, and multi-line commands all count as compound.

Paths are not part of a rule. A rule names a command, not a directory. Path scoping is the sandbox's job: under workspace-write the session workspace plus the platform temp areas are writable with no prompt at all, and everything outside them is denied — which is where this card appears. So "let me write under ~ but ask for /" is expressed by making the session workspace ~ (add it as a workspace and start the session there), not by a rule. Rules then only decide which programs may reach outside that boundary.

Install

# from GitHub
dsh plugin --profile web add github:DWJZ/dsh-allow

# local development
dsh plugin --profile web add link:/path/to/dsh-allow

/allow

/allow                                  # same as /allow list
/allow add bash danger-full-access pnpm dsh plugin
/allow remove 2
/allow clear

Rules file

$DSH_HOME/dsh-allow.json (override with the rulesFile config field):

{
  "version": 1,
  "rules": [
    { "id": "r1758000000000", "hits": 4, "tool": "bash", "mode": "danger-full-access", "prefix": "pnpm dsh plugin" }
  ]
}

Unreadable or hand-edited files degrade to "no rules" rather than blocking approvals; deleting a rule just means the card asks again.

How the card is built

The built-in approval card's action row is fixed (拒绝 / 允许一次), and its only slot is the command detail — a plugin cannot add a button to that component. This plugin therefore registers its own conversation.composer chain entry at a lower priority than the built-in one, and renders a card with the same markup and the same CSS declarations, plus the extra button. It matches only sandbox escalations, so every other approval still renders through the built-in card.

The two host routes behind it:

  • GET /dsh-allow/pending?sessionId=…&callId=… — what this approval would remember (prefix + command), so the button can name it. Loopback only.
  • POST /dsh-allow/remember — store the rule. Same-origin loopback only.

Test

npm test        # host suite + browser suite

The host suite covers prefix derivation, the escalation shape, rule storage and matching, the pending store's identity and expiry rules, both routes (including their refusals), and the /allow grammar. The browser suite loads the client bundle, checks the chain registration and its escalation predicate, and server-renders the card. Set DSH_CHECKOUT=<dsh checkout> for the render assertion.

Limits

  • Only bash/pwsh command escalations get the third button; write/edit path escalations keep the built-in card.
  • The card is this plugin's own render, not the built-in component, so a future change to the harness's card markup is not inherited automatically.
  • It reads the escalation out of the logged tool call, so an approval request without a call id is left to the built-in card.

License

MIT