NousResearch/hermes-agent · error · ValueError
Cron workdir is not a directory: {resolved}
Error message
Cron workdir is not a directory: {resolved} What it means
Error "Cron workdir is not a directory: {resolved}" thrown in NousResearch/hermes-agent.
Source
Thrown at cron/jobs.py:1427
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 later
swap of the global default is detected at fire time (#44585).
Returns the resolved model string, or ``None`` if config is missing/empty
or resolution fails (fail-open — caller treats ``None`` as "no snapshot").
"""
try:
from hermes_cli.config import _expand_env_vars, read_user_config_raw
View on GitHub (pinned to c896c09c42)
Solutions
- Point the job workdir at a directory, not a file.
When it happens
Trigger: Thrown at cron/jobs.py:1427 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/200d3c59b53aedd5.
Report an issue: GitHub.