fix(skill): use profile-isolated path for plan storage

Plan skill was writing to .hermes/plans/ relative to the backend
workspace, causing all profiles to share the same plans directory.

Now writes to ~/.hermes/plans/ which is expanded against the
subprocess HOME ({HERMES_HOME}/home/), ensuring each profile has
its own isolated plans directory.

Fixes #12533.
This commit is contained in:
Developer 2026-04-19 21:50:05 +08:00
parent 957ca79e8e
commit 967cec4331

View file

@ -1,6 +1,6 @@
---
name: plan
description: Plan mode for Hermes — inspect context, write a markdown plan into the active workspace's `.hermes/plans/` directory, and do not execute the work.
description: Plan mode for Hermes — inspect context, write a markdown plan into the profile's plans directory, and do not execute the work.
version: 1.0.0
author: Hermes Agent
license: MIT
@ -22,7 +22,7 @@ For this turn, you are planning only.
- Do not edit project files except the plan markdown file.
- Do not run mutating terminal commands, commit, push, or perform external actions.
- You may inspect the repo or other context with read-only commands/tools when needed.
- Your deliverable is a markdown plan saved inside the active workspace under `.hermes/plans/`.
- Your deliverable is a markdown plan saved under the profile's `~/.hermes/plans/` directory.
## Output requirements
@ -42,12 +42,12 @@ If the task is code-related, include exact file paths, likely test targets, and
## Save location
Save the plan with `write_file` under:
- `.hermes/plans/YYYY-MM-DD_HHMMSS-<slug>.md`
- `~/.hermes/plans/YYYY-MM-DD_HHMMSS-<slug>.md`
Treat that as relative to the active working directory / backend workspace. Hermes file tools are backend-aware, so using this relative path keeps the plan with the workspace on local, docker, ssh, modal, and daytona backends.
This path is expanded against the subprocess HOME (`{HERMES_HOME}/home/`), ensuring each profile has its own isolated plans directory. Falls back to `os.path.expanduser()` when the subprocess home directory does not exist.
If the runtime provides a specific target path, use that exact path.
If not, create a sensible timestamped filename yourself under `.hermes/plans/`.
If not, create a sensible timestamped filename yourself under `~/.hermes/plans/`.
## Interaction style