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.

Allow — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
A

dsh-allow

Allow

DeepSeek Harness 权限记忆插件:把某类命令加进允许列表,之后同类命令不再询问。 / Remember sandbox-escalation approvals so the same commands stop asking.

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

npx -y @deepseek-ai/dsh plugin --profile web add github:DWJZ/dsh-allow#9e852119e6d1e483f4c780fcd0a4c7a1eb18d17c
READMECompatibilityVersions

Compatibility and provenance

Allow is published as dsh-allow and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/18/2026

Versions

0.1.0stable
9/18/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/18/2026
View source ↗
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

Related plugins

More verified plugins in security-access.

Doctor@linxin666/dsh-doctorTransactional rescue mode for DSH profiles with a supervised launcher, isolated recovery capsule, deterministic repairs, health monitoring, and a local Web recovery consolePocketdsh-pocketPut DeepSeek Harness in your pocket: one package, one settings page, and scan a QR code on your phone to access DSH on your computer in sync (LAN + public network, real-time screen mirroring).DSCODE@toddzheng024/dscode-bundleA complete DeepSeek coding agent with persistent shell, Ultra collaboration and automatic permission review.Auto Reviewdsh-auto-reviewSecond-model AI auto-review for DeepSeek Harness approval requests: a read-only reviewer subagent decides allow/deny on the approval answerer chain, with fail-closed fallback and full session-log audit.

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