Rule: one HERMES_HOME → one book → no cross-profile bleed, no secret leakage.
| Boundary | Enforcement |
|---|---|
| Path containment | All cube/checkpoint IO must resolve under HERMES_HOME |
| Profile separation | Each profile home has its own memories/memory.cube |
| Secrets | Never pack .env / auth.json / keys into checkpoints |
| Secret scan | Text files scanned before ark pack / restore |
| Permissions | hermescube security harden → 0700 vaults, 0600 books & identity |
| Git tree | scripts/check_isolation.sh — generic home-path needles + no live cubes (never house hostnames) |
hermescube security audit # findings for THIS HERMES_HOME
hermescube security harden # tighten modes (best-effort)
hermescube security audit --jsonconnect / checkpoint create also harden after success.
# Client A library — never touches default home
HERMES_HOME=~/.hermes/profiles/client-a hermescube connect
HERMES_HOME=~/.hermes/profiles/client-a hermescube security audit
HERMES_HOME=~/.hermes/profiles/client-a hermescube checkpoint create --name a-lockDo not copy memory.cube between profile homes unless you intentionally merge libraries.
- Slug cannot contain
/or.. - Sources validated with
validate_checkpoint_sources - Restore refuses forbidden rels and path escape
- Live files backed up as
*.pre-restore-*before overwrite
| Layer | Tool |
|---|---|
| Door locks (modes) | security harden |
| Inspection | security audit |
| Flight redact | blackbox (redaction ON) |
| Identity ark | checkpoint (no .env) |
| Repo cleanliness | scripts/check_isolation.sh |
| Provider scope | memory.provider per home only |
hermescube security harden- Remove any
.envfrommemories/checkpoints/ chmod 600on.envandmemory.cube- Re-run
hermescube security audit