diff --git a/libweave/src/commands/command_definition_unittest.cc b/libweave/src/commands/command_definition_unittest.cc
index abb5d62..158d43d 100644
--- a/libweave/src/commands/command_definition_unittest.cc
+++ b/libweave/src/commands/command_definition_unittest.cc
@@ -62,7 +62,6 @@
   chromeos::ErrorPtr error;
   ASSERT_FALSE(visibility.FromString("cloud,all", &error));
   EXPECT_EQ("invalid_parameter_value", error->GetCode());
-  EXPECT_EQ("Invalid command visibility value 'all'", error->GetMessage());
 }
 
 TEST(CommandVisibility, ToString) {
diff --git a/libweave/src/commands/command_dictionary_unittest.cc b/libweave/src/commands/command_dictionary_unittest.cc
index 5348777..7dd3526 100644
--- a/libweave/src/commands/command_dictionary_unittest.cc
+++ b/libweave/src/commands/command_dictionary_unittest.cc
@@ -107,14 +107,12 @@
   auto json = CreateDictionaryValue("{'robot':{'jump':0}}");
   EXPECT_FALSE(dict.LoadCommands(*json, "robotd", nullptr, &error));
   EXPECT_EQ("type_mismatch", error->GetCode());
-  EXPECT_EQ("Expecting an object for command 'jump'", error->GetMessage());
   error.reset();
 
   // Package definition is not an object.
   json = CreateDictionaryValue("{'robot':'blah'}");
   EXPECT_FALSE(dict.LoadCommands(*json, "robotd", nullptr, &error));
   EXPECT_EQ("type_mismatch", error->GetCode());
-  EXPECT_EQ("Expecting an object for package 'robot'", error->GetMessage());
   error.reset();
 
   // Invalid command definition is not an object.
@@ -122,7 +120,6 @@
       "{'robot':{'jump':{'parameters':{'flip':0},'results':{}}}}");
   EXPECT_FALSE(dict.LoadCommands(*json, "robotd", nullptr, &error));
   EXPECT_EQ("invalid_object_schema", error->GetCode());
-  EXPECT_EQ("Invalid definition for command 'robot.jump'", error->GetMessage());
   EXPECT_NE(nullptr, error->GetInnerError());  // Must have additional info.
   error.reset();
 
@@ -130,8 +127,6 @@
   json = CreateDictionaryValue("{'robot':{'':{'parameters':{},'results':{}}}}");
   EXPECT_FALSE(dict.LoadCommands(*json, "robotd", nullptr, &error));
   EXPECT_EQ("invalid_command_name", error->GetCode());
-  EXPECT_EQ("Unnamed command encountered in package 'robot'",
-            error->GetMessage());
   error.reset();
 }
 
@@ -165,10 +160,6 @@
       CreateDictionaryValue("{'base':{'jump':{'parameters':{},'results':{}}}}");
   EXPECT_FALSE(dict.LoadCommands(*json2, "robotd", &base_dict, &error));
   EXPECT_EQ("invalid_command_name", error->GetCode());
-  EXPECT_EQ(
-      "The name of custom command 'jump' in package 'base' must start "
-      "with '_'",
-      error->GetMessage());
   error.reset();
 
   // If the command starts with "_", then it's Ok.
@@ -202,14 +193,8 @@
   })");
   EXPECT_FALSE(dict.LoadCommands(*json2, "robotd", &base_dict, &error));
   EXPECT_EQ("invalid_object_schema", error->GetCode());
-  EXPECT_EQ("Invalid definition for command 'base.reboot'",
-            error->GetMessage());
   EXPECT_EQ("invalid_parameter_definition", error->GetInnerError()->GetCode());
-  EXPECT_EQ("Error in definition of property 'delay'",
-            error->GetInnerError()->GetMessage());
   EXPECT_EQ("param_type_changed", error->GetFirstError()->GetCode());
-  EXPECT_EQ("Redefining a property of type integer as string",
-            error->GetFirstError()->GetMessage());
   error.reset();
 
   auto json3 = CreateDictionaryValue(R"({
@@ -222,15 +207,9 @@
   })");
   EXPECT_FALSE(dict.LoadCommands(*json3, "robotd", &base_dict, &error));
   EXPECT_EQ("invalid_object_schema", error->GetCode());
