NousResearch/hermes-agent · error · ValueError
Cron workdir must be an absolute path (got {raw!r}). Cron jo
Error message
Cron workdir must be an absolute path (got {raw!r}). Cron jobs run detached from any shell cwd, so relative paths are ambiguous. What it means
Error "Cron workdir must be an absolute path (got {raw!r}). Cron jobs run detached from any shell cwd, so relative paths are ambiguous." thrown in NousResearch/hermes-agent.
Source
Thrown at cron/jobs.py:1419
Rules:
- Empty / None → None (feature off, preserves old behaviour).
- ``~`` is expanded. Relative paths are rejected — cron jobs run detached
from any shell cwd, so relative paths have no stable meaning.
- The path must exist and be a directory at create/update time. We do
NOT re-check at run time (a user might briefly unmount the dir; the
scheduler will just fall back to old behaviour with a logged warning).
Returns the absolute path string, or None when disabled.
Raises ValueError on invalid input.
"""
if workdir is None:
return None
raw = str(workdir).strip()
if not raw:
return None
expanded = Path(raw).expanduser()
if not expanded.is_absolute():
raise ValueError(
f"Cron workdir must be an absolute path (got {raw!r}). "
f"Cron jobs run detached from any shell cwd, so relative paths are ambiguous."
)
resolved = expanded.resolve()
if not resolved.exists():
raise ValueError(f"Cron workdir does not exist: {resolved}")
if not resolved.is_dir():
raise ValueError(f"Cron workdir is not a directory: {resolved}")
return str(resolved)
def _resolve_default_model_snapshot() -> Optional[str]:
"""Resolve the global default model the same way the cron ticker does.
Mirrors the unpinned-model resolution in ``cron/scheduler.py`` ``run_job``:
read ``config.yaml`` ``model.default`` (or the ``model`` alias / bare string
form), applying the managed-scope overlay and env expansion. Used by
``create_job`` to snapshot the default model for unpinned jobs so a laterView on GitHub (pinned to c896c09c42)
Solutions
- Set the cron job workdir to an absolute path.
When it happens
Trigger: Thrown at cron/jobs.py:1419 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/ba9e7bfdf30485dd.
Report an issue: GitHub.