lima-vm/lima · warning
unimplemented by the krunkit driver
Error message
unimplemented by the krunkit driver
What it means
The krunkit driver ( Lima's driver on macOS arm64 that runs the VM via libkrun/krunkit) does not implement VM snapshot operations or display-password/connection APIs. The sentinel `errUnimplemented` is returned by CreateSnapshot, ApplySnapshot, DeleteSnapshot, ListSnapshots, ChangeDisplayPassword and DisplayConnection to signal that the backend has no support for these features. Callers get this error whenever they invoke these limactl commands on an instance whose VM type resolves to the krunkit driver.
Source
Thrown at pkg/driver/krunkit/errors_darwin_arm64.go:8
// SPDX-FileCopyrightText: Copyright The Lima Authors
// SPDX-License-Identifier: Apache-2.0
package krunkit
import "errors"
var errUnimplemented = errors.New("unimplemented by the krunkit driver")
View on GitHub (pinned to dd909d0973)
Solutions
- Do not use snapshot commands on krunkit instances; switch the instance to a driver that supports snapshots (e.g. vz or qemu) by creating a new instance with `vmType: vz` or `qemu`.
- Check driver capability before calling: wrap the snapshot calls and treat `errors.Is(err, errUnimplemented)` as 'unsupported feature', not a transient failure.
- Export/copy instance data manually (e.g. copy the instance dir and disk image) instead of snapshotting, then restore manually.
- Update Lima in case a newer krunkit driver implements the feature; check the Lima changelog.
Example fix
// before
if err := inst.Driver.CreateSnapshot(ctx, tag); err != nil {
return err
}
// after
if err := inst.Driver.CreateSnapshot(ctx, tag); err != nil {
if errors.Is(err, krunkit.ErrUnimplemented) {
log.Warnf("snapshots unsupported by driver %q; skipping", inst.VMType)
return nil
}
return err
} Defensive patterns
Strategy: try-catch
Validate before calling
// Go: check instance vmType before attempting snapshot ops
if inst.VMType == "krunkit" {
return fmt.Errorf("snapshots are not supported with the krunkit driver")
} Type guard
func supportsSnapshots(vmType string) bool {
return vmType != "krunkit"
} Try / catch
if err := d.CreateSnapshot(ctx, tag); err != nil {
if errors.Is(err, krunkit.ErrUnimplemented) {
// treat as unsupported feature, not a failure
return nil
}
return err
} Prevention
- Avoid snapshot subcommands on krunkit instances
- Document driver capability differences in team runbooks
- Use vz or qemu when snapshot workflows are required
- Check driver support matrix before automating limactl commands
When it happens
Trigger: Running `limactl snapshot create/apply/delete/list`, or any code path that calls Driver.CreateSnapshot/ApplySnapshot/DeleteSnapshot/ListSnapshots, on an instance started with the krunkit driver; also calling ChangeDisplayPassword or DisplayConnection for a krunkit instance.
Common situations: A user of snapshot workflows (e.g. pre-upgrade checkpoints) whose instance config selects vmType krunkit on macOS arm64; CI scripts that iterate snapshots across drivers; automation that assumes snapshot parity with qemu/vz drivers.
Related errors
- unimplemented
- failed to load disk %#q: %w
- failed to run attach disk %#q, in use by instance %#q
- failed to lock disk %#q: %w
- failed to convert extra disk %#q to raw: %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/2a3b42f588a1dc78.
Report an issue: GitHub.