diff --git a/CommandListener.cpp b/CommandListener.cpp
index b66f7cb..72794ae 100644
--- a/CommandListener.cpp
+++ b/CommandListener.cpp
@@ -113,23 +113,55 @@
     if (!strcmp(argv[1], "list")) {
         return vm->listVolumes(cli);
     } else if (!strcmp(argv[1], "debug")) {
-        vm->setDebug(true);
+        if (argc != 3 || (argc == 3 && (strcmp(argv[2], "off") && strcmp(argv[2], "on")))) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume debug <off/on>", false);
+            return 0;
+        }
+        vm->setDebug(!strcmp(argv[2], "on") ? true : false);
     } else if (!strcmp(argv[1], "mount")) {
+        if (argc != 3) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume mount <path>", false);
+            return 0;
+        }
         rc = vm->mountVolume(argv[2]);
     } else if (!strcmp(argv[1], "unmount")) {
+        if (argc < 3 || argc > 4 || (argc == 4 && strcmp(argv[3], "force"))) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume unmount <path> [force]", false);
+            return 0;
+        }
+
         bool force = false;
         if (argc >= 4 && !strcmp(argv[3], "force")) {
             force = true;
         }
         rc = vm->unmountVolume(argv[2], force);
     } else if (!strcmp(argv[1], "format")) {
+        if (argc != 3) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError, "Usage: volume format <path>", false);
+            return 0;
+        }
         rc = vm->formatVolume(argv[2]);
     } else if (!strcmp(argv[1], "share")) {
+        if (argc != 4) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError,
+                    "Usage: volume share <path> <method>", false);
+            return 0;
+        }
         rc = vm->shareVolume(argv[2], argv[3]);
     } else if (!strcmp(argv[1], "unshare")) {
+        if (argc != 4) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError,
+                    "Usage: volume unshare <path> <method>", false);
+            return 0;
+        }
         rc = vm->unshareVolume(argv[2], argv[3]);
     } else if (!strcmp(argv[1], "shared")) {
         bool enabled = false;
+        if (argc != 4) {
+            cli->sendMsg(ResponseCode::CommandSyntaxError,
+                    "Usage: volume shared <path> <method>", false);
+            return 0;
+        }
 
         if (vm->shareEnabled(argv[2], argv[3], &enabled)) {
             cli->sendMsg(
