Skip to main content
vers kill deletes one or more VMs. It’s an alias for vers delete — both names work identically, and nothing changes depending on which you use.
This operation is irreversible. Deleted VMs lose all state: filesystem contents, memory, running processes.

Synopsis

vers kill                              # Delete current HEAD VM
vers kill <vm-id|alias>...             # Delete one or more VMs
vers kill -r <vm-id>                   # Delete VM and all its children
vers kill -y <vm-id>                   # Skip confirmation

Options

OptionDescription
-y, --yesSkip confirmation prompts
-r, --recursiveRecursively delete all children

Examples

# Delete current HEAD VM
vers kill

# Delete a specific VM
vers kill vm-123abc

# Delete multiple VMs at once
vers kill my-dev-vm my-test-vm vm-456def

# Delete a VM and its children
vers kill -r vm-with-children

# Delete without confirmation
vers kill -y vm-123abc

# Delete everything
vers kill $(vers status -q)

HEAD cleanup

When you delete the VM that HEAD points to, HEAD is cleared automatically:
vers kill vm-current
 VM 'vm-current' deleted successfully
HEAD cleared (VM was deleted)

Errors

VM with children

vers kill vm-parent
Cannot delete VM - it has child VMs that would be orphaned.

To delete this VM and all its children, use the --recursive (-r) flag:
  vers kill vm-parent -r

Mixed results across multiple targets

For multiple VMs, the command reports each outcome and exits non-zero if any failed:
vers kill vm-1 vm-2 vm-3
Processing 3 VMs...
 VM 'vm-1' deleted successfully
 FAILED to resolve VM 'vm-2': not found
 VM 'vm-3' deleted successfully

Summary: 2 VMs succeeded, 1 VMs failed

Prerequisites

  • VMs must be owned by your organization.
  • Recursive deletion requires ownership of every child in the tree.

Common Patterns

Nuke everything

vers kill -y $(vers status -q)

Clean up paused VMs only

vers kill -y $(vers status --format json | jq -r '.[] | select(.state == "Paused") | .vm_id')

Clean slate + fresh start

vers kill -y $(vers status -q)
vers run --vm-alias fresh

Destroy an experiment without touching its parent

# Created earlier: vers branch main-vm --vm-alias experiment
vers kill -y experiment   # main-vm untouched

See also

  • vers status — list VMs before or after deletion
  • vers run — start a fresh VM
  • vers commit — snapshot before deleting if you might want the state back