AgentFixboard

Scheduled cron jobs fail with "No module named 'ruamel'" before they start

Every scheduled cron job fails before it runs. The scheduler reports Restart-safe cron worker dispatch failed: cron external worker exited before ownership acknowledgement (exit 1) and worker stderr ends in ModuleNotFoundError: No module named 'ruamel'.

From GitHub

NousResearch/hermes-agent

Difficulty
Easy
Time
~5 min
Steps
2
Fixed in
v0.21.6
Last checked

Verified fix: PR #126344 merged on . Fixed in v0.21.6 (first published release whose tag contains the merge commit). Last checked .

Symptom

Every scheduled cron job fails before it runs. The scheduler reports Restart-safe cron worker dispatch failed: cron external worker exited before ownership acknowledgement (exit 1) and worker stderr ends in ModuleNotFoundError: No module named 'ruamel'.

Evidence what you'll see

  • The traceback in the report is File ".../hermes-agent/hermes_yaml.py", line 10, in <module> then from ruamel.yaml import YAML then ModuleNotFoundError: No module named 'ruamel'.
  • The run is stored FAILED (last_status: failed) and the job never executes.
  • The issue's direct probe is PYTHONPATH="$HERMES_HOME/hermes-agent" "$STORE" -m cron.scheduler --help, which raises that ModuleNotFoundError.

Why it happens

The restart-safe worker is spawned as sys.executable -m cron.scheduler with a sanitized environment. On a self-managed install that interpreter is the store Python, which owns no third-party packages, and the sanitizer also drops the committed generation's site-packages. Importing cron.jobs then loads hermes_yaml → ruamel before the worker can write its ownership acknowledgement. Pull request 126344 pins the committed generation on the worker PYTHONPATH and runs pm.environments.activate_dependencies at the top of cron/__init__.py so that boot happens before cron.jobs.

Affected versions

Linux x86_64, self-managed shell-installer install (not wheel, pipx, or Nix). Hermes main at 0b724b178. Store Python 3.14.7. Dependency generation under $HERMES_HOME/installs/<id>/environments/<hash>/venv.

Fix steps

0 of 2 done

Your check marks stay in this browser only.

How to check it worked

  • A restart-safe cron job on a self-managed install publishes its ownership acknowledgement and finishes, instead of exiting 1 with ModuleNotFoundError: No module named 'ruamel'.

If it still fails

  • Tag v2026.9.24 does not contain pull request 126344. Stay on v0.21.6 or later.
  • Pull request 126344 says a damaged committed generation now exits before the acknowledgement, and the gateway reports that dispatch failure with the worker stderr, instead of running on an unleased path.

Sources and credit

Summarized in our own words from these public reports. Credit goes to their authors.

Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change

Hit an error we don't cover? Submit it