Summary
The constraints_path configuration option in config.yaml is a dead config — the loading logic is never implemented, so user-specified constraint files are completely ignored.
Evidence
1. Config option exists
# ~/.hermes/config.yaml (line 605)
constraints_path: ~/.hermes/constraints.yaml
2. No code reads this config
# Search entire codebase (excluding venv/tests)
$ find ~/.hermes/hermes-agent -name "*.py" -type f ! -path "*/venv/*" ! -path "*/__pycache__/*" ! -path "*/tests/*" -exec grep -l "constraints_path" {} \; 2>/dev/null
# Result: EMPTY — no file references constraints_path
3. System prompt builder ignores constraints
In run_agent.py:_build_system_prompt() (lines 4807-5000), the layers are:
- Agent identity (SOUL.md)
- User/gateway system prompt
- Persistent memory
- Skills guidance
- Context files (AGENTS.md, .cursorrules)
- Current date/time
- Platform hints
Constraints file is never mentioned anywhere in the prompt assembly.
4. Subagents also skip constraints
# delegate_tool.py:1046
skip_context_files=True, # All context files including constraints are skipped
Impact
- Users write constraint files expecting agent behavior customization
- Files are silently ignored — no warning, no error, no documentation note
- Wasted user effort configuring something that doesn't work
- Can cause confusion when agent behavior doesn't match expected constraints
Expected Behavior
Either:
- Implement loading: Read
constraints_path and inject content into system prompt
- Remove config option: Delete the dead config line to avoid confusion
- Document limitation: Add clear warning that constraints_path is not yet implemented
Environment
- Hermes Agent: v0.12.0 (2026.4.30)
- Python: 3.11.15
- Platform: Ubuntu (Linux)
Additional Context
This was discovered during deep investigation into why constraint files weren't being followed. The SOUL.md and memory systems work correctly, but constraints.yaml is completely non-functional despite having a config entry.
Related: Subagents (delegate_task) intentionally skip all context files (skip_context_files=True), so even if constraints were loaded for main agent, children wouldn't inherit them automatically.
Summary
The
constraints_pathconfiguration option inconfig.yamlis a dead config — the loading logic is never implemented, so user-specified constraint files are completely ignored.Evidence
1. Config option exists
2. No code reads this config
3. System prompt builder ignores constraints
In
run_agent.py:_build_system_prompt()(lines 4807-5000), the layers are:Constraints file is never mentioned anywhere in the prompt assembly.
4. Subagents also skip constraints
Impact
Expected Behavior
Either:
constraints_pathand inject content into system promptEnvironment
Additional Context
This was discovered during deep investigation into why constraint files weren't being followed. The SOUL.md and memory systems work correctly, but constraints.yaml is completely non-functional despite having a config entry.
Related: Subagents (
delegate_task) intentionally skip all context files (skip_context_files=True), so even if constraints were loaded for main agent, children wouldn't inherit them automatically.