{"record":{"id":"166778a5833fdd31","repo":"multica-ai/multica","slug":"multica-agent-temp-base-must-be-an-absolute-path","errorCode":null,"errorMessage":"MULTICA_AGENT_TEMP_BASE must be an absolute path, got %q","messagePattern":"MULTICA_AGENT_TEMP_BASE must be an absolute path, got %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/internal/daemon/daemon.go","lineNumber":8269,"sourceCode":"\n// taskTempBaseDir resolves the parent directory for private per-task temp\n// dirs on Linux and macOS. The daemon operator can relocate it with\n// MULTICA_AGENT_TEMP_BASE, which must be an absolute path to an existing,\n// writable directory; an invalid value fails task startup instead of silently\n// falling back. Windows ignores the variable. Unset keeps the platform default\n// exactly as before, down to the syscalls made.\n// Operators should pick a short path: child tools may bind AF_UNIX sockets\n// under $TMPDIR (sun_path is 108 bytes on Linux, 104 on macOS).\nfunc taskTempBaseDir() (string, bool, error) {\n\tif runtime.GOOS == \"windows\" {\n\t\treturn socketSafeTempBaseDir(), false, nil\n\t}\n\tbase := strings.TrimSpace(os.Getenv(\"MULTICA_AGENT_TEMP_BASE\"))\n\tif base == \"\" {\n\t\treturn socketSafeTempBaseDir(), false, nil\n\t}\n\tif !filepath.IsAbs(base) {\n\t\treturn \"\", true, fmt.Errorf(\"MULTICA_AGENT_TEMP_BASE must be an absolute path, got %q\", base)\n\t}\n\treturn base, true, nil\n}\n\nfunc socketSafeTempBaseDir() string {\n\tif os.PathSeparator == '/' {\n\t\tif info, err := os.Stat(\"/tmp\"); err == nil && info.IsDir() {\n\t\t\treturn \"/tmp\"\n\t\t}\n\t}\n\treturn os.TempDir()\n}\n\n// isBlockedEnvKey returns true if the key must not be overridden by user-\n// configured custom_env. This prevents accidental or malicious override of\n// daemon-internal variables and critical system paths.\nfunc isBlockedEnvKey(key string) bool {\n\tupper := strings.ToUpper(key)","sourceCodeStart":8251,"sourceCodeEnd":8287,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/internal/daemon/daemon.go#L8251-L8287","documentation":"Error \"MULTICA_AGENT_TEMP_BASE must be an absolute path, got %q\" thrown in multica-ai/multica.","triggerScenarios":"Thrown at server/internal/daemon/daemon.go:8269 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set MULTICA_AGENT_TEMP_BASE to an absolute path."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}