DeepSHPlugins
dsh-perm-guard 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-perm-guard

安全與運維JavaScriptMIT

自動審批許可權守衛:介於 workspace-write 與 danger-full-access 之間的中間檔——信任目錄內安全操作自動放行,危險操作一律人工確認;11 個分類開關可調,自帶審計記錄。

1 Starsa903067276-rgb 更新時間 2026-09-10
訪問 GitHub 倉庫
dsh-perm-guard 專案預覽
dsh-perm-guard 介面截圖dsh-perm-guard 介面截圖

專案介紹

中文

自動審批許可權守衛:介於 workspace-write 與 danger-full-access 之間的中間檔——信任目錄內安全操作自動放行,危險操作一律人工確認;11 個分類開關可調,自帶審計記錄。

English

Auto-approval permission guard: a middle tier between workspace-write and danger-full-access — auto-allows safe operations inside trust directories, always asks a human for destructive ones, with 11 per-category switches and an audit trail.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
a903067276-rgb
倉庫
a903067276-rgb/dsh-perm-guard
GitHub Stars
1
Forks
3
開發語言
JavaScript
許可證
MIT
最近推送
2026-09-10
Manifest
資料中檢測到宣告

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

資料評分

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

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

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

安裝與使用

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

dsh plugin --profile web add github:a903067276-rgb/dsh-perm-guard

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

專案截圖

倉庫 README

GitHub 原文

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

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

dsh-perm-guard 🛡️

English | 简体中文

License: MIT

Awesome DSH Plugin

Auto-approval permission guard for DeepSeek Harness (dsh) web — the "middle tier" between workspace-write (asks too often) and danger-full-access (too open). Common operations like cross-directory edits, git commit/merge and builds run without approval prompts; destructive operations (deletes, disk ops, privilege escalation, curl|sh) always ask for human confirmation.

*Unofficial project: independently developed and maintained by a community member, not an official DeepSeek product.*

Screenshot

Auto button in the composer tool row

Auto Permissions settings page

Features

  • Two modes (switchable in the settings page, persisted):
  • Standard — auto-approve inside the trust directories (workspace, sibling directories, custom list); outside + risky operations prompt.
  • Aggressive — location-unrestricted: only destructive operations still prompt.
  • 11 per-category tri-state switches (auto / ask / deny) with your personal defaults.
  • Audit trail — every decision is recorded (approved / forwarded to human / rejected) with timestamp and command summary.
  • Persistent config — ~/.dsh/perm-guard.json, survives restarts. Zero host dependencies.

Install

dsh plugin --profile web add "github:a903067276-rgb/dsh-perm-guard#main"

Then restart dsh web. Update: dsh plugin --profile web update dsh-perm-guard, restart.

Manual install fallback: see docs/install.md.

Usage

  • Auto button — in the composer tool row (left of the input box). Click to toggle auto-approval on/off (green = on). Off restores the host's default approval behavior completely.
  • Settings → "Auto 权限" (Auto Permissions) — total switch, mode selection (Standard / Aggressive), 11 category switches, trust directory editor, and the recent-decision audit list.
  • Rules apply to all sessions (including subagents) while enabled.

Mode defaults

CategoryStandardAggressive
File edit (write/edit/cp/mv/mkdir)auto (in trust dirs)auto
Git local (commit/merge/rebase/checkout)autoauto
Build / test / installautoauto
Read-only queries (ls/cat/grep/git status)autoauto
Delete (rm, reset --hard, clean -fd)askask
Protected paths (.ssh/.aws/secrets/.env/system dirs)askask
Privilege (sudo, services, global installs)askask
**Network download-execute (curl\sh)**askask
Git pushaskauto
Publish / deployaskauto
Disk / partition / deviceaskask

Switching modes resets the category switches to that mode's defaults (adjustable afterwards).

Never auto-approved (all modes)

  • Deletion: rm, rm -rf / or ~ (circuit breaker, even with $(...) variants), git reset --hard, git clean -fd, Remove-Item
  • Disk: dd writing devices, mkfs/fdisk/wipefs/diskutil erase, writes to /dev/
  • Privilege: sudo/su, service management (launchctl/systemctl), recursive chmod/chown on / or ~
  • Network download-execute: curl|sh, wget|sh
  • Force push: git push --force / -f (rewrites history)
  • Writes to protected paths

Platform support

PlatformStatus
macOS✅ development environment
Linux⚠️ expected to work
Windows✅ adapted & field-tested (win32 path handling + PowerShell vocabulary, 2026-08-24)

Windows notes

  • Trusted dirs accept three absolute-path styles — C:\…, C:/…, /c/… (MSYS/Git-Bash) — normalized to C:/… on save; invalid entries are reported back by the UI instead of being silently dropped.
  • Classifier covers common PowerShell cmdlets: pipeline/formatting (Select-Object etc.) count as read-only; Invoke-RestMethod/iwr map to network; Stop-Process, reg add, schtasks /create etc. map to privilege (always human-confirmed); vssadmin delete shadows, bcdedit, diskpart are hard red lines.
  • gh CLI read-only subcommands (view/list/status…) auto-approve; write operations fall back to human confirmation.
  • Escalated retries (sandbox_permissions) raise exactly one confirmation card instead of two.

