
pitetow/dsh-notify-on-complete
40Last commit Aug 15, 2026
dsh-notify-on-complete DSH plugin
Get notified when a DeepSeek Harness run finishes, or when the model asks you a question or waits for approval. The plugin sends a system notification with the result type (completed, error, aborted, max-tokens) and supports configurable sound and selective blocking notifications. It works cross-platform with zero runtime dependencies, using native OS commands via child_process.spawn.
How to install the dsh-notify-on-complete DSH plugin
dsh plugin --profile web add link:/path/to/dsh-notify-on-completeCopying does not run this command. Review the repository and version before installing the dsh-notify-on-complete DSH plugin.
dsh-notify-on-complete DSH plugin data source
dsh-notify-on-complete DSH plugin snapshot date: Aug 16, 2026
discovered
What the dsh-notify-on-complete DSH plugin can do
- Zero runtime dependencies; notifications are sent via a detached child process (non-blocking, unaffected by harness exit).
- Cross-platform automatic selection: macOS osascript, Linux notify-send/kdialog, Windows PowerShell.
- System sound support: macOS Glass sound, Windows .NET SystemSounds, Linux canberra-gtk-play (fallback paplay); can be disabled with sound: false.
- In-session blocking notifications for model ask_user_question events and sandbox escalation/tool permission approval events.
- Only notifies for top-level sessions; subagent sessions are filtered out, producing one notification per CLI run.
- Configurable via cordis.patch.yml: enabled, title, sound, onBlocked, onQuestion, onApproval.
Where the dsh-notify-on-complete DSH plugin fits
- Run a long DSH task and get a desktop notification when it completes, so you can multitask without checking the terminal.
- Use headless mode to receive notifications for CLI runs, monitoring results without needing to watch the output.
- Monitor model interactions that require human approval or question answering, ensuring you don't miss critical prompts.
- Develop DSH plugins and use notifications to stay informed of run status during interactive sessions.
Who the dsh-notify-on-complete DSH plugin is for
- DSH users who want to receive desktop notifications when runs finish or when the model needs human input.
- Developers running automated evaluations or interactive sessions who need to multitask without constantly checking the terminal.
dsh-notify-on-complete DSH plugin limitations
- Requires Node.js ^22 and an installed DSH CLI; cannot be used standalone.
- Notification titles for early session events (e.g., a question right at session start) may lack the session title because it is generated asynchronously.
- On macOS, the terminal app must be granted notification permission in System Settings.
- Only notifies for top-level sessions; subagent sessions are ignored.
- Configuration for blocking notifications (onQuestion, onApproval) is overridden per row (no deep merge), so full config must be specified when overriding.
dsh-notify-on-complete DSH plugin: from the repository README
Quoted from the pitetow/dsh-notify-on-complete README, the upstream source of the dsh-notify-on-complete DSH plugin. Copyright remains with the original authors.
Send desktop notifications from [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`): get a system notification when a run finishes, and an immediate one when the model asks you a question (`ask_user_question`) or waits for approval (sandbox escalation / tool permission). The body reflects the result (completed / error / aborted / max-tokens). DeepSeek Harness(`dsh`)桌面通知插件:运行结束时向系统发送桌面通知;会话进行中模型提问(`ask_user_question`)或等待审批(沙箱提权 / 工具权限)时也会即时提醒你回来处理。正文按结果区分(成功 / 失败 / 中止 / 达到 token 上限)。 > Author: [Luozy](https://github.com/pitetow) · License: [MIT](LICENSE) · 中文文档:[README.zh.md](README.zh.md) - **Zero runtime dependencies**: no `dsh` internal packages, no `ctx.shell`. Notifications are fired via `child_process.spawn` as a detached child process — **non-blocking and unaffected by the harness exit path**. - **Cross-platform**: the notifier command is picked from `process.platform` (macOS `osascript` / Linux `notify-send` → `kdialog` / Windows PowerShell). Unsupported platforms are skipped at load with a warning, never throwing per-event. - **System sound**: macOS system sound (`sound name "Glass"`), Windows .NET `SystemSounds`, Linux `canberra-gtk-play` (falls
Read the full READMERepository license: MIT
dsh-notify-on-complete DSH plugin questions
Why don't I see any notifications after installation?
First, verify that the plugin is loaded by running `dsh --profile web --dump-config | grep notify-on-complete`. If it's not listed, re-run the install script or check the manual installation steps. Also ensure your terminal app has notification permission on macOS (System Settings → Notifications), and that `notify-send` is available on Linux. If you are using `dsh web`, restart the web process after installing.
I get two notifications per run — how do I fix that?
That's a double-mount: you likely have a manual mount entry in `cordis.patch.yml` in addition to the bundle auto-mount. Remove the manual `- id: notify-on-complete` line from the patch file. The one-liner install script cleans up duplicates automatically, but if you installed manually, edit `~/.dsh/profiles/web/cordis.patch.yml` and delete that row.
Can I disable the sound but keep the notification?
Yes, set `sound: false` in the plugin's config. In your profile's `cordis.patch.yml`, add or modify the `notify-on-complete` row: `- id: notify-on-complete name: dsh-notify-on-complete config: sound: false`. Restart `dsh web` or the next CLI run will pick up the change.
Does the plugin work on Windows?
Yes, it uses PowerShell's `WScript.Shell.Popup` to show a notification popup that auto-closes after 5 seconds, and plays a system sound via .NET `SystemSounds`. Make sure PowerShell is available on your system. No extra modules are needed.
How do I update the plugin to the latest version?
Re-run the install script with the `--force` flag: `curl -fsSL https://raw.githubusercontent.com/pitetow/dsh-notify-on-complete/main/scripts/install.sh | bash -s -- --force`. This will delete the old source directory, download the latest, and rebuild. Alternatively, manually go to `~/.dsh/plugins/dsh-notify-on-complete`, run `git pull && pnpm install && pnpm run build`, then re-add via `dsh plugin --profile web add link:.`.