插件目录 / Security / dsh-session-allow
dsh-session-allow
已验证 · 实测可装 AnakinCao
功能简介
DSH Web GUI plugin: session-scoped "Allow for this session" option in the approval dialog (per-mode standing grants, localStorage) + right-panel auto-open guard
可用 — 实测通过,早期项目
DSH Web GUI plugin: session-scoped "Allow for this session" option in the approval dialog (per-mode standing grants, localStorage) + right-panel auto-open guard 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-session-allow
简体中文: README.zh.md
A DSH (DeepSeek Harness) Web GUI plugin that adds an "Allow for this session" option to the approval dialog.
When you pick it, a session-scoped, per-mode standing grant is recorded (persisted in localStorage, isolated by session id). Later escalation requests of the same mode in this session are auto-approved without a dialog; other modes keep prompting as usual.
What it does
| Scenario | Behavior |
|---|---|
A tool asks to escalate to danger-full-access |
Dialog shows: Reject / Allow once / Allow danger-full-access for this session |
| You click "Allow for this session" | The current request is allowed and the mode is granted for this session |
| Same mode is requested again in this session | Silently auto-approved, no dialog |
| A different mode is requested (not yet granted) | Still prompts normally |
| Bottom of the dialog | Shows this session's granted modes as revocable chips (click × to revoke) |
| Page refresh / new session | Grants persist per session id / stay isolated per session |
How it works (no core package changes)
The core approval panel is registered on the conversation.composer chain slot at priority 1. This plugin registers the same slot at priority 0 with an identical selector — the chain slot elects the lowest-priority entry whose select returns non-null, so this panel fully replaces the core one. Grants live in localStorage["dsh.sessionAllow.v1"]; a matching request is auto-answered allowed-once on the wire (the host audit still records approval/asked + approval/decided as usual).
Grant keys: mode:<mode> (parsed from the reason escalate sandbox to <mode>: ...); non-escalation reasons fall back to tool:<tool>:<reason>.
Install
Method 1 — recommended, one command (restart dsh web afterwards):
dsh plugin --profile web add https://github.com/AnakinCao/dsh-session-allow.git
Method 2 — manual: append to ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: dsh-session-allow
name: 'dsh-session-allow'
and place the repository content under ~/.dsh/profiles/web/node_modules/dsh-session-allow/ (or pnpm add), then restart dsh.
Pick ONE method — never mount twice.
Verify
- The dialog shows three buttons: Reject / Allow once / Allow … for this session.
- Click "Allow for this session" → the current request is allowed.
- Trigger the same mode again → no dialog, executes directly.
- The chips at the bottom show the granted mode; click × to revoke and the mode prompts again.
- Open another session → that mode still prompts (grants are per-session).
Uninstall
dsh plugin --profile web remove dsh-session-allow
or delete the - insert entry from the profile's cordis.patch.yml and remove node_modules/dsh-session-allow. Grant data lives in the browser's localStorage["dsh.sessionAllow.v1"] and can be cleared manually.
File structure
dsh-session-allow/
├── package.json # dsh.client / dsh.bundle declaration
├── cordis.patch.yml # loader entry registration
├── lib/
│ ├── index.js # host-side placeholder plugin
│ └── client.js # client bundle (panel takeover + session grants)
├── test/
│ └── behavior.test.mjs # grant / auto-allow / revoke regression tests
└── README.md
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-session-allow」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:AnakinCao/dsh-session-allow Headless(CLI)profile:
dsh plugin --profile headless add github:AnakinCao/dsh-session-allow 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。