ArisuYuuko/dsh-approval-explainer

DSH Approval Explainer annotates the DeepSeek Harness approval dialog: when the model asks to run something outside your workspace, it adds an explanation generated from the model's own reasoning - what the code does, what the model is trying to achieve, how risky it is and why, and what each button actually means - only for real approval requests and without ever blocking the decision.

DSH Approval Explainer is an AI annotator for the approval dialog in DeepSeek Harness. When the model asks to run something outside your workspace and dsh shows an approval prompt, the plugin adds an explanation next to the command generated from the model's own reasoning - what the code does, what the model is trying to achieve, how risky it is and why, a recommendation, and what each button actually means (including what the file write persists). It hooks only approval/request (annotating everything would be the same as annotating nothing - one measurement saw approval/request fire twice while tools/pre-execute fired 259 times), starts generation in the background and immediately hands the decision back, so a failed or timed-out generation cannot affect what you may approve. It looks tool arguments up by callId in the session log with three fallbacks and says so rather than inventing them when it cannot, escapes annotation text on render, and includes a diagnostics page plus a view that renders annotations even if the browser half misbehaves.

Tools & Capabilities ★ 0 updated 2026-10-13
View on GitHub ↗

Install

dsh plugin --profile desktop add github:ArisuYuuko/dsh-approval-explainer

Copied verbatim from the README's Install block; the README notes desktop is the profile the desktop app boots, instructs fully quitting and reopening DSH (the host half loads only at process start), and documents removal as dsh plugin --profile desktop remove dsh-approval-explainer.

Compatibility

A DSH bundle contributing one configuration layer (inject: llm, approval) to a profile. It observes the approval/request waterfall and serves eight HTTP routes behind a loopback Host/Origin trust fence; it does not check req.socket.remoteAddress, which the README argues is not currently exploitable because DSH's web server binds 127.0.0.1 only. The two hard constraints are documented: never inject a client bundle by hand (duplicate module-id registration breaks web boot and triggers DSH's crash self-heal), and apply() must never throw. English README with a Chinese translation.

Details

Alternatives

1321928757/dsh-api-kit · 1321928757/dsh-mysql · 1624318455/dsh-plugin-tavily

More plugins in Tools & Capabilities

Browse more in Tools & Capabilities

Guides for Tools & Capabilities plugins