DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-approval-ai-review

k

dsh-approval-ai-review

Manifest valid

AI-reviewed auto-approval for DeepSeek Harness: safe tool asks granted automatically, risky ones escalated with the review attached

hasBundlePatch

dsh-approval-ai-review

English | 中文

A DeepSeek Harness plugin (dsh-plugin).

Install

dsh plugin --profile web add dsh-approval-ai-review

Or from GitHub: dsh plugin --profile web add github:kiiiiile/dsh-approval-ai-review.

Summary

Use this package to stop confirming every safe tool ask by hand. When enabled for a session, each pending approval ask is judged by one auxiliary model call before any human answerer runs: a safe operation is granted automatically, and every other outcome — escalation, review failure, deadline, malformed output — reaches the remaining answerers with the review's analysis (what the operation would do, what it risks) attached to the request. The plugin ships inert: without /auto-approve on (or enabled: true) it delegates every ask unchanged.

Table of Contents


Use this package

Compose this plugin after @deepseek-ai/dsh-user-approval in deployments whose permission mode still asks: the reviewer consumes the same approval/request waterfall the Web and ACP answerers listen on, registered with prepend so it settles before any prompt appears. It requires ctx.llm; the review call reuses the agent's routed conversation model unless an explicit route is configured.

- name: 'dsh-approval-ai-review'
  config:
    enabled: true
FieldDefaultMeaning
enabledfalseComposition default for sessions without an approval/review/enabled override
reviewProvider / reviewModelfollow the conversation modelExplicit review route; must be supplied together
reasoningEffortlowReasoning effort for the review call (off/low/high/max)
maxTokens2048Output-token cap for one review call
reviewTimeoutMs30000End-to-end review deadline

The exhaustive configuration surface is the Config schema in src/index.ts.

Toggling per session

/auto-approve [on|off] appends the durable approval/review/enabled switch to the session log (the last event wins; without one the composition default applies), and bare /auto-approve reports the current state. The switch is log-only: the model never sees it.

Deciding one ask

The reviewer receives the tool name, the exact tool/call arguments from the session log when the ask carries a call id, and the asker's reason. A validated {"verdict":"approve"} resolves the ask allowed-once. Anything else — an escalate verdict, a transport error, a fired deadline, malformed output — delegates the ask to the remaining answerers with the review's analysis appended to the request reason, so the human prompt states what the operation would do and what it risks. Without a composed answerer the seam's own fail-closed unavailable applies.


Understand the implementation

Implementation internals — click to expand

The observable behavior is covered in Use this package; this section explains dispatch, the review call, and the log path.

Source map

FileRole
src/index.tsPlugin registration, the prepend approval/request listener, the /auto-approve command
src/reviewer.tsRoute resolution, reviewer prompts, verdict parsing, session-log reads
src/types.tsConfig, verdict vocabulary, and the three log-only session events

Dispatch and the reason mutation

The prepend listener owns safe decisions and delegates everything else. On escalation it mutates the shared request's reason (the mutate-then-delegate pattern of the waterfall contract) so downstream answerers present the analysis; the committed approval/asked audit event already carries the asker's verbatim reason, so the log is unaffected.

The review call

The call is one hand-built ctx.llm.stream() request with the review system prompt and a JSON-framed input; the exact route, effort, prompts, and cap are appended as approval/review/request BEFORE dispatch, and the parsed verdict as approval/review/verdict, so the auxiliary request is reconstructable from the session log. A merge-extensible finish reason falls through unknown kinds to failure, and every failure path escalates — this plugin never rejects on its own authority.


Model Experience

Review decision

What the model sees

Nothing new. The three review events and the toggle switch are log-only; the model sees the eventual tool outcome exactly as without the plugin, and the standing approval:policy sentence stays accurate because asks still happen — they are answered earlier.

Token effect

Zero model-transcript tokens. Each enabled ask costs one auxiliary model call that never enters the conversation transcript.

KV Cache effect

Unchanged. The review call is a separate request with its own prefix; the conversation's stable request header and cached prefix are untouched.

Known Limitations and Deferred Work

  • The reviewer never denies — a dangerous ask escalates to a human rather than being rejected automatically; a machine-denial verdict is deferred until a deployment owns that authority.
  • Child sessions do not inherit the switchapproval/review/enabled is not seeded into delegated children the way approval/policy is; a child review default is deferred until delegation owns one.
  • The review consumes wall-clock time inside the ask — a slow model extends the pending ask; reviewTimeoutMs bounds it but does not shorten the caller's own tool-timeout budget.
  • Effort validation is per-routereasoningEffort values the routed model does not advertise fail the review (which escalates) rather than the boot; the compatible set is not known until a route exists.

Dev Note

Working context for maintainers — click to expand

No ./invariant companion: the plugin owns no relationship whose observations can diverge — the review request/verdict pair is validated at the model-JSON boundary, and the ask/decided audit pair belongs to dsh-user-approval's invariant.

Comments

Loading…

Similar plugins

dsh-safe-tool

by GoshawkGGGG

DeepSeek Harness 的 AI 工具审批插件,使用AI审核AGENT调用工具的合规性并决定是否执行,审核标准可定制。

Manifest valid

0

TypeScript

Sep 8, 2026

dsh plugin --profile web add dsh-safe-tool

by StyxNether

Auto-Approval: a middle permission tier for DeepSeek Harness between workspace-write and danger-full-access, auto-approving harmless commands and trusted-area targets

Security & AuditManifest valid

2

123/wk

MIT

JavaScript

Sep 6, 2026

dsh plugin --profile web add dsh-auto-approval-plugin

by LAwLi3tCoding

Adds an "approve for me" access mode whose approval requests are answered by an independent reviewer model instead of a person: the reviewer can read the workspace read-only, a reviewer that cannot ru

Security & AuditManifest valid

0

NOASSERTION

TypeScript

Sep 18, 2026

dsh plugin --profile web add dsh-approval-review

by PerryLink

Second-model AI auto-review for DeepSeek Harness approval requests: a read-only reviewer subagent returns structured allow/deny verdicts with reasons, fail-closed by default, fully auditable from the

Workflow & AutomationSecurity & AuditManifest valid

185

Apache-2.0

TypeScript

Sep 19, 2026

dsh plugin --profile web add dsh-auto-review

by Jiao-XXX

为 DeepSeek Harness 增加介于 Workspace Write 与 Full access 之间的自动批准权限档,危险或不确定操作仍转人工审批。An auto-approval permission preset between workspace-write and full access for DeepSeek Harness.

Workflow & AutomationSecurity & AuditManifest valid

15

185/wk

MIT

JavaScript

Sep 7, 2026

dsh plugin --profile web add dsh-auto-approve

by Letter2025

Model-based permission approval (approve-for-me) for DeepSeek Harness: an approval/request answerer backed by a separate reviewer model

Security & AuditDevelopment & InfrastructureManifest valid

7

170/wk

MIT

TypeScript

Sep 8, 2026

dsh plugin --profile web add dsh-approval-llm