DeepSeek Harness 0.2.0 RC2 timed questions: continue safely without treating silence as consent
Quick answer
DeepSeek Harness dsh-v0.2.0-rc.2, released on September 29, 2026, adds an experimental timed mode for ask_user_question. The shipped presets still use blocking behavior. When an operator explicitly sets the tool-ask-user plugin row to mode: timed, a finite wait can end with { pending: true, callId } while the question remains answerable. A later reply arrives as a new user message and settles the recorded question.
The crucial rule is simple: pending is not approval, refusal, or an empty answer. Timed mode is appropriate only when the agent can continue independent, reversible work. Use timeout: -1 for permissions, destructive actions, purchases, external messages, and any decision whose absence must stop execution.
This is a release candidate and the feature requires manual configuration. Treat it as a canary, not a silent fleet-wide default.
Who this is for
This guide is for teams running DeepSeek Harness agents that wait for human context, preferences, or decisions. It suits unattended research and long workflows where an unanswered low-risk question should not freeze unrelated work.
What changed in RC2
At source commit 639ed015397290b3745d163aafe02ffee4aa3f84, the timed tool exposes a bounded foreground wait. The default is 120 seconds, a positive per-call timeout can override it, and -1 blocks indefinitely. The Web client can claim the wait while the user is editing or chooses “Take time”; after the last client claim ends, the host resumes the original deadline.
When the deadline expires, only the foreground wait is released. The turn is not cancelled, and the question moves from open to continued. It remains answerable with no new deadline. When the late reply is admitted as a durable user/message, the projection moves the question to settled and associates the final answer batch with the original callId.
That state machine solves a real operational gap, but it does not create permission semantics. The agent and the workflow owner must supply those.
Choose the right wait mode
| Question type | Safe mode | Work allowed after timeout |
|---|---|---|
| Formatting preference or optional context | Finite timed wait | Continue with a documented default |
| Missing fact that can be checked independently | Finite timed wait | Research without changing external state |
| Scope choice that changes only a draft | Finite timed wait | Prepare alternatives; do not publish |
| Delete, move, overwrite, purchase, deploy, or send | timeout: -1 |
None until explicit approval |
| Secret, legal identity, MFA, or account ownership | timeout: -1 |
None; keep the sensitive boundary closed |
If a late answer contradicts work already performed, do not silently rewrite history. Record the old assumption, the new answer, affected artifacts, and the reconciliation action.
Configure a bounded canary
Timed mode is a plugin-row setting, not a top-level patch. The official package README shows this shape:
- id: tool-ask-user
name: '@deepseek-ai/dsh-tool-ask-user'
config:
mode: timed
timeout: 120
Start with one non-production preset and a deliberately harmless question. Keep the blocking preset available for rollback. Confirm that the model-visible tool schema contains timeout; the session projection uses the recorded schema—not merely call arguments—to distinguish timed calls from legacy ones.
A seven-case rollout gate
- Answer in time. Submit one option before the deadline and verify a normal answer batch, no
pending, and one settled transcript row. - No active client. Let the foreground deadline expire. Verify
{ pending: true, callId }, continued independent work, and a question that is still answerable. - Late answer. Reply after continuation. Verify a new user message with the same
callId, one settlement, and no duplicate side effect. - Take time and reconnect. Claim the wait, disconnect, and reconnect. Verify the remaining duration resumes from the host deadline rather than restarting a full timer.
- Cancel a queued reply. Cancel before admission. The question must remain answerable; a queued click is not a durable answer.
- Restart after continuation. Reopen the session and answer. Verify the late reply opens a new turn and the transcript preserves the final answer.
- Authority denial. Ask for a destructive action with a finite timeout. Verify policy prevents execution after
pending, then repeat withtimeout: -1and require explicit approval.
For each case, retain sessionId, callId, tool schema version, preset hash, timeout, client claim events, result, admitted reply, affected artifacts, and rollback decision. The related session persistence guide explains why durable event evidence matters after restart; the headless resume checklist covers recovery across non-Web clients.
Late-reply reconciliation template
call_id:
question_class: preference | fact | permission
foreground_result: answered | pending | failed
assumption_used_after_pending:
actions_taken:
late_answer:
conflict: none | draft-only | external-state
reconciliation:
reviewer:
Promote timed mode only when every pending continuation has a reversible default and every late answer produces a reviewable receipt.
Common mistakes
- Describing RC2 as stable GA instead of a release candidate.
- Enabling timed mode across all presets before proving the recorded schema and transcript behavior.
- Treating
pendingas skip, refusal, or permission. - Resetting the timeout whenever a browser reconnects.
- Letting a late answer trigger a second external action without an idempotency key.
- Assuming a visible answer card proves the reply was admitted into the session log.
- Using a finite wait for deletion, deployment, payment, messaging, or credential decisions.
Make your Mac notch useful with SuperNotch—22 native tools for music, clipboard, focus, screenshots, system controls, and more.
FAQ
Is timed mode enabled by default?
No. The shipped presets retain legacy blocking behavior. Timed mode requires changing the tool-ask-user entry in the active preset or using the Agent Preset editor.
Does pending mean the user skipped the question?
No. It means the foreground wait ended. The question remains active and may be answered later; silence carries no authority.
What should use timeout: -1?
Any question that gates an irreversible, external, financial, security-sensitive, or identity-dependent action. The agent must wait for an explicit answer.
Can a late reply arrive after a restart?
The RC2 subsystem documentation says reopening the session resumes the root agent and a late reply enters a new turn. Validate that path in your own host and storage configuration before production use.
Is this a recommendation to upgrade production immediately?
No. RC2 is a prerelease. Follow the existing DeepSeek Harness install safety checklist, isolate the preset, run the seven cases, and retain a blocking-mode rollback.