multica-ai/multica · error

read %s: %w

Error message

read %s: %w

What it means

Error "read %s: %w" thrown in multica-ai/multica.

Source

Thrown at server/internal/daemon/execenv/codex_home.go:855

// config.toml is copied verbatim, so its path-valued keys survive the move to
// the task home while the files they name do not. Codex resolves a relative
// value against CODEX_HOME, which is now the task home, so an unmaterialised
// reference makes Codex fail while loading its configuration — before the task
// prompt is ever delivered (MUL-5623 / #6271: `failed to read model
// instructions file <task-home>/gpt-unrestricted.md`).
//
// Only the keys listed below are followed. Copying every path a config could
// mention would turn any user config into a channel for pulling arbitrary host
// files into a task sandbox, and copying the whole shared home would drag
// auth.json and the machine's session history along with it.
func syncCodexReferencedFiles(codexHome, sharedHome string) error {
	configPath := filepath.Join(codexHome, "config.toml")
	data, err := os.ReadFile(configPath)
	if os.IsNotExist(err) {
		return nil
	}
	if err != nil {
		return fmt.Errorf("read %s: %w", configPath, err)
	}

	var cfg struct {
		ModelCatalogJSON string `toml:"model_catalog_json"`
		// Replacement for Codex's built-in instructions.
		// experimental_instructions_file is the deprecated alias Codex still
		// accepts, so configs written before the rename need it too.
		ModelInstructionsFile        string `toml:"model_instructions_file"`
		ExperimentalInstructionsFile string `toml:"experimental_instructions_file"`
	}
	if err := toml.Unmarshal(data, &cfg); err != nil {
		return fmt.Errorf("parse %s: %w", configPath, err)
	}

	for _, ref := range []struct{ key, path string }{
		{"model_catalog_json", cfg.ModelCatalogJSON},
		{"model_instructions_file", cfg.ModelInstructionsFile},
		{"experimental_instructions_file", cfg.ExperimentalInstructionsFile},

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Check that the file exists and is readable.

When it happens

Trigger: Thrown at server/internal/daemon/execenv/codex_home.go:855 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/fa56dd34c8793bc0. Report an issue: GitHub.