diff --git a/lib/tunnelbroker/use-peer-to-peer-message-handler.js b/lib/tunnelbroker/use-peer-to-peer-message-handler.js
--- a/lib/tunnelbroker/use-peer-to-peer-message-handler.js
+++ b/lib/tunnelbroker/use-peer-to-peer-message-handler.js
@@ -8,6 +8,7 @@
 import { logOutActionTypes, useLogOut } from '../actions/user-actions.js';
 import {
   useBroadcastDeviceListUpdates,
+  useBroadcastAccountDeletion,
   useGetAndUpdateDeviceListsForUsers,
 } from '../hooks/peer-list-hooks.js';
 import {
@@ -43,13 +44,22 @@
 // is already handled by the primary device
 const primaryRequestLogoutOptions = Object.freeze({ skipIdentityLogOut: true });
 
+// When re-broadcasting, we want to do it only to foreign peers
+// to avoid a vicious circle of deletion messages sent by own devices.
+const accountDeletionBroadcastOptions = Object.freeze({
+  broadcastToOwnDevices: false,
+});
+
 // handles `peerToPeerMessageTypes.ENCRYPTED_MESSAGE`
 function useHandleOlmMessageToDevice() {
   const identityContext = React.useContext(IdentityClientContext);
   invariant(identityContext, 'Identity context should be set');
 
-  const { identityClient } = identityContext;
+  const { identityClient, getAuthMetadata } = identityContext;
   const broadcastDeviceListUpdates = useBroadcastDeviceListUpdates();
+  const reBroadcastAccountDeletion = useBroadcastAccountDeletion(
+    accountDeletionBroadcastOptions,
+  );
   const allPeerDevices = useSelector(getAllPeerDevices);
 
   const dispatchActionPromise = useDispatchActionPromise();
@@ -92,6 +102,25 @@
         userActionMessage.type === userActionsP2PMessageTypes.DM_OPERATION
       ) {
         await processDMOperation(userActionMessage.op);
+      } else if (
+        userActionMessage.type === userActionsP2PMessageTypes.ACCOUNT_DELETION
+      ) {
+        const { userID: thisUserID } = await getAuthMetadata();
+        if (!thisUserID) {
+          return;
+        }
+        // own devices re-broadcast account deletion to foreign peer devices
+        if (senderInfo.userID === thisUserID) {
+          await reBroadcastAccountDeletion();
+          // we treat account deletion the same way as primary-device-requested
+          // logout
+          void dispatchActionPromise(
+            logOutActionTypes,
+            primaryDeviceRequestedLogOut(),
+          );
+        } else {
+          // TODO: update peer list
+        }
       } else {
         console.warn(
           'Unsupported P2P user action message:',
@@ -103,9 +132,11 @@
       allPeerDevices,
       broadcastDeviceListUpdates,
       dispatchActionPromise,
+      getAuthMetadata,
       identityClient,
       primaryDeviceRequestedLogOut,
       processDMOperation,
+      reBroadcastAccountDeletion,
     ],
   );
 }