Requirements

  • DSH web >= 0.1.0-rc.6 (the approval system this plugin guards)
  • Version compatibility (best effort — the settings card uses dual-field key+id registration to satisfy both rc.6 (id) and rc.7+ (key); verified locally on rc.6/rc.8/0.1.1-rc.2/0.1.5-rc.1, not guaranteed on every DSH version):
  • DSH 0.1.0-rc.6 and newer (incl. the 0.1.1 / 0.1.2 / 0.1.5 lines): try main (default) or v0.2.9 and newer.
  • Conservative fallbacks (the last pre-0.1.1 build): DSH 0.1.0-rc.7/rc.8 → v0.2.7 (dsh plugin add github:a903067276-rgb/dsh-perm-guard#v0.2.7); DSH 0.1.0-rc.6 → frozen rc6-compat tag (no maintenance).
  • ⚠️ On DSH 0.1.5+ do not install v0.2.8: it imports the removed settingsNamespace export and makes the whole plugin tree fail to load (the web app will not boot). Use main / v0.2.9+ instead.
  • pnpm in PATH — dsh plugin is a pnpm forwarder (needed for install/update)
  • Maintenance policy: this plugin keeps evolving with the latest DSH releases; compatibility with older DSH versions is best-effort only and not guaranteed going forward.

How it works

  • Interception before the host prompt — every approval request is intercepted before the host prompt; the actual command/target is classified, and safe operations are auto-answered allowed-once (~13ms, no popup), risky ones are forwarded to the human prompt.
  • Call lookup — an approval request carries no tool arguments, so the plugin resolves the real arguments from the session log by callId; DSH 0.1.5 removed Session.events, so it now reads the public snapshotEvents() (older hosts keep the events path). When neither is available it always falls back to the human prompt (safe default, never auto-allow).
  • Command-level firewall (tools/pre-execute) — dangerous categories are intercepted *before* the sandbox even rejects them.
  • Classification pipeline — the two modes set per-category defaults (Standard: trust directories; Aggressive: location-unrestricted), and the 11 tri-state switches (auto / ask / deny) fine-tune each category.
  • Audit + persistence — every decision is recorded with timestamp and command summary; approval decisions are always persisted via the host's approval/asked + approval/decided event pair.

Notes

  • DSH's sandbox has no OS-level network fence (unlike Codex): the plugin can only detect download-execute patterns (curl|sh) in command text, not block other network traffic.
  • Terminal sessions, subagent creation, model calls and MCP tools are outside the approval system entirely.
  • Commands whose *text* contains danger words (e.g. echoing "Remove-Item", or scripts embedding rule sources) are conservatively intercepted — expected, rare in practice.
  • The audit list is in-memory (60 entries) and resets on restart; approval decisions themselves are always persisted via the host's approval/asked + approval/decided event pair.

Coverage

  • All approval entry points in DSH are covered: bash, pwsh (PowerShell), and the write/edit file tools. MCP tools and other read-only tools have no approval mechanism and are unaffected.
  • Compound commands (a && rm -rf x): pure-word chains are split and evaluated per subcommand, taking the strictest result; chains containing variables/redirection/wildcards are treated conservatively as one unit.
  • Unknown commands always fall back to "ask" regardless of mode (safe default) — the classifier never auto-allows what it cannot parse.

How it compares to Claude Code / Codex

Claude CodeCodexdsh-perm-guard
Read-only command setbuilt-in, not configurablesandboxbuilt-in + configurable
rm -rf / ~ breakeralways promptssandbox blocksalways prompts (all modes)
Protected pathsyes.git/.agents/.codex.ssh/.aws/secrets/system dirs/.git
Network isolationtool-levelOS-level (default off)not available (DSH has no OS network fence; only `curl\sh` pattern detection)
Approval categories3 tool classes5 granular switches11 explicit switches + 2 modes
Auditingprompts onlylogsin-plugin audit + host approval/asked/decided events

Configuration file

~/.dsh/perm-guard.json (created on first change):

{
  "enabled": true,
  "mode": "standard",
  "categories": { "fileEdit": "auto", "...": "..." },
  "trustedDirs": []
}
  • trustedDirs: extra absolute paths auto-approved in Standard mode (default: workspace + its sibling directories).
  • Trust directories are ignored in Aggressive mode (location-unrestricted).

Development

# hot-plug testing (no restart)
# 1. define a dynamic Cordis plugin with the same decision logic
# 2. cordis_run → verify → cordis_stop

# static bundle (this repo layout)
# symlink to ~/.dsh/profiles/web/node_modules/dsh-perm-guard
# add "dsh-perm-guard" to ~/.dsh/profiles/web/package.json dsh.profile.bundles
# restart dsh web

Verification matrix: docs/verify-checklist.md

License

MIT

使用前核對

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

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

同類專案