-  EXPECT_EQ("Invalid definition for command 'base.reboot'",
-            error->GetMessage());
   // TODO(antonm): remove parameter from error below and use some generic.
   EXPECT_EQ("invalid_parameter_definition", error->GetInnerError()->GetCode());
-  EXPECT_EQ("Error in definition of property 'version'",
-            error->GetInnerError()->GetMessage());
   EXPECT_EQ("param_type_changed", error->GetFirstError()->GetCode());
-  EXPECT_EQ("Redefining a property of type integer as string",
-            error->GetFirstError()->GetMessage());
   error.reset();
 }
 
diff --git a/libweave/src/commands/command_instance_unittest.cc b/libweave/src/commands/command_instance_unittest.cc
index 43465c3..7f00176 100644
--- a/libweave/src/commands/command_instance_unittest.cc
+++ b/libweave/src/commands/command_instance_unittest.cc
@@ -142,7 +142,6 @@
                                             dict_, nullptr, &error);
   EXPECT_EQ(nullptr, instance.get());
   EXPECT_EQ("json_object_expected", error->GetCode());
-  EXPECT_EQ("Command instance is not a JSON object", error->GetMessage());
 }
 
 TEST_F(CommandInstanceTest, FromJson_NameMissing) {
@@ -152,7 +151,6 @@
                                             dict_, nullptr, &error);
   EXPECT_EQ(nullptr, instance.get());
   EXPECT_EQ("parameter_missing", error->GetCode());
-  EXPECT_EQ("Command name is missing", error->GetMessage());
 }
 
 TEST_F(CommandInstanceTest, FromJson_UnknownCommand) {
@@ -162,7 +160,6 @@
                                             dict_, nullptr, &error);
   EXPECT_EQ(nullptr, instance.get());
   EXPECT_EQ("invalid_command_name", error->GetCode());
-  EXPECT_EQ("Unknown command received: robot.scream", error->GetMessage());
 }
 
 TEST_F(CommandInstanceTest, FromJson_ParamsNotObject) {
@@ -176,9 +173,7 @@
   EXPECT_EQ(nullptr, instance.get());
   auto inner = error->GetInnerError();
   EXPECT_EQ("json_object_expected", inner->GetCode());
-  EXPECT_EQ("Property 'parameters' must be a JSON object", inner->GetMessage());
   EXPECT_EQ("command_failed", error->GetCode());
-  EXPECT_EQ("Failed to validate command 'robot.speak'", error->GetMessage());
 }
 
 TEST_F(CommandInstanceTest, FromJson_ParamError) {
@@ -195,13 +190,9 @@
   EXPECT_EQ(nullptr, instance.get());
   auto first = error->GetFirstError();
   EXPECT_EQ("out_of_range", first->GetCode());
-  EXPECT_EQ("Value 20 is out of range. It must not be greater than 10",
-            first->GetMessage());
   auto inner = error->GetInnerError();
   EXPECT_EQ("invalid_parameter_value", inner->GetCode());
-  EXPECT_EQ("Invalid value for property 'volume'", inner->GetMessage());
   EXPECT_EQ("command_failed", error->GetCode());
-  EXPECT_EQ("Failed to validate command 'robot.speak'", error->GetMessage());
 }
 
 TEST_F(CommandInstanceTest, ToJson) {
diff --git a/libweave/src/commands/command_manager_unittest.cc b/libweave/src/commands/command_manager_unittest.cc
index 1a90408..06e1f6c 100644
--- a/libweave/src/commands/command_manager_unittest.cc
+++ b/libweave/src/commands/command_manager_unittest.cc
@@ -198,7 +198,6 @@
       {"foo._baz", "foo._bar", "test.cmd"},
       CommandDefinition::Visibility::GetLocal(), &error));
   EXPECT_EQ(errors::commands::kInvalidCommandName, error->GetCode());
-  EXPECT_EQ("Command 'test.cmd' is unknown", error->GetMessage());
   // The visibility state of commands shouldn't have changed.
   EXPECT_EQ(3, update_count);
   EXPECT_EQ("local", dict.FindCommand("foo._baz")->GetVisibility().ToString());
