dsh-approval-diff
A DeepSeek Harness (DSH)
plugin: install it into a profile alongside your own plugins.
See what you approve. When the model asks permission to change a file, the
native card shows the tool arguments: old_string and new_string as raw
text, no file context, no line numbers. This plugin replaces that ask with a
real diff review: red and green lines side by side, word-level highlights
inside changed lines, surrounding file content with true line numbers, and
exactly two buttons.
Plugin value proposition
| alternative | falls short |
|---|---|
| the native approval card | raw tool arguments; you reconstruct the diff in your head, every ask |
| reading the file yourself | you become the diff engine, and the model already read it once |
| auto-approve and hope | no review at all |
What you get
- True line diffs for
edit: LCS line matching plus word-level highlights;
unchanged lines inside an edit's operands render as context, not as changes - Split or Unified view (GitHub style toggle, choice remembered); unified
groups each change run as all removed lines, then all added - New files (
write) render one-sided, all green; deletions (rmand
friends) render the full current file in red before you decide - Consecutive edits to the same file merge into one diff and one decision
- Two buttons, Reject and Allow, scoped to exactly what the card shows
- Requests that cannot succeed are never shown to you
- Minimize collapses the card without deciding; the close button hands that
request back to the native card
How to install
Requires a DeepSeek Harness checkout and a profile (here web):
# from the harness checkout
pnpm dsh plugin --profile web add /path/to/dsh-approval-diff
# verify the profile still composes
pnpm dsh --profile web --dump-config
Restart the harness after installing: the host half loads at boot. The
client half hot-reloads once installed.
Tests
node test/client.test.mjs
47 checks: host route contract, chain selection, diff rendering (split and
unified), context dedup, per-file scoping, run merging and queued delivery,
doom detection, dismissal and fallthrough.
Limitations
- File-changing approvals only (
edit,write, deletion-onlybash).
Everything else is the native card's job. - Deletion review reads targets from disk; glob targets render as the
pattern. - One approval at a time, matching the native card's behavior.