DeepSHPlugins
dsh-always-require-tools-approval 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-always-require-tools-approval

安全與運維TypeScriptMIT

在配置的工具(預設 bash、pwsh)執行前要求一次性使用者審批:受控工具暫停並詢問,其餘委託執行,缺少審批渠道時預設拒絕。

3 StarsJ0ss077 更新時間 2026-09-06
訪問 GitHub 倉庫
dsh-always-require-tools-approval 專案預覽

專案介紹

中文

在配置的工具(預設 bash、pwsh)執行前要求一次性使用者審批:受控工具暫停並詢問,其餘委託執行,缺少審批渠道時預設拒絕。

English

Requires one-shot user approval before configured tools (default bash, pwsh) execute — gated tools pause and ask, everything else delegates, and a missing approval channel fails closed.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
J0ss077
倉庫
J0ss077/dsh-always-require-tools-approval
GitHub Stars
3
Forks
0
開發語言
TypeScript
許可證
MIT
最近推送
2026-09-06
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

60/ 100
維護活躍
97
文件與實用資訊
85
生態關注度
17
安裝便捷訊號
100
專案宣告訊號
100

近 5 天仍在更新;README 含完整安裝與使用說明;關注度尚低(3)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:J0ss077/dsh-always-require-tools-approval

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

@j0ss077/dsh-always-require-tools-approval

Stop. Confirm. Run. A DeepSeek Harness plugin that pauses the tools on your watchlist and waits for your explicit approval before every execution.

npm version license: MIT [node: >=22.19]()

What it does

DSH runs your agent in a sandbox that blocks file writes — but not commands. bash can still read files, launch programs, and reach the network.

This plugin puts an approval gate between a tool and its execution. When the agent calls a tool on the watchlist, the harness pauses and asks before anything runs.

  • Default watchlist: bash and pwsh.
  • One approval = one execution. The next call asks again.
  • Reject, cancel, or no approval channel → the tool is blocked.
  • Every other tool is left untouched.

Requirements

  • A DSH profile with an approval service — the standard web (GUI) profile ships one.
  • Node.js >= 22.19.

Install

One command installs and activates the plugin (it ships as a bundle layer):

dsh plugin --profile web add @j0ss077/dsh-always-require-tools-approval

Then restart the GUI. Use a different --profile if you run under another one.

Configure

One option: tools — the watchlist.

KeyTypeDefaultMeaning
toolsstring[]["bash", "pwsh"]Tool names that require approval before they run.

Override it at runtime without reinstalling. Edit ~/.dsh/settings.yaml ($DSH_HOME/settings.yaml when set):

always-require-tools-approval:
    tools: ["bash", "pwsh", "node"]

This file takes precedence over the value baked into the bundle.

What you'll see

  1. The agent calls a watched tool, e.g. bash.
  2. Execution pauses: "Approve this tool execution?"
  3. Approve → that single call runs. Reject → denied, and the agent is told you rejected it.

Every call prompts again — approving once never grants a blank check. The prompt text is fixed by design.

Subagents are covered too. The harness normally rejects a delegated child's approval asks automatically, so when a watched tool runs inside a subagent this plugin forwards the question to the top-level (user-facing) session instead, where you approve or reject it as usual. Because the subagent's call card is not part of the top-level conversation, the prompt is explicit about what is happening:

Subagent approval: run "bash" · Why: clean the build output · Command: rm -rf dist

Why: is the tool call's own description and Command: the exact command about to run; the fields are separated by · so the prompt stays readable in the single-line approval headline.

Safety model

  • One-shot. One approval authorizes exactly one execution.
  • Fail closed. No approval channel (headless run, unmounted service) → the tool is denied, never silently allowed.
  • No auto-approve. For a watched tool the plugin only asks; it never approves on its own.
  • No interference. Unwatched tools delegate to the next plugin.

See SECURITY.md for the security posture and how to report a vulnerability.

Update & remove

dsh plugin --profile web update @j0ss077/dsh-always-require-tools-approval
dsh plugin --profile web remove @j0ss077/dsh-always-require-tools-approval

Restart the GUI after updating.

Development

pnpm install
pnpm build      # compile and normalize .d.ts
pnpm typecheck  # type-check source + tests
pnpm test       # node --test

The plugin is four modules — src/contracts.ts (harness types), src/gate.ts (the gate policy), src/subagent.ts (the subagent lineage rules), src/index.ts (wiring). See ADR 0001 for why the harness types are self-declared and ADR 0002 for why subagent approvals are routed to the root session.

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案