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

  1. 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.