dsh-approval-reason-dock: Adding Rejection Reasons to DeepSeek Harness Approvals
fzqxdedafeiyu/dsh-approval-reason-dock
A DSH plugin that adds an optional rejection-reason panel to DeepSeek Harness approval prompts, steering your reason into the running turn before the rejection is answered.
dsh-approval-reason-dock is a DSH plugin that fills the missing rejection-reason channel in approvals. Native approvals only offer allow-once and reject, and the rejection outcome carries no explanation, so the model only sees that a tool was denied. The plugin floats a small bottom-right panel where you type a reason, delivers it into the running turn as a steering user message, and only then answers the approval as rejected, so the model reads the cause in its next step. It does not replace the built-in card or change the approval protocol, and fails soft when the panel cannot render.
How to Install
dsh plugin --profile web add dsh-approval-reason-dock- Category
- UI & Experience
- Platform
- DSH Plugin
- Author
- fzqxdedafeiyu
- Distribution
- Plugin
dsh-approval-reason-dock Key Features
dsh-approval-reason-dock Repo Summary
What Does It Do?
Approval Reason Dock is a DSH plugin for DeepSeek Harness that adds an optional rejection reason field to approval prompts. Native approvals only offer allow-once and reject, and the rejection outcome carries no reason channel, so the model only sees that the user rejected a tool. This plugin delivers your typed reason into the running turn as a steering user message before the approval is answered as rejected, so the model reads the context in its next step instead of guessing. It does not replace the built-in approval card, does not change the approval protocol or audit events, and fails soft when the panel cannot render.
Core Features
- Rejection reason injection: typing a reason and confirming sends it into the running session as a steering user message, then answers the approval as rejected.
- Steer-to-queue fallback: if the turn no longer accepts steering, the reason is queued instead so the content is not lost.
- Session following: the panel only offers approvals from the session shown in the main view, keeping other sessions quiet until you switch to them.
- Outcome reporting: the panel reports delivery results, showing the error code on failure; success notices hide themselves while failure notices stay until dismissed.
- Privacy by design: the reason becomes a normal user message in the session log and model context, capped at 500 plain-text characters, and the plugin makes no network requests.
How to Use This Plugin?
After enabling it in DSH, a small panel appears in the bottom-right corner whenever the active session has an answerable approval. Type your reason and press the reject-with-reason action; the plugin delivers the reason into the running turn first, then answers the approval as rejected. Pressing plain reject answers without a reason, exactly like the built-in button. Maintained by FzqxDedafeiyu under the MIT license, it requires DSH 0.2.1-rc.2 or a later 0.2.x release, and because it relies on DSH client internals a Harness upgrade may require a plugin update.
How to Troubleshoot This Plugin?
If the panel does not appear, a DSH client internal API is usually missing or the version is incompatible; approvals still work through the built-in card, so update to a compatible DSH release per the official instructions. When delivery fails, the panel shows the corresponding error code, which tells you whether the steering channel was unavailable or the approval was already settled; a reason moved to the queue is a normal fallback and needs no action.
This page is an independent rewrite of the plugin's official README — for authoritative documentation and the latest changes, refer to the source: fzqxdedafeiyu/dsh-approval-reason-dock. The plugin is third-party code that runs on your machine once installed; inclusion does not imply endorsement — please review the source before installing.
DSH Plugin FAQ
