NousResearch/hermes-agent · error · RuntimeError

{_drift_marker} Skipped to prevent unintended spend: global

Error message

{_drift_marker} Skipped to prevent unintended spend: global inference config drifted since this job was created ({_changes}), and this job is unpinned. No inference call was made. {_remediation} This alert is sent once; the job stays skipped until the config is pinned or restored. See #44585.

What it means

Error "{_drift_marker} Skipped to prevent unintended spend: global inference config drifted since this job was created ({_changes}), and this job is unpinned. No inference call was made. {_remediation} This alert is sent once; the job stays skipped until the config is pinned or restored. See #44585." thrown in NousResearch/hermes-agent.

Source

Thrown at cron/scheduler.py:4314

                    _changes,
                    _remediation,
                )
                # Alert-once (#73506 shape): persist the drift_alerted bit so
                # only the FIRST drifted tick delivers; run_one_job suppresses
                # delivery on the silent marker. mark_job_run clears the bit
                # when a run succeeds (drift healed), re-arming the alert.
                _drift_already_alerted = False
                try:
                    from cron.jobs import mark_drift_alerted

                    _drift_already_alerted = mark_drift_alerted(job_id)
                except Exception:
                    pass  # fail open: better a duplicate alert than none
                _drift_marker = (
                    DRIFT_SKIP_SILENT_MARKER if _drift_already_alerted
                    else DRIFT_SKIP_MARKER
                )
                raise RuntimeError(
                    f"{_drift_marker} Skipped to prevent unintended spend: global "
                    f"inference config drifted since this job was created "
                    f"({_changes}), and this job is unpinned. No inference call "
                    f"was made. {_remediation} "
                    f"This alert is sent once; the job stays skipped until the "
                    f"config is pinned or restored. See #44585."
                )

        fallback_model = get_fallback_chain(_cfg) or None
        credential_pool = None
        runtime_provider = str(runtime.get("provider") or "").strip().lower()
        if runtime_provider:
            try:
                from agent.credential_pool import load_pool
                pool = load_pool(runtime_provider)
                if pool.has_credentials():
                    credential_pool = pool
                    logger.info(

View on GitHub (pinned to c896c09c42)

Solutions

  1. Pin the job's inference config, or restore the global config the job was created with, then resume the job.
  2. Review the drift details in the alert before pinning.

When it happens

Trigger: Thrown at cron/scheduler.py:4314 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/842e01cf11a8f04a. Report an issue: GitHub.