{"record":{"id":"58d42ba81756ca96","repo":"GoogleContainerTools/skaffold","slug":"retrieving-home-directory-w","errorCode":null,"errorMessage":"retrieving home directory: %w","messagePattern":"retrieving home directory: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/skaffold/config/remote_cache.go","lineNumber":94,"sourceCode":"func (s *SyncRemoteCacheOption) CloneDisabled() bool {\n\treturn s.value == never\n}\n\n// FetchDisabled specifies if fetching remote dependencies is disabled by flag value\nfunc (s *SyncRemoteCacheOption) FetchDisabled() bool {\n\treturn s.value == missing || s.value == never\n}\n\n// GetRemoteCacheDir returns the directory for the remote cache.\nfunc GetRemoteCacheDir(opts SkaffoldOptions) (string, error) {\n\tif opts.RemoteCacheDir != \"\" {\n\t\treturn opts.RemoteCacheDir, nil\n\t}\n\n\t// cache location unspecified, use ~/.skaffold/remote-cache\n\thome, err := homedir.Dir()\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"retrieving home directory: %w\", err)\n\t}\n\treturn filepath.Join(home, constants.DefaultSkaffoldDir, \"remote-cache\"), nil\n}\n","sourceCodeStart":76,"sourceCodeEnd":98,"githubUrl":"https://github.com/GoogleContainerTools/skaffold/blob/a1189de023efc32d4b8e11f395acc678aa555011/pkg/skaffold/config/remote_cache.go#L76-L98","documentation":"GetRemoteCacheDir computes the default remote git cache location under ~/.skaffold/remote-cache when opts.RemoteCacheDir is unset. It throws this wrapped error when the OS home directory cannot be determined via homedir.Dir(), so a cache path cannot be derived.","triggerScenarios":"Calling GetRemoteCacheDir (directly or via SyncObjects/syncRepo) with RemoteCacheDir empty while HOME is unset (or the platform home-dir lookup fails, e.g. restricted service accounts or containers without HOME).","commonSituations":"Running skaffold in minimal Docker/CI containers with no HOME env var; running as a system service user without a home directory; sandboxed environments blocking home-dir detection.","solutions":["Set HOME to a writable directory, e.g. export HOME=/tmp","Set an explicit cache dir via the --remote-cache-dir flag / RemoteCacheDir option so home lookup is skipped","Give the runtime user a real home directory (usermod -d)"],"exampleFix":"// before\nCMD [\"skaffold\", \"run\"]   # HOME unset in container\n// after\nENV HOME=/home/skaffold\nCMD [\"skaffold\", \"run\"]","handlingStrategy":"fallback","validationCode":"if os.Getenv(\"HOME\") == \"\" && opts.RemoteCacheDir == \"\" {\n  os.Setenv(\"HOME\", \"/tmp\") // or error out early\n}","typeGuard":null,"tryCatchPattern":"dir, err := config.GetRemoteCacheDir(opts)\nif err != nil && strings.Contains(err.Error(), \"retrieving home directory\") {\n  dir = filepath.Join(\"/tmp\", \"skaffold-remote-cache\")\n}","preventionTips":["Always set HOME in Dockerfiles/CI before running skaffold","Set --remote-cache-dir explicitly in shared environments","Run skaffold as a user with a real home directory"],"tags":["filesystem","home-directory","cache"],"backgroundTag":"home-directory-unresolved","analyzedSha":"a1189de023efc32d4b8e11f395acc678aa555011","analyzedAt":"2026-09-05T12:09:27.064Z","contentChangedAt":"2026-09-05T12:09:27.064Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}