hermes - 💡(How to fix) Fix Docker/profile mode should avoid different HOME values between Hermes process and tool subprocesses [2 pull requests]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Fix Action

Fixed

Code Example

HERMES_HOME=/opt/data

---

HOME=/opt/data/home

---

Hermes main process:
HOME=/opt/data
HERMES_HOME=/opt/data

Tool subprocess:
HOME=/opt/data/home
HERMES_HOME=/opt/data

---

echo "$HOME"
python -c 'from pathlib import Path; print(Path.home())'
python -c 'import os; print(os.path.expanduser("~"))'

---

~/.ssh
~/.config/gh
~/.gitconfig
~/workspace

---

HERMES_HOME=/opt/data
HOME=/opt/data/home

---

HERMES_HOME=/opt/data/profiles/<profile>
HOME=/opt/data/profiles/<profile>/home

---

HERMES_HOME = Hermes state/config root
HOME        = user/tool home for this profile

---

main process HOME == subprocess HOME

---

profile A HOME != profile B HOME
RAW_BUFFERClick to expand / collapse

Problem

In Docker deployments, Hermes uses HERMES_HOME as the persistent data root, for example:

HERMES_HOME=/opt/data

At the same time, tool subprocesses may get a different HOME:

HOME=/opt/data/home

This is understandable as a fix for Docker persistence and profile isolation: tools like git, ssh, gh, npm should not write to /root, and different profiles should not share credentials.

The confusing part is that the Hermes main/gateway process can still have a different HOME from the subprocesses it starts.

Example:

Hermes main process:
HOME=/opt/data
HERMES_HOME=/opt/data

Tool subprocess:
HOME=/opt/data/home
HERMES_HOME=/opt/data

This means that within the same active profile, ~ can point to different places depending on where it is expanded.

Why this is a problem

For one profile, I would expect these to agree:

echo "$HOME"
python -c 'from pathlib import Path; print(Path.home())'
python -c 'import os; print(os.path.expanduser("~"))'

and also the HOME seen by terminal tools, background processes, and execute_code.

When they differ, it becomes hard to reason about paths like:

~/.ssh
~/.config/gh
~/.gitconfig
~/workspace

or skill/config paths that use ~.

I agree that different profiles should have isolated homes. But inside a single profile, splitting HOME between Hermes itself and its tools does not seem to provide much benefit. It mostly creates path ambiguity.

For Docker specifically, I think the cleaner isolation boundary is the container itself. If I want stronger isolation between agents/profiles, I would rather run separate containers with separate mounted data directories, instead of relying on different HOME values inside the same container.

Suggested behavior

Keep profile isolation, but make HOME consistent within one profile.

For example, in Docker default profile:

HERMES_HOME=/opt/data
HOME=/opt/data/home

For named profiles:

HERMES_HOME=/opt/data/profiles/<profile>
HOME=/opt/data/profiles/<profile>/home

So the intended model would be:

HERMES_HOME = Hermes state/config root
HOME        = user/tool home for this profile

Different profiles should still get different homes. But the same profile should not have two competing HOME values.

Expected invariant

Within one active profile:

main process HOME == subprocess HOME

Across profiles:

profile A HOME != profile B HOME

This keeps the useful isolation boundary at the profile level, while avoiding confusing behavior inside a single profile.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Docker/profile mode should avoid different HOME values between Hermes process and tool subprocesses [2 pull requests]