Codex-style auto-review permission mode: adds an auto-review preset that auto-approves safe sandbox escalations, asks on risky or ambiguous ones, and rejects critical unconfirmed operations.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:AntaresCorn/dsh-auto-reviewer
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A permission mode for DeepSeek Harness similar to Codex Auto Reviewer / "approve for me":
- Adds an auto-review option to the existing Permissions list.
- When the model requests a sandbox escalation, the plugin automatically judges whether the operation is dangerous or explicitly confirmed by the user.
- Safe operations are auto-approved (
allowed-once); risky/ambiguous operations are forwarded to the user for confirmation; clearly malicious or destructive operations are rejected. - For ambiguous cases, an optional LLM review decides; if the LLM is unavailable or unsure, it safely falls back to asking the user.
This is a community project and is not affiliated with or endorsed by DeepSeek.
Features
- New permission preset: extends the official
permission-presetstable throughcordis.patch.yml. The UI permission dropdown gains anauto-reviewoption, which writesworkspace-write + askand records theauto-reviewpreset. - Auto-decision notices: whenever the plugin auto-approves or auto-rejects, it injects a Codex-style notice into the conversation flow (approve:
Automatic approval review approved (risk: low, authorization: unknown): Auto-review returned a low-risk allow decision.; deny:Automatic approval review denied (risk: high, authorization: unknown): Auto-review returned a high-risk deny decision.), so you can see which escalations were decided automatically. - Auto permission icon: on load, the plugin automatically adds an
auto-reviewicon (shield + sparkle) to the installed DSH permission selector, matching the built-in presets. Re-applies automatically after upgrading or reinstalling dsh; a browser hard refresh picks it up. - Approval waterfall prepend: uses
ctx.on('approval/request', handler, true)to place the reviewer before the interactive UI answerer; returningallowed-once/rejecteddecides immediately, while callingnext()falls through to the normal human confirmation prompt. - Multi-level safety policy:
- Fast approve:
workspace-writeescalation that is not high risk; - User-confirmed approve: recent user messages contain explicit signals such as "please run / I confirm / allow", and the operation is not a critical destructive one;
- Ambiguous → human: the LLM returns
ask, the LLM is unavailable, or it times out; - Direct reject: matches the
blocklist, or is a critical destructive operation without user confirmation (rm -rf /,mkfs,curl | sh, etc.).
- Fast approve:
- Optional LLM review: by default, uses the current session's provider/model for a short JSON review of ambiguous requests; you can configure a dedicated
llmProvider/llmModel.
Installation
Install from GitHub (recommended)
dsh plugin --profile web add github:AntaresCorn/dsh-auto-reviewer
Or clone and install manually (the repo ships a compiled lib/; for local-directory installs, install dev dependencies and link the host packages first):
git clone https://github.com/AntaresCorn/dsh-auto-reviewer.git
cd dsh-auto-reviewer
npm install
npm run link-host
cd ..
dsh plugin --profile web add /path/to/dsh-auto-reviewer
Note: dsh plugin add /path/to/dir installs through a link: to that directory, so you must run npm install and npm run link-host in the repo before installing.
Local build
npm install # install dev deps such as typescript / @types/node
npm run link-host # symlink node_modules/@deepseek-ai to the installed dsh host packages (avoids duplicate copies)
npm run build # src/ → lib/ (the repo already ships the compiled output; regular users don't need to build)
After install/injection, fully restart DeepSeek Harness, open a new session, and select auto-review in the permission picker.
⚠️ Lesson learned (tested 2026-08-16): do not hot-load the plugin with
dev_install_package/dev_inject_pluginduring a running conversation and continue using it. The hot-load path is inconsistent with the official bundle assembly and can corrupt loader/agent context (Cannot read properties of undefined (reading 'enabled')). Install through the officialdsh plugin --profile web add <dir>and thensystemctl --user restart dsh-web(or your equivalent restart method). The dev directory'snode_modulesis for local build/typecheck only; don't let it become the runtime dependency source for a profile link.
Usage
- Open a new (or existing) session.
- Select auto-review in the permission dialog/settings.
- Let the model work normally. When it requests
sandbox_permissionsescalation after a sandbox denial, the plugin decides automatically:- Safe → auto-approved;
- Risky → manual confirmation prompt;
- Clearly malicious / unconfirmed destructive → rejected.
Configuration
The plugin's default configuration is provided in cordis.patch.yml. You can override it through the profile's cordis.patch.yml:
| Option | Default | Description |
|---|---|---|
presetName |
auto-review |
The permission preset this plugin responds to |
llmProvider |
'' |
Reviewer LLM provider; empty = use the current session |
llmModel |
'' |
Reviewer LLM model; empty = use the current session |
maxContextMessages |
12 |
Number of recent user messages considered |
autoApproveWorkspaceWrite |
true |
Auto-approve non-high-risk workspace-write escalations |
autoApproveDangerFullAccess |
true |
Auto-approve non-high-risk danger-full-access escalations |
autoApproveUserConfirmed |
true |
Approve when the user explicitly confirmed and it is not critical |
askOnAmbiguous |
true |
Ask the user when ambiguous; false rejects instead |
rejectCritical |
true |
Reject critical destructive operations without user confirmation |
useLlm |
true |
Use LLM review for ambiguous requests |
timeoutMs |
10000 |
LLM review timeout |
blocklist |
[] |
Custom regex blocklist |
blocklistMode |
reject |
reject or ask when a blocklist pattern matches |
extraInstructions |
'' |
Extra instructions appended to the reviewer LLM |
Security notes
- Any internal exception fails closed: it calls
next()to ask the user and never auto-approves. - Auto-approval is one-shot (
allowed-once); it does not remember "always allow". - This plugin does not bypass the
neverpolicy: if the session is switched todanger-full-access(approval: never), the approval service rejects before reaching this plugin. - Read the source before installing; the plugin only makes permission decisions and only makes LLM review calls (no other network requests).
Repository structure
dsh-auto-reviewer/
├── cordis.patch.yml # extends permission presets + mounts the plugin
├── package.json # plugin package metadata (dsh.bundle.patch)
├── scripts/build.sh # tsc build script (no DSH checkout required)
├── scripts/link-host-deps.sh # symlinks host @deepseek-ai deps (avoids duplicates)
├── src/index.ts # auto-review implementation
├── README.md # Chinese README
└── README.en.md # English README
License
BSD-3-Clause
Links
More in this category
PerryLink/dsh-auto-review★ 28
Second-model auto-review on the approval answerer chain: a read-only reviewer subagent returns structured allow/deny verdicts with reasons, fail-closed by default.
omdsh-dev/dsh-security-audit★ 12
Local security audit: config, plugin origins, sessions, network exposure — read-only redacted risk report.
slywalker2006/dsh-passwords★ 11
Turns DeepSeek Harness into a server-grade multi-tenant platform: remote access + auto HTTPS, subuser permissions & token/daily quotas, sandbox enforcement, encrypted auth & audit log.
PerryLink/dsh-permission-rules★ 8
Claude Code-style declarative permission rules: ordered allow/deny/ask YAML rules matching tool names, arguments, workspace paths, and agent identity on the tools/pre-execute waterfall, with full session-log audit, dry-run mode, and hot reload.
Yuuz12/dsh-webui-auth★ 7
WebUI authentication enforced at the HTTP/transport layer: four-layer login gate (resources, plugin bundles, /api, WebSocket), server-side sessions with HttpOnly cookies.
Letter2025/dsh-approval-llm★ 6
Model-based permission approval: an approval-request answerer backed by a separate reviewer model.