<div align="center">
dsh-approve-for-me
Approve For Me · An Automated Escalation Reviewer Plugin for DeepSeek Harness
 
简体中文 · English
<img src="docs/images/banner-approval.png" alt="Approved example: Approve For Me approved pwsh · Low risk" />
</div>
When an agent in DSH asks to escalate its permissions (sandbox escalations, wider-permission retries, and similar), the popup no longer interrupts you directly — a reviewer model you configure reviews the request first: low-risk requests are auto-approved, while high-risk ones are either handed back to you or auto-rejected, depending on the mode you pick. Plain questions and plan-mode confirmations are never touched.
🤖 Two review modes
| Mode | Low risk | High risk |
|---|---|---|
| Approve For Me (Accept Only) | Auto-approve | Handed to you for manual review |
| Approve For Me (Accept & Refuse) | Auto-approve | Auto-reject, no manual step at all |
🚀 Quick install
One-click install
One command to install, one command to remove:
Windows (PowerShell)
# Install
irm https://raw.githubusercontent.com/watericetangcw/dsh-approve-for-me/main/scripts/install.ps1 | iex
# Remove
irm https://raw.githubusercontent.com/watericetangcw/dsh-approve-for-me/main/scripts/uninstall.ps1 | iexLinux / macOS (bash)
# Install
curl -fsSL https://raw.githubusercontent.com/watericetangcw/dsh-approve-for-me/main/scripts/install.sh | bash
# Remove
curl -fsSL https://raw.githubusercontent.com/watericetangcw/dsh-approve-for-me/main/scripts/uninstall.sh | bashThe scripts automate every step of the "Manual install" below:
1. Locate <DSH_HOME>/profiles/web/package.json (~/.dsh is used when DSH_HOME is unset); 2. Add dsh-approve-for-me to dependencies and insert the bundle entry in the right position (after @deepseek-ai/dsh-base, before @deepseek-ai/dsh-web-app), backing up the file to package.json.afm.bak first; 3. Run npm install inside profiles/web (pnpm install when pnpm-lock.yaml is present); 4. Tell you to restart.
Then restart dsh web and refresh the browser page once. The scripts are idempotent — running them again is a no-op once installed. You can also clone the repository and run ./scripts/install.sh (or .\scripts\install.ps1 on Windows) locally, which uses the local checkout and needs no network. Want to review the scripts first? See [scripts/install.sh](scripts/install.sh) and [scripts/install.ps1](scripts/install.ps1).
Manual install (alternative)
If you prefer to do it by hand:
1. Add the dependency and the bundle entry to <DSH_HOME>/profiles/web/package.json:
{
"dependencies": {
"dsh-approve-for-me": "file:../path/to/dsh-approve-for-me"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"dsh-approve-for-me",
"@deepseek-ai/dsh-web-app"
]
}
}
}2. Run npm install inside profiles/web. 3. Restart dsh web and refresh the browser page once.
> ⚠️ Bundle order matters: dsh-approve-for-me must sit after @deepseek-ai/dsh-base and before @deepseek-ai/dsh-web-app, otherwise the browser answerer claims every approval first and the plugin silently does nothing.
To roll back: remove the dependency and the bundle entry, run npm install again, and restart.
🚦 Usage flow
① Configure the reviewer model
Open Settings → Approve For Me, pick the provider, model, and reasoning effort, and save (a higher reasoning effort reviews more rigorously but takes longer):
<img src="docs/images/plugin-settings.png" alt="Approve For Me settings page: pick the reviewer model and reasoning effort" />
② Switch to an Approve For Me mode
In the mode selector next to the input box, switch from the regular modes (Read Only / Workspace Write / Full Access) to Approve For Me (Accept Only) or Approve For Me (Accept & Refuse):
<img src="docs/images/mode-selector.png" alt="Mode selector: Approve For Me alongside Read Only / Workspace Write / Full Access" />
③ Chat as usual — low-risk requests pass automatically
Just keep talking to DSH. When the agent escalates, low-risk requests are auto-approved by the reviewer and a green "Approved" decision row appears in the chat — no clicks needed:
<img src="docs/images/banner-approval.png" alt="Approved example: Approve For Me approved pwsh · Low risk" />
④ High-risk requests take the path your mode defines
- Accept Only mode: high-risk requests come back to you. The approval popup becomes a prominent warning panel showing the risk and the reviewer's rationale, where you choose Reject or Allow once anyway; a red "Not passed · escalated to you" decision row appears in the chat at the same time:
<img src="docs/images/manual-review.png" alt="Manual review popup: a high-risk request handed back to the user" /> <img src="docs/images/banner-refusal.png" alt="Escalated example: Approve For Me not passed · escalated to manual review pwsh · High risk" />
- Accept & Refuse mode: high-risk requests are auto-rejected and a red "Rejected" decision row appears — no manual involvement.
> 💡 With no reviewer model configured, both Approve For Me modes behave like Workspace Write (manual approval), so your workflow never gets stuck.
📖 Mode comparison
| Situation | Accept Only | Accept & Refuse |
|---|---|---|
| Reviewer says low risk | Auto-approve | Auto-approve |
| Reviewer says high risk | Manual review (reject or allow once) | Auto-reject |
| Reviewer timeout / error / invalid output | Manual review | Auto-reject (fail closed) |
| No reviewer configured | Manual approval | Manual approval |
| Request aborted | Cancelled | Cancelled |
🔗 Links
- Repository: github.com/watericetangcw/dsh-approve-for-me
- 简体中文 README:README.md
📄 License
[MIT](LICENSE) © 2026 WateRice