diff --git a/src/commands/cloud_command_proxy_unittest.cc b/src/commands/cloud_command_proxy_unittest.cc
index 0e998ef..013769d 100644
--- a/src/commands/cloud_command_proxy_unittest.cc
+++ b/src/commands/cloud_command_proxy_unittest.cc
@@ -192,7 +192,7 @@
       *CreateDictionaryValue("{'status': 'ready'}"), nullptr));
   task_runner_.Run();
   ErrorPtr error;
-  Error::AddTo(&error, FROM_HERE, "TEST", "TEST", "TEST");
+  Error::AddTo(&error, FROM_HERE, "TEST", "TEST");
   callback.Run(error->Clone());
   task_runner_.Run();
   EXPECT_GE(task_runner_.GetClock()->Now() - started,
diff --git a/src/commands/command_instance.cc b/src/commands/command_instance.cc
index da62887..dba14c4 100644
--- a/src/commands/command_instance.cc
+++ b/src/commands/command_instance.cc
@@ -37,8 +37,7 @@
 bool ReportInvalidStateTransition(ErrorPtr* error,
                                   Command::State from,
                                   Command::State to) {
-  Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
-                     errors::commands::kInvalidState,
+  Error::AddToPrintf(error, FROM_HERE, errors::commands::kInvalidState,
                      "State switch impossible: '%s' -> '%s'",
                      EnumToString(from).c_str(), EnumToString(to).c_str());
   return false;
@@ -153,8 +152,7 @@
     // Make sure the "parameters" property is actually an object.
     const base::DictionaryValue* params_dict = nullptr;
     if (!params_value->GetAsDictionary(&params_dict)) {
-      Error::AddToPrintf(error, FROM_HERE, errors::json::kDomain,
-                         errors::json::kObjectExpected,
+      Error::AddToPrintf(error, FROM_HERE, errors::json::kObjectExpected,
                          "Property '%s' must be a JSON object",
                          commands::attributes::kCommand_Parameters);
       return params;
@@ -182,8 +180,7 @@
   // Get the command JSON object from the value.
   const base::DictionaryValue* json = nullptr;
   if (!value->GetAsDictionary(&json)) {
-    Error::AddTo(error, FROM_HERE, errors::json::kDomain,
-                 errors::json::kObjectExpected,
+    Error::AddTo(error, FROM_HERE, errors::json::kObjectExpected,
                  "Command instance is not a JSON object");
     command_id->clear();
     return instance;
@@ -196,15 +193,14 @@
   // Get the command name from 'name' property.
   std::string command_name;
   if (!json->GetString(commands::attributes::kCommand_Name, &command_name)) {
-    Error::AddTo(error, FROM_HERE, errors::commands::kDomain,
-                 errors::commands::kPropertyMissing, "Command name is missing");
+    Error::AddTo(error, FROM_HERE, errors::commands::kPropertyMissing,
+                 "Command name is missing");
     return instance;
   }
 
   auto parameters = GetCommandParameters(json, error);
   if (!parameters) {
-    Error::AddToPrintf(error, FROM_HERE, errors::commands::kDomain,
-                       errors::commands::kCommandFailed,
+    Error::AddToPrintf(error, FROM_HERE, errors::commands::kCommandFailed,
                        "Failed to validate command '%s'", command_name.c_str());
     return instance;
   }
diff --git a/src/commands/command_instance_unittest.cc b/src/commands/command_instance_unittest.cc
index 8d70b8b..803d5b4 100644
--- a/src/commands/command_instance_unittest.cc
+++ b/src/commands/command_instance_unittest.cc
@@ -143,7 +143,7 @@
   instance->SetID("testId");
 
   ErrorPtr error;
-  Error::AddTo(&error, FROM_HERE, "DOMAIN", "CODE", "MESSAGE");
+  Error::AddTo(&error, FROM_HERE, "CODE", "MESSAGE");
   instance->Abort(error.get(), nullptr);
 
   json->MergeDictionary(CreateDictionaryValue(R"({
diff --git a/src/commands/schema_constants.cc b/src/commands/schema_constants.cc
index 34d6db8..732cf44 100644
--- a/src/commands/schema_constants.cc
+++ b/src/commands/schema_constants.cc
@@ -8,7 +8,6 @@
 
 namespace errors {
 namespace commands {
-const char kDomain[] = "command_schema";
 
 const char kTypeMismatch[] = "type_mismatch";
 const char kInvalidPropValue[] = "invalid_parameter_value";
diff --git a/src/commands/schema_constants.h b/src/commands/schema_constants.h
index 9199480..360079a 100644
--- a/src/commands/schema_constants.h
+++ b/src/commands/schema_constants.h
@@ -9,8 +9,6 @@
 
 namespace errors {
 namespace commands {
-// Error domain for command schema description.
-extern const char kDomain[];
 
 // Common command definition error codes.
 extern const char kTypeMismatch[];
