diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index 41b2bad..10f6fac 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -105,13 +105,6 @@
     )
 
 
-flags.register_validator(
-    'commission',
-    lambda value: value and len(value) == 3,
-    message=_COMMISSIONING_FLAG_USAGE_GUIDE,
-)
-
-
 def get_android_device_ready(func: Callable[..., Any]) -> Callable[..., Any]:
   """A decorator to check if an Android device can be controlled by installed apk.
 
@@ -312,11 +305,16 @@
 def _process_flags(ui_automator: UIAutomator) -> None:
   """Does specific action based on given flag values."""
   if _COMMISSION.value:
+    if len(_COMMISSION.value) != 3:
+      raise flags.IllegalFlagValueError(_COMMISSIONING_FLAG_USAGE_GUIDE)
+
     ui_automator.commission_device(*_COMMISSION.value)
+
   if _DECOMMISSION.value:
     ui_automator.decommission_device(_DECOMMISSION.value)
 
 
+# TODO(b/309745485): Type of argv should be Squence[str].
 def _main(argv) -> None:
   if argv and len(argv) > 1:
     raise app.UsageError(f'Too many command-line arguments: {argv!r}')
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 637e97b..66eba17 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -19,6 +19,7 @@
 import unittest
 from unittest import mock
 
+from absl import flags
 from absl.testing import flagsaver
 from mobly.controllers import android_device
 from mobly.controllers.android_device_lib import adb
@@ -53,7 +54,11 @@
 _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_INVALID_LENGTH = [
     _PYTHON_BIN_PATH + 'ui-automator',
     '--commission',
-    '',
+    'm5',
+]
+_FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_EMPTY_VALUE = [
+    _PYTHON_BIN_PATH + 'ui-automator',
+    '--commission',
 ]
 
 
@@ -450,25 +455,37 @@
     mock_commission_device.assert_called_once_with(
         mock.ANY, 'm5stack', '34970112332', 'Office'
     )
-    mock_exit.assert_called()
+    mock_exit.assert_called_once()
 
-  @mock.patch.object(sys.stderr, 'write', autospec=True)
-  @mock.patch.object(sys, 'exit', autospec=True)
-  def test_commission_with_cmd_invalid_arg_should_stderr(
-      self, mock_exit, mock_stderr_write
+  @flagsaver.flagsaver(
+      (ui_automator._COMMISSION, ['m5'])
+  )
+  def test_commission_with_cmd_invalid_arg_should_raise_an_error(
+      self
   ):
     with mock.patch.object(
         sys, 'argv', _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_INVALID_LENGTH
     ):
+      with self.assertRaises(flags.IllegalFlagValueError):
+        ui_automator.run()
+
+    self.mock_android_device.mbs.commissionDevice.assert_not_called()
+
+  @mock.patch.object(sys.stderr, 'write', autospec=True)
+  @mock.patch.object(sys, 'exit', autospec=True)
+  def test_commission_with_cmd_invalid_args_should_stderr(
+      self, mock_exit, mock_stderr_write
+  ):
+    with mock.patch.object(
+        sys, 'argv', _FAKE_SYS_ARGV_FOR_COMMISSIONING_WITH_EMPTY_VALUE
+    ):
       ui_automator.run()
 
     self.assertEqual(mock_stderr_write.call_count, 2)
     first_call_args = ''.join(mock_stderr_write.call_args_list[0][0])
     self.assertEqual(
         first_call_args,
-        'FATAL Flags parsing error: flag --commission=[]: Use'
-        ' --commission {DeviceName},{PairingCode},{GHARoom} to commission a'
-        ' device to google fabric on GHA.\n',
+        'FATAL Flags parsing error: Missing value for flag --commission\n',
     )
     second_call_args = ''.join(mock_stderr_write.call_args_list[1][0])
     self.assertEqual(
@@ -496,7 +513,7 @@
 
     mock_commission_device.assert_not_called()
     mock_decommission_device.assert_called_once_with(mock.ANY, 'm5stack')
-    mock_exit.assert_called()
+    mock_exit.assert_called_once()
 
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
   def test_decommission_device_raises_an_error_with_invalid_device_name(
