diff --git a/Ring/jamiNotificationExtension/Adapter.mm b/Ring/jamiNotificationExtension/Adapter.mm
index 4e310d8..b47264a 100644
--- a/Ring/jamiNotificationExtension/Adapter.mm
+++ b/Ring/jamiNotificationExtension/Adapter.mm
@@ -126,6 +126,15 @@
             }
         }));
 
+    confHandlers.insert(exportable_callback<ConversationSignal::ConversationCloned>(
+        [weakDelegate = Adapter.delegate](const std::string& account_id) {
+            id<AdapterDelegate> delegate = weakDelegate;
+            if (delegate) {
+                NSString* accountId = [NSString stringWithUTF8String:account_id.c_str()];
+                [delegate conversationClonedWithAccountId:accountId];
+            }
+        }));
+
     confHandlers.insert(exportable_callback<ConversationSignal::ConversationRequestReceived>([weakDelegate = Adapter.delegate](const std::string& accountId, const std::string& conversationId, std::map<std::string, std::string> metadata) {
         id<AdapterDelegate> delegate = weakDelegate;
         if (delegate) {
@@ -238,6 +247,10 @@
             // this value is not a PeerConnectionRequest
             // check if it a TrustRequest
             auto conversationRequest = unpacked.get().as<dht::TrustRequest>();
+            if (conversationRequest.confirm) {
+                // request confirmation. We need to wait for conversation to clone
+                return @{@"": @"application/clone"};
+            }
             if (!conversationRequest.conversationId.empty()) {
                 if (conversationRequest.service == "cx.ring") {
                     // return git message type to start daemon
