diff --git a/samples/vboxwrapper/vbox_mscom_impl.cpp b/samples/vboxwrapper/vbox_mscom_impl.cpp
index 6d5d878385260f4bf093bef644171d1a5b2d26f9..4a8c099aa5db589e116ed71fbbb164a1f6c8dcbf 100644
--- a/samples/vboxwrapper/vbox_mscom_impl.cpp
+++ b/samples/vboxwrapper/vbox_mscom_impl.cpp
@@ -1544,6 +1544,8 @@ int VBOX_VM::create_snapshot(double elapsed_time) {
     CComPtr<IConsole> pConsole;
     CComPtr<IProgress> pProgress;
 
+    if (disable_automatic_checkpoints) return BOINC_SUCCESS;
+
     vboxlog_msg("Creating new snapshot for VM.");
 
     // Pause VM - Try and avoid the live snapshot and trigger an online
@@ -1646,6 +1648,8 @@ int VBOX_VM::restore_snapshot() {
     CComPtr<ISnapshot> pSnapshot;
     CComPtr<IProgress> pProgress;
 
+    if (disable_automatic_checkpoints) return BOINC_SUCCESS;
+
     rc = m_pPrivate->m_pVirtualBox->FindMachine(CComBSTR(vm_name.c_str()), &pMachineRO);
     if (SUCCEEDED(rc)) {
         rc = pSession.CoCreateInstance(CLSID_Session);
diff --git a/samples/vboxwrapper/vbox_vboxmanage.cpp b/samples/vboxwrapper/vbox_vboxmanage.cpp
index 37b0e4e093064c1d89c3052c857a09e78716a6ef..44805be255414e716f39fcadec6f89e38cf89a8e 100644
--- a/samples/vboxwrapper/vbox_vboxmanage.cpp
+++ b/samples/vboxwrapper/vbox_vboxmanage.cpp
@@ -1140,7 +1140,9 @@ int VBOX_VM::create_snapshot(double elapsed_time) {
     string command;
     string output;
     char buf[256];
-    int retval;
+    int retval = BOINC_SUCCESS;
+
+    if (disable_automatic_checkpoints) return BOINC_SUCCESS;
 
     vboxlog_msg("Creating new snapshot for VM.");
 
@@ -1253,6 +1255,8 @@ int VBOX_VM::restore_snapshot() {
     string output;
     int retval = BOINC_SUCCESS;
 
+    if (disable_automatic_checkpoints) return BOINC_SUCCESS;
+
     vboxlog_msg("Restore from previously saved snapshot.");
 
     command = "snapshot \"" + vm_name + "\" ";
diff --git a/samples/vboxwrapper/vboxjob.cpp b/samples/vboxwrapper/vboxjob.cpp
index 6d86dc9baeec3a1a0817b938f889a888b9a2f856..79b4e95ee50e5f110a790ebb80f28b1392cae49d 100644
--- a/samples/vboxwrapper/vboxjob.cpp
+++ b/samples/vboxwrapper/vboxjob.cpp
@@ -112,11 +112,12 @@ void VBOX_JOB::clear() {
     enable_floppyio = false;
     enable_cache_disk = false;
     enable_isocontextualization = false;
+    enable_network = false;
+    network_bridged_mode = false;
     enable_remotedesktop = false;
     enable_gbac = false;
     enable_graphics_support = false;
-    enable_network = false;
-    network_bridged_mode = false;
+    disable_automatic_checkpoints = false;
     pf_guest_port = 0;
     pf_host_port = 0;
     port_forwards.clear();
@@ -168,6 +169,7 @@ int VBOX_JOB::parse() {
         else if (xp.parse_bool("enable_remotedesktop", enable_remotedesktop)) continue;
         else if (xp.parse_bool("enable_gbac", enable_gbac)) continue;
         else if (xp.parse_bool("enable_graphics_support", enable_graphics_support)) continue;
+        else if (xp.parse_bool("disable_automatic_checkpoints", disable_automatic_checkpoints)) continue;
         else if (xp.parse_int("pf_guest_port", pf_guest_port)) continue;
         else if (xp.parse_int("pf_host_port", pf_host_port)) continue;
         else if (xp.parse_string("copy_to_shared", str)) {
diff --git a/samples/vboxwrapper/vboxjob.h b/samples/vboxwrapper/vboxjob.h
index a8bdd7f129feee995fc79436d7398ef7e5d8ea8a..c60fdfd9e64efb2ebcec6aa1192a597e975819a8 100644
--- a/samples/vboxwrapper/vboxjob.h
+++ b/samples/vboxwrapper/vboxjob.h
@@ -102,6 +102,9 @@ public:
     // http://boinc.berkeley.edu/trac/wiki/GraphicsApi#File
     bool enable_graphics_support;
 
+    // whether to disable automatic checkpoint support
+    bool disable_automatic_checkpoints;
+
     // maximum amount of wall-clock time this VM is allowed to run before
     // considering itself done.
     double job_duration;
diff --git a/samples/vboxwrapper/vboxwrapper.cpp b/samples/vboxwrapper/vboxwrapper.cpp
index 69c16adec073a54049eb3efad70ed628e8e282b1..5d3b7f701daf1c7032963d110236be59405408d5 100644
--- a/samples/vboxwrapper/vboxwrapper.cpp
+++ b/samples/vboxwrapper/vboxwrapper.cpp
@@ -689,7 +689,7 @@ int main(int argc, char** argv) {
         return EXIT_TIME_LIMIT_EXCEEDED;
     }
 
-    retval = pVM->run((current_cpu_time > 0));
+    retval = pVM->run(current_cpu_time > 0);
     if (retval) {
         // All 'failure to start' errors are unrecoverable by default
         bool   unrecoverable_error = true;