multica-ai/multica · error
%s %q must be a local relative path or an absolute path
Error message
%s %q must be a local relative path or an absolute path
What it means
Error "%s %q must be a local relative path or an absolute path" thrown in multica-ai/multica.
Source
Thrown at server/internal/daemon/execenv/codex_home.go:935
if os.IsNotExist(err) {
return fmt.Errorf("%s %q resolved to missing file %s: %w", key, referencedPath, src, err)
}
if err != nil {
// Not a confident absence — a permission or IO failure must not be
// reported as "the file isn't there", which sends operators looking for
// the wrong problem.
return fmt.Errorf("%s %q: cannot stat source %s: %w", key, referencedPath, src, err)
}
if filepath.IsAbs(referencedPath) || strings.HasPrefix(referencedPath, "~") {
return nil
}
if !info.Mode().IsRegular() {
return fmt.Errorf("%s %q resolved to %s, which is not a regular file", key, referencedPath, src)
}
cleanReferencedPath := filepath.Clean(referencedPath)
if !filepath.IsLocal(cleanReferencedPath) {
return fmt.Errorf("%s %q must be a local relative path or an absolute path", key, referencedPath)
}
return materialiseInCodexHome(codexHome, cleanReferencedPath, src, key)
}
// openVerifiedCodexHomeRoot opens codexHome as a confinement root and only
// returns it once the opened directory is proven to still BE codexHome.
//
// Checking the path first and opening it second is not enough: os.OpenRoot
// resolves the path it is given, so a directory swapped for a link to somewhere
// else between the check and the open yields a root that is happily confined —
// to the wrong tree. Every subsequent root-scoped write would then land outside
// the task home without ever "escaping" its root.
//
// That window is not hypothetical here. Task homes are reused, and on Windows
// only the direct Codex process is terminated — descendant cleanup cannot be
// confirmed (see server/pkg/agent/proc_windows.go) — so a leftover process that
// knows its old CODEX_HOME can still act on it. Any local process can create the
// same window on other platforms.View on GitHub (pinned to 2c0912b6ec)
Solutions
- Use a local relative path or an absolute path for the reference.
When it happens
Trigger: Thrown at server/internal/daemon/execenv/codex_home.go:935 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/5e1a92ffacde05ce.
Report an issue: GitHub.