lima-vm/lima · error

unknown or unsupported VM type: %s

Error message

unknown or unsupported VM type: %s

What it means

InspectStatus found a non-nil VMType but the driver registry has no entry for it — neither an external driver binary nor a built-in implementation. This is the runtime counterpart of the ResolveVMType validation error: the config resolved earlier (or was written directly) with a type no driver serves in this build.

Source

Thrown at pkg/driverutil/vm.go:53

	}

	// Also accept external drivers discovered in the registry.
	_, _, exists := registry.Get(*y.VMType)
	if !exists {
		return fmt.Errorf("vmType %#q is not a registered driver", *y.VMType)
	}

	return nil
}

func InspectStatus(ctx context.Context, inst *limatype.Instance) (string, error) {
	if inst == nil || inst.Config == nil || inst.Config.VMType == nil {
		return "", errors.New("instance or its configuration is not properly initialized")
	}

	extDriver, intDriver, exists := registry.Get(*inst.Config.VMType)
	if !exists {
		return "", fmt.Errorf("unknown or unsupported VM type: %s", *inst.Config.VMType)
	}

	if extDriver != nil {
		status, err := handleInspectStatusAction(ctx, inst, extDriver.Path)
		if err != nil {
			extDriver.Logger.Errorf("Failed to inspect status for instance %#q: %v", inst.Name, err)
			return "", err
		}
		extDriver.Logger.Debugf("Instance %#q inspected successfully with status: %s", inst.Name, inst.Status)
		return status, nil
	}

	return intDriver.InspectStatus(ctx, inst), nil
}

func handleInspectStatusAction(ctx context.Context, inst *limatype.Instance, extDriverPath string) (string, error) {
	cmd := exec.CommandContext(ctx, extDriverPath, "--inspect-status")

View on GitHub (pinned to dd909d0973)

Solutions

  1. Reinstall the external driver that used to provide this vmType, then retry `limactl inspect-status`/list
  2. Edit ~/.lima/<instance>/lima.yaml and change vmType to a driver available in the current build (only if the disk format is compatible)
  3. Use the same Lima version that created the instance
  4. Delete and recreate the instance with a supported vmType

Example fix

// before: vmType: "vz" on a Linux build without VZ
// after
vmType: "qemu"
Defensive patterns

Strategy: validation

Validate before calling

if inst != nil && inst.Config != nil && inst.Config.VMType != nil {
    if _, _, ok := registry.Get(*inst.Config.VMType); !ok {
        return fmt.Errorf("driver %q not installed; install it or recreate the instance", *inst.Config.VMType)
    }
}

Type guard

func hasDriverFor(inst *limatype.Instance) bool {
    if inst == nil || inst.Config == nil || inst.Config.VMType == nil {
        return false
    }
    _, _, ok := registry.Get(*inst.Config.VMType)
    return ok
}

Try / catch

status, err := driverutil.InspectStatus(ctx, inst)
if err != nil {
    if strings.Contains(err.Error(), "unknown or unsupported VM type") {
        // treat as "uninspectable" and prompt to reinstall driver
    }
    return err
}

Prevention

When it happens

Trigger: Calling InspectStatus on an instance whose stored lima.yaml contains a vmType absent from limatype.VMTypes and registry.Get — e.g. instance created by a Lima build with an external driver that is no longer installed, or a typo introduced via limactl edit.

Common situations: External driver uninstalled/upgraded after instance creation; switching between Lima builds (one with a plugin, one without); editing lima.yaml by hand to an unsupported value; downgrading Lima.

Related errors


AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01). Data as JSON: /api/errors/a9c981c5dbc4a3e5. Report an issue: GitHub.