How to Disable “Use Automatic Checkpoints” by Default for New Hyper-V VMs in Windows 10 via PowerShell/Registry


1 views

Since a recent Windows 10 Insider update (build 20H2 or later), Microsoft changed the default checkpoint behavior for new Hyper-V virtual machines. Unlike Windows Server where this remains disabled, Windows 10 now enables "Use automatic checkpoints" by default under VM Settings > Checkpoints.

Automatic checkpoints can:

  • Create performance overhead during VM operations
  • Generate unnecessary disk I/O during development
  • Occupy storage space with unwanted restore points
  • Interfere with clean state testing scenarios

To disable this globally before VM creation:

# Set default checkpoint type to None for new VMs
Set-VMHost -VirtualMachinePath "C:\Hyper-V" -VirtualMachineMigrationAuthenticationType Kerberos -CheckpointType None

For existing VMs:

Get-VM | Where-Object {$_.CheckpointType -eq "Production"} | Set-VM -CheckpointType None

Create/modify this DWORD value:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization]
"DefaultCheckpointType"=dword:00000000

Valid values:

  • 0 = None (disabled)
  • 1 = Production
  • 2 = Standard

After applying changes:

# Check host default setting
Get-VMHost | Select-Object CheckpointType

# Verify VM configuration
Get-VM | Select-Object Name, CheckpointType

Create a template VM with disabled checkpoints, then clone:

# Export template VM
Export-VM -Name "TemplateVM" -Path "C:\VM_Templates"

# Import with new name
Import-VM -Path "C:\VM_Templates\TemplateVM\Virtual Machines\GUID" -Copy -GenerateNewId

Disabling this setting:

  • Does not affect manually created checkpoints
  • Won't remove existing automatic checkpoints (use Remove-VMSnapshot)
  • May improve VM performance during intensive I/O operations

Since Windows 10 build 1809, Microsoft enabled automatic checkpoints by default for new Hyper-V VMs - a behavior that differs from Windows Server. This can be problematic for developers who:

  • Prefer manual checkpoint control
  • Want to conserve disk space
  • Need consistent behavior across environments

You can modify the default behavior through the registry before creating new VMs:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\VirtualMachine]
"DefaultAutoCheckpointsEnabled"=dword:00000000

To apply this via PowerShell:

New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\VirtualMachine" 
-Name "DefaultAutoCheckpointsEnabled" -Value 0 -PropertyType DWORD -Force

When creating VMs programmatically, specify the checkpoint behavior:

New-VM -Name "DevVM" -MemoryStartupBytes 4GB -NewVHDPath "C:\VMs\DevVM.vhdx" -NewVHDSizeBytes 40GB 
-SwitchName "External Switch" -AutomaticCheckpointsEnabled $false

For VMs already created, disable automatic checkpoints with:

Get-VM | Set-VM -AutomaticCheckpointsEnabled $false

Or for specific VMs:

Set-VM -Name "TestVM" -AutomaticCheckpointsEnabled $false

For enterprise environments, consider Group Policy:

Computer Configuration -> Administrative Templates -> Windows Components -> Hyper-V -> VM Settings
Set "Turn off automatic checkpoints" to Enabled

Confirm the setting took effect with:

Get-VM | Select Name, AutomaticCheckpointsEnabled

Or check a specific VM:

(Get-VM -Name "DevVM").AutomaticCheckpointsEnabled