diff --git a/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift b/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
index 1ea6f3d331a28b66876fdecf6e429b7687c869a5..65a718dffa7c33c246de7a8b371c749433f2898b 100644
--- a/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
+++ b/Sources/XXMessengerClient/Messenger/Functions/MessengerDestroy.swift
@@ -23,6 +23,7 @@ extension MessengerDestroy {
       env.e2e.set(nil)
       env.cMix.set(nil)
       try env.fileManager.removeDirectory(env.storageDir)
+      try env.passwordStorage.remove()
     }
   }
 }
diff --git a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
index a91e32851de507ef96e354b4458228625aa352d1..36745d028934142b59912d341649e1519b435e1e 100644
--- a/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
+++ b/Tests/XXMessengerClientTests/Messenger/Functions/MessengerDestroyTests.swift
@@ -13,6 +13,7 @@ final class MessengerDestroyTests: XCTestCase {
     var didSetUD: [UserDiscovery?] = []
     var didSetE2E: [E2E?] = []
     var didSetCMix: [CMix?] = []
+    var didRemovePassword = 0
 
     var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
@@ -28,6 +29,7 @@ final class MessengerDestroyTests: XCTestCase {
     env.e2e.set = { didSetE2E.append($0) }
     env.cMix.set = { didSetCMix.append($0) }
     env.fileManager.removeDirectory = { didRemoveDirectory.append($0) }
+    env.passwordStorage.remove = { didRemovePassword += 1 }
     let destroy: MessengerDestroy = .live(env)
 
     try destroy()
@@ -38,11 +40,13 @@ final class MessengerDestroyTests: XCTestCase {
     XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
     XCTAssertNoDifference(didRemoveDirectory, [storageDir])
+    XCTAssertNoDifference(didRemovePassword, 1)
   }
 
   func testStopNetworkFollowerFailure() {
     struct Error: Swift.Error, Equatable {}
     let error = Error()
+
     var env: MessengerEnvironment = .unimplemented
     env.cMix.get = {
       var cMix: CMix = .unimplemented
@@ -79,4 +83,32 @@ final class MessengerDestroyTests: XCTestCase {
     XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
     XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
   }
+
+  func testRemovePasswordFailure() {
+    struct Error: Swift.Error, Equatable {}
+    let error = Error()
+    let storageDir = "test-storage-dir"
+    var didRemoveDirectory: [String] = []
+    var didSetUD: [UserDiscovery?] = []
+    var didSetE2E: [E2E?] = []
+    var didSetCMix: [CMix?] = []
+
+    var env: MessengerEnvironment = .unimplemented
+    env.cMix.get = { nil }
+    env.ud.set = { didSetUD.append($0) }
+    env.e2e.set = { didSetE2E.append($0) }
+    env.cMix.set = { didSetCMix.append($0) }
+    env.storageDir = storageDir
+    env.fileManager.removeDirectory = { didRemoveDirectory.append($0) }
+    env.passwordStorage.remove = { throw error }
+    let destroy: MessengerDestroy = .live(env)
+
+    XCTAssertThrowsError(try destroy()) { err in
+      XCTAssertEqual(err as? Error, error)
+    }
+    XCTAssertNoDifference(didSetUD.map { $0 == nil }, [true])
+    XCTAssertNoDifference(didSetE2E.map { $0 == nil }, [true])
+    XCTAssertNoDifference(didSetCMix.map { $0 == nil }, [true])
+    XCTAssertNoDifference(didRemoveDirectory, [storageDir])
+  }
 }