diff --git a/lib/components/debug-logs-context-provider.react.js b/lib/components/debug-logs-context-provider.react.js
--- a/lib/components/debug-logs-context-provider.react.js
+++ b/lib/components/debug-logs-context-provider.react.js
@@ -3,6 +3,8 @@
 import * as React from 'react';
 
 import { type DebugLog, DebugLogsContext } from './debug-logs-context.js';
+import { useIsCurrentUserStaff } from '../shared/staff-utils.js';
+import { isDev } from '../utils/dev-utils.js';
 
 type Props = {
   +children: React.Node,
@@ -10,9 +12,13 @@
 
 function DebugLogsContextProvider(props: Props): React.Node {
   const [logs, setLogs] = React.useState<$ReadOnlyArray<DebugLog>>([]);
+  const isCurrentUserStaff = useIsCurrentUserStaff();
 
   const addLog = React.useCallback(
-    (title: string, message: string) =>
+    (title: string, message: string) => {
+      if (!isCurrentUserStaff && !isDev) {
+        return;
+      }
       setLogs(prevLogs => [
         ...prevLogs,
         {
@@ -20,8 +26,9 @@
           message,
           timestamp: Date.now(),
         },
-      ]),
-    [],
+      ]);
+    },
+    [isCurrentUserStaff],
   );
 
   const clearLogs = React.useCallback(() => setLogs([]), []);
diff --git a/lib/shared/dm-ops/process-dm-ops.js b/lib/shared/dm-ops/process-dm-ops.js
--- a/lib/shared/dm-ops/process-dm-ops.js
+++ b/lib/shared/dm-ops/process-dm-ops.js
@@ -15,6 +15,7 @@
 } from './dm-op-utils.js';
 import { useProcessBlobHolders } from '../../actions/holder-actions.js';
 import { processNewUserIDsActionType } from '../../actions/user-actions.js';
+import { useDebugLogs } from '../../components/debug-logs-context.js';
 import { useDispatchWithMetadata } from '../../hooks/ops-hooks.js';
 import {
   usePeerToPeerCommunication,
@@ -30,7 +31,6 @@
 import type { OutboundP2PMessage } from '../../types/sqlite-types.js';
 import { extractUserIDsFromPayload } from '../../utils/conversion-utils.js';
 import { useSelector, useDispatch } from '../../utils/redux-utils.js';
-import { useStaffAlert } from '../staff-utils.js';
 
 function useProcessDMOperation(): (
   dmOperationSpecification: DMOperationSpecification,
@@ -44,7 +44,7 @@
 
   const dispatch = useDispatch();
 
-  const { showAlertToStaff } = useStaffAlert();
+  const { addLog } = useDebugLogs();
 
   return React.useCallback(
     async (
@@ -53,7 +53,7 @@
     ) => {
       const { viewerID, ...restUtilities } = baseUtilities;
       if (!viewerID) {
-        showAlertToStaff(
+        addLog(
           'Ignored DMOperation because logged out',
           JSON.stringify(dmOperationSpecification.op),
         );
@@ -127,7 +127,7 @@
       }
 
       if (!dmOpSpecs[dmOp.type].operationValidator.is(dmOp)) {
-        showAlertToStaff(
+        addLog(
           "Ignoring operation because it doesn't pass validation",
           JSON.stringify(dmOp),
         );
@@ -142,7 +142,7 @@
 
       if (!processingCheckResult.isProcessingPossible) {
         if (processingCheckResult.reason.type === 'invalid') {
-          showAlertToStaff(
+          addLog(
             'Ignoring operation because it is invalid',
             JSON.stringify(dmOp),
           );
@@ -174,12 +174,12 @@
         }
 
         if (condition?.type) {
-          showAlertToStaff(
+          addLog(
             `Adding operation to the ${condition.type} queue`,
             JSON.stringify(dmOp),
           );
         } else {
-          showAlertToStaff(
+          addLog(
             'Operation should be added to a queue but its type is missing',
             JSON.stringify(dmOp),
           );
@@ -251,10 +251,10 @@
       );
     },
     [
+      addLog,
       baseUtilities,
       processBlobHolders,
       dispatchWithMetadata,
-      showAlertToStaff,
       createMessagesToPeersFromDMOp,
       confirmPeerToPeerMessage,
       dispatch,
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
@@ -9,6 +9,7 @@
 import { removePeerUsersActionType } from '../actions/aux-user-actions.js';
 import { invalidateTunnelbrokerDeviceTokenActionType } from '../actions/tunnelbroker-actions.js';
 import { logOutActionTypes, useBaseLogOut } from '../actions/user-actions.js';
+import { useDebugLogs } from '../components/debug-logs-context.js';
 import { usePeerOlmSessionsCreatorContext } from '../components/peer-olm-session-creator-provider.react.js';
 import {
   useBroadcastDeviceListUpdates,
@@ -23,7 +24,6 @@
 import { dmOperationSpecificationTypes } from '../shared/dm-ops/dm-op-utils.js';
 import { useProcessDMOperation } from '../shared/dm-ops/process-dm-ops.js';
 import { IdentityClientContext } from '../shared/identity-client-context.js';
-import { useStaffAlert } from '../shared/staff-utils.js';
 import type { DeviceOlmInboundKeys } from '../types/identity-service-types.js';
 import {
   peerToPeerMessageTypes,
@@ -199,7 +199,7 @@
   const resendPeerToPeerMessages = useResendPeerToPeerMessages();
   const { createOlmSessionsWithUser } = usePeerOlmSessionsCreatorContext();
 
-  const { showAlertToStaff } = useStaffAlert();
+  const { addLog } = useDebugLogs();
 
   return React.useCallback(
     async (message: PeerToPeerMessage, messageID: string) => {
@@ -222,8 +222,8 @@
               `${senderDeviceID}: No keys for the device, ` +
               `session version: ${sessionVersion}`,
           );
-          showAlertToStaff(
-            'Error creating inbound session with device ',
+          addLog(
+            'Error creating inbound session with device',
             `${senderDeviceID}: No keys for the device, ` +
               `session version: ${sessionVersion}`,
           );
@@ -279,7 +279,7 @@
                 `${senderDeviceID}: ${errorMessage}, ` +
                 `session version: ${sessionVersion}`,
             );
-            showAlertToStaff(
+            addLog(
               'Error creating inbound session with device ',
               `${senderDeviceID}: ${errorMessage}, ` +
                 `session version: ${sessionVersion}`,
@@ -337,8 +337,8 @@
             'Error decrypting message from device ' +
               `${message.senderInfo.deviceID}: ${errorMessage}`,
           );
-          showAlertToStaff(
-            'Error decrypting message from device  ',
+          addLog(
+            'Error decrypting message from device',
             `${message.senderInfo.deviceID}: ${errorMessage}`,
           );
 
@@ -448,6 +448,7 @@
       }
     },
     [
+      addLog,
       broadcastDeviceListUpdates,
       createOlmSessionsWithUser,
       dispatch,
@@ -458,7 +459,6 @@
       identityClient,
       olmAPI,
       resendPeerToPeerMessages,
-      showAlertToStaff,
       sqliteAPI,
     ],
   );