dsh-quit-idle-fix
IdentifiedClears four kinds of idle-only system notices (approval policy, working directory, plan mode, plugin changes) that DeepSeek Harness counts as active work, so quitting with no running tasks no longer w
dsh-quit-idle-fix
Stop the DeepSeek Harness desktop app from warning that running tasks will be interrupted when the only thing left in the idle inbox is a system notice.
The false alarm
The desktop quit check in @deepseek-ai/dsh-desktop-host counts any pending
next-step inbox message as active work:
agent.status === "running" ||
agent.inbox.nextTurn.length > 0 ||
agent.inbox.nextStep.length > 0
But several host features queue purely informational messages with
agent.inject(), which does not wake an idle agent. When the approval
policy, working directory, plan mode, or a Cordis plugin changes while a
conversation is idle, the notice waits in next-step forever. The quit check
then sees a pending message and warns about interrupted work even though no
turn and no job is running.
This is an interaction bug in the harness itself (the official
dsh-desktop-host predicate plus the official notice producers), not a
conflict caused by another installed plugin.
What this plugin does
While an agent is idle, it consumes next-step messages whose
source.kind is one of:
user-approval— approval policy changedworking-directory— working directory changed or recoveredcordis-host-runner— plugin add/remove/run resultplan-mode— plan mode switched
The approval policy and working directory are already stated in the runtime context, and plan mode is reflected in the prompt. Cordis plugin state can be inspected again with the plugin tools. Running agents are never touched, so a notice queued mid-turn still reaches the next step. If a user turn is already queued, the sweep backs off and lets that turn consume the notices.
It checks every 500 ms, does an immediate sweep on load, and keeps no state.
Agents with a queued next-turn user message are skipped.
Install
From npm (recommended once published):
dsh plugin --profile desktop add dsh-quit-idle-fix
From GitHub:
dsh plugin --profile desktop add github:shuaichewang/dsh-quit-idle-fix
Or install it from the plugin marketplace. Restart the desktop app if the change does not take effect immediately.
Uninstall
dsh plugin --profile desktop remove dsh-quit-idle-fix
Restart the app afterwards.
Verify
node test.mjs
# ok: idle notices removed, running agent untouched, timer disposed
Then make sure no conversation is running and no background job is active, and quit the desktop app. The interrupt warning should no longer appear. If a real job or turn is running, the warning still appears — that is intended.
Scope and limitations
- Desktop only. The web profile has no quit-confirmation dialog.
- Only the four notice kinds above are cleared. A future feature (or a third-party plugin) that injects a different kind while idle can still trigger the false alarm; open an issue if that happens.
- It does not touch
next-turn, real user messages, running agents, jobs, or scheduled tasks. - It reads the in-memory agent list and inbox only. No network, no file access, no credentials.
Upstream fix
The cleaner fix belongs in dsh-desktop-host: do not count notice-shaped
next-step messages as active work, or avoid leaving non-waking notices in the
inbox. This plugin is a workaround that survives app signature checks because
it installs as a profile bundle instead of modifying app.asar.
中文说明
DeepSeek Harness 桌面端退出前会把任何待处理的 next-step 消息都当成“有任务”。
但切换审批策略、工作目录、计划模式或增删插件时,官方功能用 agent.inject()
投递的只是提示消息,并不会唤醒空闲会话,于是提示永远留在队列里,退出时就会
误弹“当前正在运行的任务将会中断”。
这个插件只在 agent 空闲时清掉上述四类提示;正在运行的会话完全不受影响。 真实任务、后台作业和已排程提醒仍会正常触发退出警告。
安装:
dsh plugin --profile desktop add dsh-quit-idle-fix
卸载:
dsh plugin --profile desktop remove dsh-quit-idle-fix
License
MIT. Not affiliated with DeepSeek.
Comments
Loading…
Similar plugins
by gorban
DeepSeek Harness (dsh) plugin: stop a running background job from the session-header job list, behind a confirmation dialog.
★ 1
↓ 276/wk
MIT
TypeScript
Sep 20, 2026
dsh plugin --profile web add @gorban/dsh-job-stopby niubi6668889595
Scheduled idle-gated auto-update for DeepSeek Harness: DSH itself + installed plugins. Four schedule modes, bidirectional whitelist, web panel.
★ 1
MIT
JavaScript
Oct 26, 2026
dsh plugin --profile web add dsh-autoupdaterby liaoyuqing
Runs a chosen power action (shutdown / restart / hibernate / sleep / lock / logoff) once every Agent session and background job has gone idle: the plugin samples in-process sessions once per second, c
★ 0
MIT
JavaScript
Oct 26, 2026
dsh plugin --profile web add dsh-shutdown-idleby xchannel1987
Browser notification plugin for DeepSeek Harness - system toasts when a task finishes, a run errors, or your input is needed (question / approval / plan review), click to open the session, per-type to
★ 1
↓ 298/wk
MIT
JavaScript
Oct 22, 2026
dsh plugin --profile web add dsh-notify-xcby Eason-22
DeepSeek Harness plugin: restart without losing work, with an idle-aware graceful restart and automatic session resume after the host comes back. Built-in restart supports the Windows desktop app only
★ 2
MIT
JavaScript
Nov 11, 2026
dsh plugin --profile web add dsh-autorestartby FoyonaCZY
Quality-of-life plugins for DeepSeek Harness: workspace rewind, desktop notifications, auto-format, live git context, secret redaction, and a done-means-green verify gate.
★ 0
MIT
JavaScript
Sep 2, 2026
dsh plugin --profile web add dsh-kit