{"record":{"id":"c933d88d3d115595","repo":"abiosoft/colima","slug":"error-preparing-colima-privileged-dir-w","errorCode":null,"errorMessage":"error preparing colima privileged dir: %w","messagePattern":"error preparing colima privileged dir: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"daemon/process/vmnet/deps.go","lineNumber":75,"sourceCode":"\n\t// write tar to tmp directory\n\tf, err := os.CreateTemp(\"\", \"vmnet.tar.gz\")\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error creating temp file: %w\", err)\n\t}\n\tif _, err := f.Write(gz); err != nil {\n\t\treturn fmt.Errorf(\"error writing temp file: %w\", err)\n\t}\n\t_ = f.Close() // not a fatal error\n\n\tdefer func() {\n\t\t_ = os.Remove(f.Name())\n\t}()\n\n\t// extract tar to desired location\n\tdir := optDir\n\tif err := host.RunInteractive(\"sudo\", \"mkdir\", \"-p\", dir); err != nil {\n\t\treturn fmt.Errorf(\"error preparing colima privileged dir: %w\", err)\n\t}\n\tif err := host.RunInteractive(\"sudo\", \"sh\", \"-c\", fmt.Sprintf(\"cd %s && tar xfz %s 2>/dev/null\", dir, f.Name())); err != nil {\n\t\treturn fmt.Errorf(\"error extracting vmnet archive: %w\", err)\n\t}\n\n\treturn nil\n}\n\nvar _ process.Dependency = vmnetRunDir{}\n\ntype vmnetRunDir struct{}\n\n// Install implements Dependency\nfunc (v vmnetRunDir) Install(host environment.HostActions) error {\n\treturn host.RunInteractive(\"sudo\", \"mkdir\", \"-p\", runDir())\n}\n\n// Installed implements Dependency","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/abiosoft/colima/blob/c3a5f9184d83a197184f897a9f07eb3c01b3bc88/daemon/process/vmnet/deps.go#L57-L93","documentation":"Thrown while installing the socket_vmnet binaries for Colima's rootful (vmnet) network mode on macOS. The code shells out to `sudo mkdir -p /opt/colima` via host.RunInteractive; any non-zero exit (sudo password prompt declined, no sudo rights, root filesystem issues) is wrapped in this error. It runs before extracting the embedded vmnet tarball into /opt/colima.","triggerScenarios":"Colima starts with `--network-driver` shared/bridged (vmnet modes) and /opt/colima does not exist or is not writable; user cancels the interactive sudo password prompt; user lacks sudo privileges (non-admin macOS account); /opt is read-only or a SIP/permission oddity blocks mkdir.","commonSituations":"First-time setup of colima with rootful networking on a corporate Mac where the user is not an admin; ssh/non-interactive sessions where sudo cannot prompt (NOPASSWD not configured); stale /opt/colima owned by root with wrong modes after a previous failed install; CI runners without a TTY.","solutions":["Re-run the command in a real Terminal so the sudo prompt can appear, and enter the admin password when asked","Verify sudo works: `sudo -v` in the same shell; if it fails, get the account added to Administrators","Pre-create the dir once: `sudo mkdir -p /opt/colima && sudo chown $(whoami) /opt/colima`, then retry","If sudo cannot prompt (ssh/CI), add a NOPASSWD sudoers entry for the colima commands or run interactively","As a workaround use user-mode networking: `colima start --network-driver slirp` (avoids vmnet entirely)"],"exampleFix":"# before (fails in non-interactive ssh session)\ncolima start --network-driver shared\n# after (pre-create dir once, or use slirp)\nsudo mkdir -p /opt/colima\ncolima start --network-driver shared\n# or\ncolima start --network-driver slirp","handlingStrategy":"try-catch","validationCode":"// Pre-flight: can we sudo and is /opt writable/creatable?\nfunc canPrepareOptDir() error {\n    if err := exec.Command(\"sudo\", \"-n\", \"true\").Run(); err != nil {\n        return fmt.Errorf(\"sudo unavailable non-interactively: %w\", err)\n    }\n    if _, err := os.Stat(\"/opt/colima\"); err == nil {\n        return nil // already exists\n    }\n    return exec.Command(\"sudo\", \"-n\", \"mkdir\", \"-p\", \"/opt/colima\").Run()\n}","typeGuard":null,"tryCatchPattern":"// err from vmnetFile.Install(host)\nif err != nil && strings.Contains(err.Error(), \"error preparing colima privileged dir\") {\n    // distinguish sudo-auth failure from filesystem failure\n    if sudoErr := exec.Command(\"sudo\", \"-v\").Run(); sudoErr != nil {\n        return fmt.Errorf(\"run from an interactive terminal and complete the sudo prompt: %w\", err)\n    }\n    return fmt.Errorf(\"/opt/colima could not be created; check permissions/disk: %w\", err)\n}","preventionTips":["Run colima start in a real Terminal (TTY) whenever rootful networking is enabled","Validate `sudo -v` succeeds before scripting colima with vmnet","For automation, pre-create /opt/colima or configure NOPASSWD for the colima sudoers commands","Use --network-driver slirp in headless/CI environments"],"tags":["colima","vmnet","sudo","macos","filesystem","networking"],"backgroundTag":null,"analyzedSha":"c3a5f9184d83a197184f897a9f07eb3c01b3bc88","analyzedAt":"2026-08-15T18:58:08.334Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}