NousResearch/hermes-agent · error · AmbiguousJobReference
Job name '{ref}' is ambiguous — matches {len(matches)} jobs:
Error message
Job name '{ref}' is ambiguous — matches {len(matches)} jobs: {ids}. Use the job ID instead. What it means
Error "Job name '{ref}' is ambiguous — matches {len(matches)} jobs: {ids}. Use the job ID instead." thrown in NousResearch/hermes-agent.
Source
Thrown at cron/jobs.py:1836
"""Resolve a job reference (ID or name) to a job record.
- Exact ID match wins (works even if a different job's name equals this ID).
- Otherwise, case-insensitive name match.
- If a name matches more than one job, raises AmbiguousJobReference so the
caller can surface the matching IDs rather than silently picking one.
"""
if not ref:
return None
jobs = load_jobs()
for job in jobs:
if job["id"] == ref:
return _normalize_job_record(job)
ref_lower = ref.lower()
name_matches = [j for j in jobs if (j.get("name") or "").lower() == ref_lower]
if not name_matches:
return None
if len(name_matches) > 1:
raise AmbiguousJobReference(
ref, [_normalize_job_record(j) for j in name_matches]
)
return _normalize_job_record(name_matches[0])
def list_jobs(include_disabled: bool = False) -> List[Dict[str, Any]]:
"""List all jobs, optionally including disabled ones."""
jobs = [_normalize_job_record(j) for j in load_jobs()]
if not include_disabled:
jobs = [j for j in jobs if j.get("enabled", True)]
try:
from cron.executions import latest_executions
latest = latest_executions([job.get("id", "") for job in jobs])
except Exception:
latest = {}
for job in jobs:
job["latest_execution"] = latest.get(job.get("id", ""))View on GitHub (pinned to c896c09c42)
Solutions
- Use the job ID instead of the ambiguous name.
- Rename jobs so names are unique.
When it happens
Trigger: Thrown at cron/jobs.py:1836 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/fa0ac758eea90ee4.
Report an issue: GitHub.