Skip to content

v0.3.6 — Security: remove chmod 755 /root, relocate data to /opt/hermes-data

Latest

Choose a tag to compare

@TheAiSingularity TheAiSingularity released this 24 Apr 18:52
v0.3.6
6479c22

Security patch addressing a regression introduced in v0.3.2. Thanks to @ppritcha for both the field report (#4) and the fix (#5).

Security

v0.3.2 fixed issue #3 (Hermes binary unreachable under the sandbox user) in part by running chmod 755 /root in the Dockerfile. That change was too coarse — it opened not just /root/.hermes/ but the entire root home directory to any process running as sandbox, exposing:

  • /root/.hermes/config.yaml — inference provider API keys
  • /root/.ssh/ — SSH private keys (if present)
  • /root/.gnupg/ — GPG private keys (if present)
  • /root/.bash_history — command history, which may include secrets passed as arguments
  • /root/.local/ — pip-installed packages and scripts

v0.3.6 removes the chmod 755 /root entirely and instead relocates Hermes's runtime data to /opt/hermes-data, following the same pattern already used for the binary (/usr/local/bin/hermes) and venv (/opt/hermes-venv). /root stays at its default 700 permissions.

Changed

  • Dockerfilecp -a /root/.hermes /opt/hermes-data, chmod -R a+rX for read access, writable subdirs (memories, sessions, skills, cron, hooks, logs) via a+rwX. HERMES_HOME set to /opt/hermes-data.
  • All four OpenShell policiesread_write: /root/.hermes/opt/hermes-data.
  • openshell/hermesclaw-profile.yamlcontainerPath and HERMES_HOME updated.
  • docker-compose.ymlHERMES_HOME and named-volume mount paths updated.
  • configs/hermes.yaml.example — memory + skills paths updated.
  • Docs + test scripts — all references updated to match.

Upgrade

docker pull ghcr.io/theaisingularity/hermesclaw:v0.3.6
# or, if you ran the one-liner:
curl -fsSL https://raw.githubusercontent.com/TheAiSingularity/hermesclaw/main/scripts/install.sh | bash
# or, from an existing clone:
cd ~/.hermesclaw && git pull && ./scripts/setup.sh

Data migration is automatic. The named Docker volumes (hermesclaw-memories, hermesclaw-skills) are mounted at the new /opt/hermes-data/* paths; Hermes reads via HERMES_HOME. No manual steps needed. If you use the OpenShell profile, the host-side ~/.hermes mount now maps to /opt/hermes-data inside the container — same host directory, new in-container location.