30m and in 30m are different jobs.
One keeps returning. The other finishes after a single occurrence. Choose the behavior before you copy a schedule into Hermes Agent.
The distinction
A duration is not automatically a delay.
In Hermes 0.22.2, the bare schedule 30m is a recurring interval. So is every 30m. The explicit prefix in in 30m makes it a one-shot. These examples start at noon UTC and assume the task takes zero minutes.
| Schedule input | Kind | Projected starts |
|---|---|---|
30m | Interval | 12:30, 13:00, 13:30… |
every 30m | Interval | 12:30, 13:00, 13:30… |
in 30m | Once | 12:30 only |
For a single follow-up, check that the result says once. For periodic work, inspect several occurrences; matching the first time is not enough to establish that the schedule matches your intention.
Rehearse these three inputs →A date is a time
“On Friday” does not create an all-day window.
The input 2026-10-16 is parsed as midnight on that date in the configured Hermes timezone. It does not mean “whenever the machine wakes up that day.” An explicit timestamp such as 2026-10-16T09:00:00 selects a morning instant in that same zone. Adding an offset, for example +01:00, specifies an instant directly.
Check the timestamp, then the machine. In the pinned native logic, a one-shot has a 120-second grace window. A preview based long after the stored instant has no next run. That is separate from whether a real gateway is awake, connected and able to deliver a message.
The calendar normalizes instants into the selected zone. Open an occurrence to inspect both the raw native return value and its UTC instant. Use this when an explicit input offset differs from the agent’s configured zone.
Compare midnight with an explicit morning →Copy the input
A readable label may not be executable syntax.
Hermes can describe a result as once in 30m or once at 2026-10-16 09:00. Those display labels are not accepted schedule inputs in the pinned parser. MinuteField’s copy action preserves your original executable string; it does not copy the explanatory label.
Natural phrases are supported only within the native grammar. weekdays at 9am is accepted, while tomorrow morning is not. There is no language model here to interpret an unsupported phrase. An error is preferable to a plausible but invented time.
Changing the rehearsal’s starting instant asks “what if this were created then?” It does not add a future start_at field to an actual Hermes task. Comparing several schedules here also does not turn them into a supported schedule array for one job.
Evidence
Checked against the pinned 0.22.2 parser and next-run functions. The distinction matters in real authoring: see the requests for future-start recurring reminders, date-only reminders and display-string round trips. Reports describe particular versions and incidents; they do not prove every current installation has the same problem.