lima-vm/lima · error
failed to delete disk %#q: %w
Error message
failed to delete disk %#q: %w
What it means
The final removal of the disk (deleteDisk: removing the disk directory and its contents) failed after all in-use checks passed. The store-level deletion error is wrapped with the disk name. Typical causes are filesystem-level problems rather than Lima logic.
Source
Thrown at cmd/limactl/disk.go:287
}
var refInstances []string
for _, inst := range instances {
for _, d := range inst.AdditionalDisks {
if d.Name == diskName {
refInstances = append(refInstances, inst.Name)
}
}
}
if len(refInstances) > 0 {
logrus.Warnf("Skipping deleting disk %#q, disk is referenced by one or more non-running instances: %#q",
diskName, refInstances)
logrus.Warnf("To delete anyway, run %#q", forceDeleteCommand(diskName))
continue
}
}
if err := deleteDisk(disk); err != nil {
return fmt.Errorf("failed to delete disk %#q: %w", diskName, err)
}
logrus.Infof("Deleted %#q (%#q)", diskName, disk.Dir)
}
return nil
}
func deleteDisk(disk *store.Disk) error {
if err := os.RemoveAll(disk.Dir); err != nil {
return fmt.Errorf("failed to remove %#q: %w", disk.Dir, err)
}
return nil
}
func forceDeleteCommand(diskName string) string {
return fmt.Sprintf("limactl disk delete --force %v", diskName)
}
func newDiskUnlockCommand() *cobra.Command {View on GitHub (pinned to dd909d0973)
Solutions
- Ensure no VM is running that used this disk (limactl list; stop instances)
- Fix ownership: sudo chown -R $(whoami) ~/.lima/disks/<name>, then retry
- Read the wrapped %w error; if permission denied, adjust permissions, if EBUSY, kill the holding process
- As a last resort remove ~/.lima/disks/<name> manually after confirming no process uses it
Example fix
// before $ limactl disk delete data // failed to delete disk "data": remove ...: permission denied // after $ sudo chown -R $(whoami) ~/.lima/disks/data $ limactl disk delete data
Defensive patterns
Strategy: try-catch
Validate before calling
const { accessSync, constants } = require('fs')
try { accessSync(diskDirPath(name), constants.W_OK) } catch { throw new Error('no write permission on disk dir; fix chown first') } Type guard
function isDeleteErr(err: unknown): boolean {
return err instanceof Error && /failed to delete disk/.test(err.message)
} Try / catch
try {
await deleteDisk(name)
} catch (err) {
if (isDeleteErr(err)) {
console.error('Check for VM processes holding files and dir permissions:', err.cause ?? err)
} else throw err
} Prevention
- Stop all instances that ever attached the disk before deleting
- Avoid sudo-created disk dirs; keep one owning user
- Keep ~/.lima/disks on a local, writable filesystem
- Read the wrapped cause (%w) before retrying
When it happens
Trigger: `limactl disk delete <name>` where deleteDisk fails on os.RemoveAll of the disk dir — permission denied, files locked by a running VM process, or a partially missing directory.
Common situations: A VM process still holding files open in the disk dir; disk dir owned by root after a sudo run; disk on a network mount with stale handles.
Related errors
- instance %#q directory %#q exists but its %#q could not be r
- cannot delete disk %#q in use by instance %#q
- failed to create temp file: %w
- failed to write temp plist: %w
- failed to register instance %#q to start at login: %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/16447dd16359f888.
Report an issue: GitHub.