multica-ai/multica · error
chmod hermes-home dir: %w
Error message
chmod hermes-home dir: %w
What it means
Error "chmod hermes-home dir: %w" thrown in multica-ai/multica.
Source
Thrown at server/internal/daemon/execenv/hermes_home.go:399
// tells a task it can resume history that is not there.
func prepareHermesHome(hermesHome, sourceHome string, sourceMustExist bool, workspaceSkills []SkillContextForEnv, env map[string]string, memoryStore, sessionStore string, logger *slog.Logger) (sessions hermesSessionMount, err error) {
sharedHome := strings.TrimSpace(sourceHome)
if sharedHome == "" {
sharedHome = platformDefaultHermesHome()
}
if sourceMustExist {
if fi, err := os.Stat(sharedHome); err != nil || !fi.IsDir() {
return hermesSessionMount{}, fmt.Errorf("hermes profile home %q not found (create it with `hermes profile create`)", sharedHome)
}
}
if err := os.MkdirAll(hermesHome, 0o700); err != nil {
return hermesSessionMount{}, fmt.Errorf("create hermes-home dir: %w", err)
}
// Tighten perms on reuse too — MkdirAll leaves an existing dir's mode alone,
// and the derived config below can hold inline api_key secrets.
if err := os.Chmod(hermesHome, 0o700); err != nil {
return hermesSessionMount{}, fmt.Errorf("chmod hermes-home dir: %w", err)
}
if err := prepareHermesTaskLocalState(hermesHome); err != nil {
return hermesSessionMount{}, fmt.Errorf("prepare task-local state: %w", err)
}
// Sessions: link state.db at the conversation's persistent store so the
// transcript survives the task. A store that cannot be mounted leaves the
// database task-local — the pre-existing behaviour — rather than failing the
// task. See hermes_sessions.go.
if sessionStore != "" {
mounted, err := mountHermesSessionDB(hermesHome, sessionStore, logger)
if err != nil {
return hermesSessionMount{}, fmt.Errorf("mount conversation sessions: %w", err)
}
sessions = mounted
}
// Memory: link memories/ at the agent's persistent store so it survives the
// task, or fall back to a fresh task-local dir when there is no store (no
// agent to key on, or an unresolvable profile dir). See hermes_memory.go.View on GitHub (pinned to 2c0912b6ec)
Solutions
- Check permissions to chmod the hermes-home directory.
When it happens
Trigger: Thrown at server/internal/daemon/execenv/hermes_home.go:399 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/a54f6177c7f7eb6f.
Report an issue: GitHub.