diff --git a/libweave/src/commands/object_schema_unittest.cc b/libweave/src/commands/object_schema_unittest.cc
index 1bb8e01..d1c7269 100644
--- a/libweave/src/commands/object_schema_unittest.cc
+++ b/libweave/src/commands/object_schema_unittest.cc
@@ -828,14 +828,10 @@
 
   EXPECT_FALSE(prop.ValidateValue(CreateValue("[2]").get(), &error));
   EXPECT_EQ("out_of_range", error->GetCode());
-  EXPECT_EQ("Value 2 is out of range. It must not be less than 2.3",
-            error->GetMessage());
   error.reset();
 
   EXPECT_FALSE(prop.ValidateValue(CreateValue("[4, 5, 20]").get(), &error));
   EXPECT_EQ("out_of_range", error->GetCode());
-  EXPECT_EQ("Value 20 is out of range. It must not be greater than 10.5",
-            error->GetMessage());
   error.reset();
 }
 
@@ -852,8 +848,6 @@
 
   EXPECT_FALSE(prop.ValidateValue(CreateValue("[2]").get(), &error));
   EXPECT_EQ("out_of_range", error->GetCode());
-  EXPECT_EQ("Value [2] is invalid. Expected one of [[1],[2,3],[4,5,6]]",
-            error->GetMessage());
   error.reset();
 
   EXPECT_FALSE(prop.ValidateValue(CreateValue("[2,3,4]").get(), &error));
@@ -1632,7 +1626,6 @@
   EXPECT_FALSE(obj_type.FromJson(CreateDictionaryValue(type_str).get(), nullptr,
                                  &error));
   EXPECT_EQ(errors::commands::kUnknownProperty, error->GetCode());
-  EXPECT_EQ("Unknown property 'prop3'", error->GetMessage());
   error.reset();
 
   type_str = R"({
@@ -1645,7 +1638,6 @@
   EXPECT_FALSE(obj_type.FromJson(CreateDictionaryValue(type_str).get(), nullptr,
                                  &error));
   EXPECT_EQ(errors::commands::kInvalidObjectSchema, error->GetCode());
-  EXPECT_EQ("Property 'required' must be an array", error->GetMessage());
   error.reset();
 }
 
@@ -1708,7 +1700,6 @@
   chromeos::ErrorPtr error;
   ASSERT_FALSE(value->FromJson(CreateDictionaryValue(val_json).get(), &error));
   EXPECT_EQ(errors::commands::kPropertyMissing, error->GetCode());
-  EXPECT_EQ("Required parameter missing: param1", error->GetMessage());
 }
 
 }  // namespace weave
