NousResearch/hermes-agent · error · ValueError
Invalid timestamp '{schedule}': {e}
Error message
Invalid timestamp '{schedule}': {e} What it means
Error "Invalid timestamp '{schedule}': {e}" thrown in NousResearch/hermes-agent.
Source
Thrown at cron/jobs.py:689
# Anchor to the CONFIGURED Hermes timezone, not the server's local
# timezone. The due-check (`get_due_jobs`) compares `next_run_at`
# against `hermes_time.now()`, which uses the configured zone. If a
# naive "20:07" were interpreted as server-local (e.g. UTC) while
# now() runs in Asia/Kolkata, the stored instant would land hours
# off from the user's wall-clock intent — far enough that one-shots
# never become due and recurring jobs fire at the wrong time. Using
# the configured zone makes "20:07" mean 20:07 on the same clock the
# scheduler checks against (#51021).
if dt.tzinfo is None:
hermes_tz = _hermes_now().tzinfo
dt = dt.replace(tzinfo=hermes_tz)
return {
"kind": "once",
"run_at": dt.isoformat(),
"display": f"once at {dt.strftime('%Y-%m-%d %H:%M')}"
}
except ValueError as e:
raise ValueError(f"Invalid timestamp '{schedule}': {e}")
# Duration like "30m", "2h", "1d" → one-shot from now
try:
minutes = parse_duration(schedule)
run_at = _hermes_now() + timedelta(minutes=minutes)
return {
"kind": "once",
"run_at": run_at.isoformat(),
"display": f"once in {original}"
}
except ValueError:
pass
raise ValueError(
f"Invalid schedule '{original}'. Use:\n"
f" - Duration: '30m', '2h', '1d' (one-shot)\n"
f" - Interval: 'every 30m', 'every 2h' (recurring)\n"
f" - Cron: '0 9 * * *' (cron expression)\n"View on GitHub (pinned to c896c09c42)
Solutions
- Use an ISO timestamp like '2026-02-03T14:00:00' for one-shot schedules.
- Check the timestamp is valid and in the future.
When it happens
Trigger: Thrown at cron/jobs.py:689 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14).
Data as JSON: /api/errors/050a47bebb0dca71.
Report an issue: GitHub.