abiosoft/colima · error

invalid vmType: '%s'

Error message

invalid vmType: '%s'

What it means

ValidateConfig rejects the vmType field against a platform-dependent allowlist: 'qemu' is always valid, 'vz' is added on macOS 13+, and 'krunkit' on macOS 13+ ARM. Any value not present in validVMTypes after those platform adjustments is refused with the value echoed.

Source

Thrown at config/configmanager/configmanager.go:72

	if util.MacOS13OrNewer() {
		validMountTypes["virtiofs"] = true
	}
	if _, ok := validMountTypes[c.MountType]; !ok {
		return fmt.Errorf("invalid mountType: '%s'", c.MountType)
	}
	validVMTypes := map[string]bool{"qemu": true}
	if util.MacOS13OrNewer() {
		validVMTypes["vz"] = true
	}
	if util.MacOS13OrNewerOnArm() {
		validVMTypes["krunkit"] = true
	}
	if c.VMType == "krunkit" && !util.MacOS13OrNewerOnArm() {
		return fmt.Errorf("vmType 'krunkit' is only available on macOS with Apple Silicon")
	}
	if _, ok := validVMTypes[c.VMType]; !ok {
		return fmt.Errorf("invalid vmType: '%s'", c.VMType)
	}
	if c.VMType == "qemu" {
		if err := util.AssertQemuImg(); err != nil {
			return fmt.Errorf("cannot use vmType: '%s', error: %w", c.VMType, err)
		}
	}
	if c.VMType == "krunkit" {
		if err := util.AssertKrunkit(); err != nil {
			return fmt.Errorf("cannot use vmType: '%s', error: %w", c.VMType, err)
		}
	}

	if c.DiskImage != "" {
		if strings.HasPrefix(c.DiskImage, "http://") || strings.HasPrefix(c.DiskImage, "https://") {
			return fmt.Errorf("cannot use diskImage: remote URLs not supported, only local files can be specified")
		}
	}

View on GitHub (pinned to c3a5f9184d)

Solutions

  1. Set vmType to exactly 'qemu', or 'vz' (macOS 13+), or 'krunkit' (macOS 13+ ARM)
  2. On Linux or macOS <13 use 'qemu', the only universally valid driver
  3. Check 'colima version' and the matching release notes for the driver names supported by your build

Example fix

# before (on Linux)
vmType: vz

# after
vmType: qemu
Defensive patterns

Strategy: validation

Validate before calling

func validVMType(vmType string, macOS13OrNewer, macOS13OrNewerOnArm bool) bool {
    valid := map[string]bool{"qemu": true}
    if macOS13OrNewer {
        valid["vz"] = true
    }
    if macOS13OrNewerOnArm {
        valid["krunkit"] = true
    }
    return valid[vmType]
}

Try / catch

if err := configmanager.ValidateConfig(c); err != nil {
    if strings.HasPrefix(err.Error(), "invalid vmType") {
        // show the allowlist for this host instead of retrying blindly
        log.Println("supported vmType: qemu; vz (macOS 13+); krunkit (macOS 13+ ARM)")
    }
}

Prevention

When it happens

Trigger: vmType set to 'vz' on Linux or macOS older than 13; values with typos or wrong case such as 'QEMU', 'vz ', or 'krun-kit'; an empty vmType after a bad merge of config profiles.

Common situations: Configs moved between Linux and macOS hosts; using vz after a macOS downgrade; older colima versions accepting values the current build no longer registers; copy-paste introducing stray characters.

Related errors


AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15). Data as JSON: /api/errors/4e9456a1028069c8. Report an issue: GitHub.