diff --git a/libweave/src/states/state_manager_unittest.cc b/libweave/src/states/state_manager_unittest.cc
index b34d2fd..2f63c14 100644
--- a/libweave/src/states/state_manager_unittest.cc
+++ b/libweave/src/states/state_manager_unittest.cc
@@ -158,7 +158,6 @@
   ASSERT_FALSE(SetPropertyValue("", int{0}, &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNameMissing, error->GetCode());
-  EXPECT_EQ("Property name is missing", error->GetMessage());
 }
 
 TEST_F(StateManagerTest, SetPropertyValue_Error_NoPackage) {
@@ -166,8 +165,6 @@
   ASSERT_FALSE(SetPropertyValue("state_property", int{0}, &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPackageNameMissing, error->GetCode());
-  EXPECT_EQ("Package name is missing in the property name",
-            error->GetMessage());
 }
 
 TEST_F(StateManagerTest, SetPropertyValue_Error_UnknownPackage) {
@@ -175,7 +172,6 @@
   ASSERT_FALSE(SetPropertyValue("power.level", int{0}, &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode());
-  EXPECT_EQ("Unknown state property package 'power'", error->GetMessage());
 }
 
 TEST_F(StateManagerTest, SetPropertyValue_Error_UnknownProperty) {
@@ -183,7 +179,6 @@
   ASSERT_FALSE(SetPropertyValue("base.level", int{0}, &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode());
-  EXPECT_EQ("State property 'base.level' is not defined", error->GetMessage());
 }
 
 TEST_F(StateManagerTest, GetAndClearRecordedStateChanges) {
diff --git a/libweave/src/states/state_package_unittest.cc b/libweave/src/states/state_package_unittest.cc
index 74075fa..6e76062 100644
--- a/libweave/src/states/state_package_unittest.cc
+++ b/libweave/src/states/state_package_unittest.cc
@@ -211,8 +211,6 @@
   EXPECT_FALSE(package_->AddSchemaFromJson(dict.get(), &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyRedefinition, error->GetCode());
-  EXPECT_EQ("State property 'test.color' is already defined",
-            error->GetMessage());
 }
 
 TEST_F(StatePackageTest, AddValuesFromJson_Error_Undefined) {
@@ -221,8 +219,6 @@
   EXPECT_FALSE(package_->AddValuesFromJson(dict.get(), &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode());
-  EXPECT_EQ("State property 'test.brightness' is not defined",
-            error->GetMessage());
 }
 
 TEST_F(StatePackageTest, GetPropertyValue) {
@@ -248,7 +244,6 @@
   EXPECT_TRUE(value.IsEmpty());
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode());
-  EXPECT_EQ("State property 'test.volume' is not defined", error->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Simple) {
@@ -289,13 +284,11 @@
   ASSERT_FALSE(package_->SetPropertyValue("color", int{12}, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
-  EXPECT_EQ("Unable to convert value to type 'string'", error->GetMessage());
   error.reset();
 
   ASSERT_FALSE(package_->SetPropertyValue("iso", bool{false}, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kTypeMismatch, error->GetCode());
-  EXPECT_EQ("Unable to convert value to type 'integer'", error->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_OutOfRange) {
@@ -303,8 +296,6 @@
   ASSERT_FALSE(package_->SetPropertyValue("iso", int{150}, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kOutOfRange, error->GetCode());
-  EXPECT_EQ("Value 150 is invalid. Expected one of [50,100,200,400]",
-            error->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_Object_TypeMismatch) {
@@ -315,11 +306,9 @@
   ASSERT_FALSE(package_->SetPropertyValue("direction", direction, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kInvalidPropValue, error->GetCode());
-  EXPECT_EQ("Invalid value for property 'azimuth'", error->GetMessage());
   const chromeos::Error* inner = error->GetInnerError();
   EXPECT_EQ(errors::commands::kDomain, inner->GetDomain());
   EXPECT_EQ(errors::commands::kTypeMismatch, inner->GetCode());
-  EXPECT_EQ("Unable to convert value to type 'number'", inner->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_Object_OutOfRange) {
@@ -330,12 +319,9 @@
   ASSERT_FALSE(package_->SetPropertyValue("direction", direction, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kInvalidPropValue, error->GetCode());
-  EXPECT_EQ("Invalid value for property 'altitude'", error->GetMessage());
   const chromeos::Error* inner = error->GetInnerError();
   EXPECT_EQ(errors::commands::kDomain, inner->GetDomain());
   EXPECT_EQ(errors::commands::kOutOfRange, inner->GetCode());
-  EXPECT_EQ("Value 100 is out of range. It must not be greater than 90",
-            inner->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_Object_UnknownProperty) {
@@ -348,7 +334,6 @@
   ASSERT_FALSE(package_->SetPropertyValue("direction", direction, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kUnknownProperty, error->GetCode());
-  EXPECT_EQ("Unrecognized property 'spin'", error->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_Object_MissingProperty) {
@@ -359,7 +344,6 @@
   ASSERT_FALSE(package_->SetPropertyValue("direction", direction, &error));
   EXPECT_EQ(errors::commands::kDomain, error->GetDomain());
   EXPECT_EQ(errors::commands::kPropertyMissing, error->GetCode());
-  EXPECT_EQ("Required parameter missing: azimuth", error->GetMessage());
 }
 
 TEST_F(StatePackageTest, SetPropertyValue_Error_Unknown) {
@@ -367,7 +351,6 @@
   ASSERT_FALSE(package_->SetPropertyValue("volume", int{100}, &error));
   EXPECT_EQ(errors::state::kDomain, error->GetDomain());
   EXPECT_EQ(errors::state::kPropertyNotDefined, error->GetCode());
-  EXPECT_EQ("State property 'test.volume' is not defined", error->GetMessage());
 }
 
 }  // namespace weave
