DSH schedule reminders: tools, presets, time zones and cron
DeepSeek Harness Schedule is built into the released Web profile; it is no longer an experimental bundle you must enable. What decides whether an agent can use it is the preset: standard, cordis, and ptc expose four schedule tools plus clock context, while minimal exposes neither and delegated subagents are denied. Frequencies and time zones then decide whether the reminder fires when you expect.
DeepSeek Harness: Tools and the preset matrix
Schedule capability is declared per preset, not as one global switch. Compare:(source)
| Preset | Four schedule tools | Clock context |
|---|---|---|
standard | Yes | Yes |
cordis | Yes | Yes |
ptc | Yes | Yes |
minimal | No | No |
| Delegated subagent | Denied | Not visible |
The four tools:
schedule_create— create a reminder with frequency, time zone, and instruction. Expected: a new task appears on the automation page.schedule_list— list active reminders. Expected: delivered one-shots are not shown as active.schedule_update— edit name, instruction, or timing in place while keeping the task ID and saved delivery records. Expected: the ID does not change.schedule_delete— remove the task and its saved delivery records. Expected: the original conversation is untouched.
If the model says it has no scheduling tools, check the preset before reinstalling anything.
DeepSeek Harness: Six frequency forms
The official forms differ mainly in time-zone handling and what happens to a missed run. They are:(source)
- One-shot delay — a positive integer number of seconds. Expected: delivered once, then marked not running; it does not become recurring.
- Absolute date-time — a specific date and time. Expected: a nonexistent local time is rejected; overlaps choose the earlier instant.
- Fixed interval — at least one minute. Expected: aligned to creation time until the interval changes, then to the save time.
- Daily local time — requires an IANA zone, for example
Asia/Shanghai 23:00. Expected: nonexistent local times are skipped; overlaps choose the earlier time. - Weekly local time — requires an IANA zone and an ISO weekday from Monday 1 to Sunday 7. Expected: fires on the saved weekday and local time.
- Five-field cron — requires an explicit IANA zone. Expected: stored in normalized form; useful for “weekdays at 09:00”.
Natural-language requests use the browser’s time zone. If the reminder must fire consistently across devices or regions, state the zone explicitly.
DeepSeek Harness: Concrete requests to use
Phrase requests in a form the official parser supports; it removes a large class of model guesses. Examples:(source)
- One-shot — “Remind me to check the build in 3 minutes.” Expected: created as a positive-second delay.
- Absolute — “Remind me at 2026-10-22 09:00 Asia/Shanghai to cut the release.” Expected: nonexistent times rejected, overlaps choose the earlier instant.
- Interval — “Remind me every 2 hours to check the queue.” Expected: interval is at least one minute; changing it realigns from the save time.
- Daily — “Remind me every day at 23:00 Asia/Shanghai to check the weather.” Expected: saved daily rule with an explicit zone.
- Weekly — “Remind me every Monday at 09:00 Asia/Shanghai about the weekly meeting.” Expected: ISO weekday 1.
- Cron — “Remind me at 09:00 Asia/Shanghai on weekdays about standup.” Expected: five fields plus an explicit zone.
For daylight-saving regions, test the two edge cases: a local time that does not exist and an overlap that occurs twice.
DeepSeek Harness: Using the automation task page
The automation page is a cross-session reminder view, not a panel owned by one conversation. It offers four operations:(source)
- Cross-session view — open from the sidebar without activating a conversation. Expected: active and not-running tasks appear together.
- Search and filter — search by name, instruction, or internal session ID; filter all, active, or not running. Expected: find a task quickly.
- Delivery records — open Rules, then Task run records. Expected: the latest 20 load first, with older pages on demand.
- Edit or delete — active tasks can change name, instruction, and timing; deleting removes saved records too. Expected: the original conversation survives a delete.
A few details are easy to misread: a session row shows a clock only when it has an active task, is idle, and is not archived; delivery records are ordered by save time, not wall-clock time; they describe delivery, not model execution.
DeepSeek Harness: Delivery semantics and retention
A reminder guarantees only that the message entered the conversation inbox; it does not guarantee model completion or exactly-once delivery. Keep these boundaries:(source)
- No host, no scheduling — stopping the process pauses delivery; restarting catches overdue one-shots or the latest missed repeat.
- Repeating tasks may share a message — reminders due in the same session can be combined.
- Records are receipts, not execution history — a crash after inbox persistence can duplicate a delivery.
- Retention is bounded —
deliveryHistoryDayssets the window anddeliveryHistoryRecordssets the maximum; the latest receipt is always kept.
The official docs also say there is no pause and no new-session-per-run mode. Editing name, instruction, and timing is allowed, but this is not a cross-session workflow handoff.
DeepSeek Harness: Three ways to create a reminder
Chat creation, page creation, and in-place updates write the same task data but fit different situations. Compare:(source)
- Ask the model in chat — natural when a reminder occurs to you. Expected:
schedule_createruns and the task appears immediately. - Use “New” on the automation page — opens a session with the request prefilled. Expected: easier when you do not want to phrase the frequency manually.
- Update an existing task —
schedule_updatekeeps the ID and delivery records. Expected: safe for adjusting a reminder that already works.
Reminders that exist only in an old session log are not scheduled automatically; recreate them. Deleted task records are not rebuilt.
Migrating from the old bundle
Older articles that say “enable the experimental bundle first” are out of date: the released Web profile includes Schedule. Migration:
- Check the version — run
dsh -Vand confirm the Web profile includes Schedule. Expected: the automation page opens and the model sees four tools. - Remove duplicate declarations — if an old patch still inserts the experimental schedule bundle, delete that row. Expected: no duplicate service or tool registration.
- Recreate needed reminders — old tasks do not automatically move into the new structure. Expected: recreate them and check time zones.
After migration, verify a daily reminder for time-zone behavior and a short one-shot for delivery.
DeepSeek Harness FAQ
Why does “daily at 23:00” skip a day? A nonexistent local time is skipped and an overlap chooses the earlier instant. This is common around daylight-saving changes; an explicit zone makes the behavior predictable.
Can a subagent create reminders? No. The delegation rows for the three presets deny the four tools, and a call that reaches the tool layer is rejected. The main agent should create reminders.
Does deleting a reminder delete the conversation? No. It removes the task and its saved delivery records; the conversation remains, and already queued messages are not withdrawn.
The short version: preset decides whether Schedule works, time zone decides whether it fires on time, and the delivery boundary decides what “success” means.
FAQ
DeepSeek Harness: no. The released Web profile includes the host Schedule service and the automation task page. Configure a model provider, then ask the model to call schedule_create. The minimal preset declares neither the four tools nor the clock context.
DeepSeek Harness: check the agent preset first. standard, cordis, and ptc expose schedule_create, schedule_list, schedule_update, and schedule_delete. minimal exposes none. Delegated subagents are denied these tools even if a call reaches the tool layer.
DeepSeek Harness: a positive integer number of seconds for a one-shot delay, an absolute date-time, a fixed interval of at least one minute, a daily local time with an IANA zone, a weekly local time with an IANA zone and ISO weekday, and a five-field cron expression with an explicit IANA zone. A delivered one-shot does not become recurring.
DeepSeek Harness: no. Scheduling stops when the host stops and resumes on the next start. On restart, overdue one-shot reminders are delivered, or the most recent missed run of each repeating reminder. Tasks persist on disk.
DeepSeek Harness: no. A saved delivery record only confirms that the message reached the conversation inbox. It is not execution history or an external notification channel, and exactly-once delivery is not guaranteed.
Related Terms
- schedule_create
- schedule_create is the DeepSeek Harness reminder creation tool exposed by the standard, cordis, and ptc presets. It accepts one-shot, absolute, fixed-interval, daily, weekly, and five-field cron rules.— DeepSeek Harness docs - Schedule reminders
- automation task page
- The automation task page is the DeepSeek Harness Web UI view for reminders across sessions. It searches by name, instruction, or session ID, filters by state, and shows the latest 20 delivery records per task.— DeepSeek Harness docs - Schedule reminders
- IANA time zone
- An IANA time zone is an identifier such as Asia/Shanghai. Daily, weekly, and cron reminders in DeepSeek Harness require an explicit zone so local times are not ambiguous.— DeepSeek Harness docs - Schedule reminders
- delivery record
- A delivery record is a saved receipt that a reminder message was persisted to the conversation inbox. It is not proof of model completion and is bounded by deliveryHistoryDays and deliveryHistoryRecords.— DeepSeek Harness docs - Schedule reminders
Sources
- DeepSeek Harness docs - Schedule reminders· deepseek-ai
- DeepSeek Harness reference - Schedule· deepseek-ai