diff --git a/lib/shared/dm-ops/change-thread-settings-spec.js b/lib/shared/dm-ops/change-thread-settings-spec.js
--- a/lib/shared/dm-ops/change-thread-settings-spec.js
+++ b/lib/shared/dm-ops/change-thread-settings-spec.js
@@ -8,6 +8,7 @@
   ProcessDMOperationUtilities,
 } from './dm-op-spec.js';
 import type {
+  DMBlobOperation,
   DMChangeThreadSettingsOperation,
   DMThreadSettingsChanges,
 } from '../../types/dm-ops.js';
@@ -20,6 +21,7 @@
 } from '../../types/minimally-encoded-thread-permissions-types.js';
 import { updateTypes } from '../../types/update-types-enum.js';
 import type { ClientUpdateInfo } from '../../types/update-types.js';
+import { blobHashFromBlobServiceURI } from '../../utils/blob-service.js';
 import { values } from '../../utils/objects.js';
 import { rawMessageInfoFromMessageData } from '../message-utils.js';
 
@@ -105,6 +107,32 @@
   return { fieldNameToMessageData, threadInfoUpdate };
 }
 
+function getBlobOpsFromOperation(
+  dmOperation: DMChangeThreadSettingsOperation,
+  threadInfo: ?RawThreadInfo,
+): Array<DMBlobOperation> {
+  const ops: Array<DMBlobOperation> = [];
+
+  const prevAvatar = threadInfo?.avatar;
+  if (prevAvatar && prevAvatar.type === 'encrypted_image') {
+    ops.push({
+      type: 'remove_holder',
+      blobHash: blobHashFromBlobServiceURI(prevAvatar.blobURI),
+      dmOpType: 'inbound_and_outbound',
+    });
+  }
+
+  const { avatar } = dmOperation.changes;
+  if (avatar && avatar?.type === 'encrypted_image') {
+    ops.push({
+      type: 'establish_holder',
+      blobHash: blobHashFromBlobServiceURI(avatar.blobURI),
+      dmOpType: 'inbound_only',
+    });
+  }
+  return ops;
+}
+
 const changeThreadSettingsSpec: DMOperationSpec<DMChangeThreadSettingsOperation> =
   Object.freeze({
     notificationsCreationData: async (
@@ -128,6 +156,8 @@
       const { fieldNameToMessageData, threadInfoUpdate } =
         createChangeSettingsMessageDatasAndUpdate(dmOperation);
 
+      const blobOps = getBlobOpsFromOperation(dmOperation, threadInfo);
+
       const messageDataWithMessageInfoPairs = values(fieldNameToMessageData);
       const rawMessageInfos = messageDataWithMessageInfoPairs.map(
         ({ rawMessageInfo }) => rawMessageInfo,
@@ -161,7 +191,7 @@
       return {
         rawMessageInfos,
         updateInfos,
-        blobOps: [],
+        blobOps,
       };
     },
     canBeProcessed: async (