{"record":{"id":"c582f4f197f55184","repo":"lima-vm/lima","slug":"vz-driver-requires-macos-13-or-higher-to-run-w","errorCode":null,"errorMessage":"vz driver requires macOS 13 or higher to run: %w","messagePattern":"vz driver requires macOS 13 or higher to run: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"pkg/driver/vz/vz_driver_darwin.go","lineNumber":460,"sourceCode":"\tfilesToClean := []string{\n\t\tipsw,\n\t\tfilepath.Join(l.Instance.Dir, filenames.Image),\n\t}\n\tfor _, file := range filesToClean {\n\t\tif err := os.RemoveAll(file); err != nil {\n\t\t\tlogrus.WithError(err).Warnf(\"Failed to remove %#q\", file)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (l *LimaVzDriver) Start(ctx context.Context) (chan error, error) {\n\tlogrus.Infof(\"Starting VZ (hint: to watch the boot progress, see %#q)\", filepath.Join(l.Instance.Dir, \"serial*.log\"))\n\tvm, waitSSHLocalPortAccessible, errCh, err := startVM(ctx, l.Instance, l.SSHLocalPort, l.onVsockEvent)\n\tif err != nil {\n\t\tif errors.Is(err, vz.ErrUnsupportedOSVersion) {\n\t\t\treturn nil, fmt.Errorf(\"vz driver requires macOS 13 or higher to run: %w\", err)\n\t\t}\n\t\treturn nil, err\n\t}\n\tl.machine = vm\n\tl.waitSSHLocalPortAccessible = waitSSHLocalPortAccessible\n\n\treturn errCh, nil\n}\n\nfunc (l *LimaVzDriver) canRunGUI() bool {\n\tswitch *l.Instance.Config.Video.Display {\n\tcase \"vz\", \"default\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n","sourceCodeStart":442,"sourceCodeEnd":478,"githubUrl":"https://github.com/lima-vm/lima/blob/dd909d0973cd84fa35f9e1693181b4585ea616c1/pkg/driver/vz/vz_driver_darwin.go#L442-L478","documentation":"Virtualization.framework requires macOS 13 (Ventura) or later. When `startVM` returns `vz.ErrUnsupportedOSVersion`, Start wraps it as `vz driver requires macOS 13 or higher to run: <cause>` instead of surfacing the raw framework error. (validateConfig checks this earlier too, but Start defends at runtime.)","triggerScenarios":"Calling `limactl start` on a macOS 12 or older host, or any environment where `startVM` reports `vz.ErrUnsupportedOSVersion` at VM start time.","commonSituations":"Running an older macOS release (Monterey or earlier) with a Lima version that dropped support; CI runners pinned to old macOS images; forcing vmType 'vz' on unsupported hosts.","solutions":["Upgrade the host to macOS 13 or later","Use vmType 'qemu', which supports older macOS versions","Downgrade to a Lima version that still supports VZ on your macOS release (not recommended)"],"exampleFix":"# before (lima.yaml on macOS 12)\nvmType: vz\n# after\nvmType: qemu","handlingStrategy":"validation","validationCode":"v, err := osutil.ProductVersion()\nif err == nil && v.LessThan(semver.MustParse(\"13.0.0\")) {\n    // do not use vmType: vz; use qemu or upgrade macOS\n}","typeGuard":"func vzSupported(macVer string) bool {\n    return !semver.MustParse(macVer).LessThan(semver.MustParse(\"13.0.0\"))\n}","tryCatchPattern":"if _, err := driver.Start(ctx); err != nil {\n    if errors.Is(err, vz.ErrUnsupportedOSVersion) || strings.Contains(err.Error(), \"requires macOS 13\") {\n        // fall back to qemu driver or abort with a clear message\n    }\n}","preventionTips":["Check the macOS version before choosing vmType: vz","Default CI runners on macOS <= 12 to vmType: qemu","Prefer limactl validate to catch this before start"],"tags":["macos","vz","version-check","startup"],"backgroundTag":"unsupported-os-version","analyzedSha":"dd909d0973cd84fa35f9e1693181b4585ea616c1","analyzedAt":"2026-09-01T14:24:59.842Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}