diff --git a/src/access_black_list_manager.h b/src/access_black_list_manager.h
index 1184f16..eb3f06a 100644
--- a/src/access_black_list_manager.h
+++ b/src/access_black_list_manager.h
@@ -31,9 +31,6 @@
                      const std::vector<uint8_t>& app_id,
                      const base::Time& expiration,
                      const DoneCallback& callback) = 0;
-  virtual void Unblock(const std::vector<uint8_t>& user_id,
-                       const std::vector<uint8_t>& app_id,
-                       const DoneCallback& callback) = 0;
   virtual bool IsBlocked(const std::vector<uint8_t>& user_id,
                          const std::vector<uint8_t>& app_id) const = 0;
   virtual std::vector<Entry> GetEntries() const = 0;
diff --git a/src/access_black_list_manager_impl.cc b/src/access_black_list_manager_impl.cc
index a57ca36..3a54073 100644
--- a/src/access_black_list_manager_impl.cc
+++ b/src/access_black_list_manager_impl.cc
@@ -124,22 +124,6 @@
   Save(callback);
 }
 
-void AccessBlackListManagerImpl::Unblock(const std::vector<uint8_t>& user_id,
-                                         const std::vector<uint8_t>& app_id,
-                                         const DoneCallback& callback) {
-  if (!entries_.erase(std::make_pair(user_id, app_id))) {
-    if (!callback.is_null()) {
-      ErrorPtr error;
-      Error::AddTo(&error, FROM_HERE, "entry_not_found", "Unknown entry");
-      callback.Run(std::move(error));
-    }
-    return;
-  }
-  // Iterating is OK as Save below is more expensive.
-  RemoveExpired();
-  Save(callback);
-}
-
 bool AccessBlackListManagerImpl::IsBlocked(
     const std::vector<uint8_t>& user_id,
     const std::vector<uint8_t>& app_id) const {
diff --git a/src/access_black_list_manager_impl.h b/src/access_black_list_manager_impl.h
index 646d748..e41a93a 100644
--- a/src/access_black_list_manager_impl.h
+++ b/src/access_black_list_manager_impl.h
@@ -29,9 +29,6 @@
              const std::vector<uint8_t>& app_id,
              const base::Time& expiration,
              const DoneCallback& callback) override;
-  void Unblock(const std::vector<uint8_t>& user_id,
-               const std::vector<uint8_t>& app_id,
-               const DoneCallback& callback) override;
   bool IsBlocked(const std::vector<uint8_t>& user_id,
                  const std::vector<uint8_t>& app_id) const override;
   std::vector<Entry> GetEntries() const override;
diff --git a/src/access_black_list_manager_impl_unittest.cc b/src/access_black_list_manager_impl_unittest.cc
index 0e7c0e0..0f21c3e 100644
--- a/src/access_black_list_manager_impl_unittest.cc
+++ b/src/access_black_list_manager_impl_unittest.cc
@@ -115,23 +115,6 @@
                   }));
 }
 
-TEST_F(AccessBlackListManagerImplTest, Unblock) {
-  EXPECT_CALL(config_store_, SaveSettings("black_list", _, _))
-      .WillOnce(testing::WithArgs<1, 2>(testing::Invoke(
-          [](const std::string& json, const DoneCallback& callback) {
-            EXPECT_JSON_EQ("[]", *test::CreateValue(json));
-            if (!callback.is_null())
-              callback.Run(nullptr);
-          })));
-  manager_->Unblock({1, 2, 3}, {3, 4, 5}, {});
-}
-
-TEST_F(AccessBlackListManagerImplTest, UnblockNotFound) {
-  manager_->Unblock({5, 2, 3}, {5, 4, 5}, base::Bind([](ErrorPtr error) {
-                      EXPECT_TRUE(error->HasError("entry_not_found"));
-                    }));
-}
-
 TEST_F(AccessBlackListManagerImplTest, IsBlockedFalse) {
   EXPECT_FALSE(manager_->IsBlocked({7, 7, 7}, {8, 8, 8}));
 }
diff --git a/src/test/mock_black_list_manager.h b/src/test/mock_black_list_manager.h
index f028953..6b55b86 100644
--- a/src/test/mock_black_list_manager.h
+++ b/src/test/mock_black_list_manager.h
@@ -21,10 +21,6 @@
                     const std::vector<uint8_t>&,
                     const base::Time&,
                     const DoneCallback&));
-  MOCK_METHOD3(Unblock,
-               void(const std::vector<uint8_t>&,
-                    const std::vector<uint8_t>&,
-                    const DoneCallback&));
   MOCK_CONST_METHOD2(IsBlocked,
                      bool(const std::vector<uint8_t>&,
                           const std::vector<uint8_t>&));
