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>thenfrom ruamel.yaml import YAMLthenModuleNotFoundError: 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 thatModuleNotFoundError.
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.24does not contain pull request 126344. Stay onv0.21.6or 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