abiosoft/colima · error
error preparing vmnet: %w
Error message
error preparing vmnet: %w
What it means
processManager.init creates the per-profile daemon directory (process.Dir() = <profile ConfigDir>/daemon, e.g. ~/.colima/_default/daemon) via fsutil.MkdirAll(..., 0755). Despite the 'vmnet' wording (leftover from a comment about network dependencies), this is plain directory creation for all daemon files. The error wraps whatever filesystem failure MkdirAll hit (a *fs.PathError: permission denied, read-only filesystem, no space left on device).
Source
Thrown at daemon/daemon.go:68
host environment.HostActions
}
func (l processManager) Dependency(ctx context.Context, conf config.Config, name string) (deps process.Dependency, root bool) {
processes := processesFromConfig(conf)
for _, p := range processes {
if p.Name() == name {
return process.Dependencies(p)
}
}
return process.Dependencies()
}
func (l processManager) init() error {
// dependencies for network
if err := fsutil.MkdirAll(process.Dir(), 0755); err != nil {
return fmt.Errorf("error preparing vmnet: %w", err)
}
return nil
}
func (l processManager) Running(ctx context.Context, conf config.Config) (s Status, err error) {
err = l.host.RunQuiet(osutil.Executable(), "daemon", "status", config.CurrentProfile().ShortName)
if err != nil {
return
}
s.Running = true
ctx = context.WithValue(ctx, process.CtxKeyDaemon(), s.Running)
for _, p := range processesFromConfig(conf) {
pErr := p.Alive(ctx)
s.Processes = append(s.Processes, processStatus{
Name: p.Name(),
Running: pErr == nil,View on GitHub (pinned to c3a5f9184d)
Solutions
- reproduce the real errno manually: mkdir -p ~/.colima/_default/daemon (or $COLIMA_HOME equivalent) and read the OS error
- fix ownership: sudo chown -R $(whoami) ~/.colima
- verify HOME/COLIMA_HOME point to a writable path for the invoking user
- check disk space and read-only mounts: df -h ~
Example fix
// before $ colima start --mount-inotify error preparing vmnet: mkdir /Users/me/.colima/_default/daemon: permission denied // after (root-owned dir from a previous sudo run) $ sudo chown -R $(whoami) ~/.colima $ colima start --mount-inotify # succeeds
Defensive patterns
Strategy: try-catch
Validate before calling
dir := filepath.Join(config.CurrentProfile().ConfigDir(), "daemon")
if err := fsutil.MkdirAll(dir, 0755); err != nil {
return fmt.Errorf("daemon dir not preparable, fix before start: %w", err)
}
// also probe writability, not just existence
probe := filepath.Join(dir, ".probe")
if err := os.WriteFile(probe, nil, 0600); err != nil {
return fmt.Errorf("daemon dir not writable: %w", err)
}
_ = os.Remove(probe) Try / catch
if err := manager.Start(ctx, conf); err != nil {
var perr *fs.PathError
if errors.As(err, &perr) {
// perr.Path names the exact directory; check os.Stat(perr.Path) ownership/perms
log.Printf("daemon dir %s failed: %v — chown or free space", perr.Path, perr.Err)
}
} Prevention
- never run colima under sudo — it leaves root-owned entries under ~/.colima
- if sudo was ever used, run sudo chown -R $(whoami) ~/.colima as cleanup
- keep HOME and COLIMA_HOME exported and writable wherever colima runs (launchd/CI included)
- monitor free disk space on the home volume
When it happens
Trigger: MkdirAll on ~/.colima/<profile>/daemon fails: a root-owned file or directory inside the path left by earlier sudo usage; $HOME or COLIMA_HOME unwritable; disk full; profile config dir replaced by a regular file.
Common situations: running colima once with sudo leaves ~/.colima entries owned by root; corporate machines with managed/read-only home directories; COLIMA_HOME exported to a protected location; a '~/.colima/_default' regular file blocking the dir.
Related errors
- error preparing daemon directory: %w
- cannot make dir: %w
- error reading pid file: %w
- error creating Lima config directory: %w
- error persisting runtime settings: %w
AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15).
Data as JSON: /api/errors/34162c68fe8f775d.
Report an issue: GitHub.