diff --git a/local_agent/local_agent.py b/local_agent/local_agent.py
index ae99195..25398d1 100644
--- a/local_agent/local_agent.py
+++ b/local_agent/local_agent.py
@@ -50,7 +50,6 @@
     '~/.config/google/local_agent_config.ini')
 _START_TEST_SUITE_METHOD = 'startTestSuite'
 _END_TEST_SUITE_METHOD = 'endTestSuite'
-_COMMISSION_DEVICE_METHOD = 'commissionDevice'
 _USER_CONFIG_ROOT_KEY = 'ServerConfig'
 _USER_CONFIG_AMS_HOST = 'AMS_HOST'
 _USER_CONFIG_AMS_PORT = 'AMS_PORT'
@@ -68,8 +67,6 @@
     START_TEST_SUITE = enum.auto()
     END_TEST_SUITE = enum.auto()
     DEVICE_QUERY_CONTROL = enum.auto()
-    COMMISSION_DEVICE = enum.auto()
-
 
 # ======================== Module level functions ========================== #
 def rpc_request_type(method: str) -> RpcRequestType:
@@ -85,8 +82,6 @@
         return RpcRequestType.START_TEST_SUITE
     elif method == _END_TEST_SUITE_METHOD:
         return RpcRequestType.END_TEST_SUITE
-    elif method == _COMMISSION_DEVICE_METHOD:
-        return RpcRequestType.COMMISSION_DEVICE
     else:
         return RpcRequestType.DEVICE_QUERY_CONTROL
 # ========================================================================== #
@@ -328,9 +323,6 @@
             elif req_type == RpcRequestType.DEVICE_QUERY_CONTROL:
                 resp = self._translator.dispatch_to_cmd_handler(rpc_request)
 
-            elif req_type == RpcRequestType.COMMISSION_DEVICE:
-                resp = self._translator.commission_device(rpc_request)
-
             else:
                 raise errors.InvalidRPCError(
                     f'Invalid RPC request type {req_type}.')
diff --git a/local_agent/tests/unit_tests/test_local_agent.py b/local_agent/tests/unit_tests/test_local_agent.py
index b2d97a6..184685b 100644
--- a/local_agent/tests/unit_tests/test_local_agent.py
+++ b/local_agent/tests/unit_tests/test_local_agent.py
@@ -42,7 +42,6 @@
 _FAKE_ARTIFACTS_DIR = 'fake-artifacts-dir'
 _START_TEST_SUITE = 'startTestSuite'
 _END_TEST_SUITE = 'endTestSuite'
-_COMMISSION_DEVICE = 'commissionDevice'
 _LOCK_DEVICE = 'setLock'
 _FAKE_CONTROLLER_PACKAGE = 'FAKE_CONTROLLER_PACKAGE'
 #############################################################################
@@ -613,18 +612,6 @@
         self.assertEqual(_FAKE_RPC_RESPONSE, rpc_response)
         mock_dispatch.assert_called_once_with(fake_rpc_request)
 
-    @mock.patch.object(
-        translation_layer.TranslationLayer, 'commission_device')
-    def test_handle_rpc_request_commission_device(self, mock_commission):
-        """Verifies handle_rpc_request to commission device on success."""
-        mock_commission.return_value = _FAKE_RPC_RESPONSE
-        fake_rpc_request = {'method': _COMMISSION_DEVICE}
-
-        rpc_response = self.proc._handle_rpc_request(fake_rpc_request)
-
-        self.assertEqual(_FAKE_RPC_RESPONSE, rpc_response)
-        mock_commission.assert_called_once_with(fake_rpc_request)
-
     @mock.patch.object(local_agent, 'rpc_request_type', return_value='')
     def test_handle_rpc_request_invalid_rpc_type(self, mock_req_type):
         """Verifies handle_rpc_request on failure with invalid RPC type."""
diff --git a/local_agent/tests/unit_tests/test_translation_layer.py b/local_agent/tests/unit_tests/test_translation_layer.py
index f5871f1..ddfa844 100644
--- a/local_agent/tests/unit_tests/test_translation_layer.py
+++ b/local_agent/tests/unit_tests/test_translation_layer.py
@@ -28,10 +28,8 @@
 _FAKE_DEVICE_TYPE = 'fake-device-type'
 _FAKE_DEVICE_ID = 'fake-device-id'
 _FAKE_CAPABILITY = 'fake-device-capability'
-_FAKE_PAIRING_CODE = 'fake-pairing-code'
 _SET_ON = 'setOn'
 _SET_LOCK = 'setLock'
-_COMMISSION_DEVICE = 'commissionDevice'
 ##############################################################################
 
 
@@ -220,21 +218,6 @@
         self.mock_client.send_rpc_response.assert_called_once()
         self.assertTrue(self.translator.is_rpc_timeout(_FAKE_DEVICE_ID))
 
-    def test_10_commission_device_on_failure_no_pairing_code(self):
-        """Verifies commission_device on failure when pairing code not found."""
-        invalid_rpc_request = rpc_request(_COMMISSION_DEVICE, {})
-        error_msg = 'Invalid rpc command, no pairingCode in params was found.'
-        with self.assertRaisesRegex(agent_errors.InvalidRPCError, error_msg):
-            self.translator.commission_device(invalid_rpc_request)
-
-    def test_10_commission_device_on_success(self):
-        """Verifies commission_device on success with pairing code provided."""
-        valid_rpc_request = rpc_request(
-            _COMMISSION_DEVICE, {'pairingCode': _FAKE_PAIRING_CODE})
-        response = self.translator.commission_device(valid_rpc_request)
-
-        # Id is fake and it was made by `rpc_request` wrapper.
-        self.assertEqual(response, {'id': 0, 'jsonrpc': '2.0', 'result': {}})
 
 if __name__ == '__main__':
     unittest.main(failfast=True)
diff --git a/local_agent/translation_layer/translation_layer.py b/local_agent/translation_layer/translation_layer.py
index 96d7cdc..eeb02e6 100644
--- a/local_agent/translation_layer/translation_layer.py
+++ b/local_agent/translation_layer/translation_layer.py
@@ -280,26 +280,3 @@
                             'message': err_mesg}
                         self._ams_client.send_rpc_response(err_resp)
                         self._timeout_rpc.add(rpc_id)
-
-    def commission_device(self, rpc_request: Dict[str, str]) -> Dict[str, Any]:
-        """Subroutine for handling COMMISSION_DEVICE command.
-
-        Args:
-            rpc_request: JSON-RPC request.
-
-        Raises:
-            InvalidRPCError: Invalid RPC.
-
-        Returns:
-            RPC response.
-        """
-        pairing_code = rpc_request['params'].get('pairingCode')
-        if pairing_code is None:
-            raise agent_errors.InvalidRPCError(
-                'Invalid rpc command, no pairingCode in params was found.')
-
-        id = rpc_request['id']
-        #TODO(kuruk): Use this pairing code to commission a matter device.
-        logger.info(f'Completed request for {id}, pairingCode: {pairing_code}')
-
-        return {'id': id, 'jsonrpc': '2.0', 'result': {}}
