diff --git a/keyserver/src/updaters/thread-updaters.js b/keyserver/src/updaters/thread-updaters.js
--- a/keyserver/src/updaters/thread-updaters.js
+++ b/keyserver/src/updaters/thread-updaters.js
@@ -1,5 +1,6 @@
 // @flow
 
+import { specialRoles } from 'lib/permissions/special-roles.js';
 import { getRolePermissionBlobs } from 'lib/permissions/thread-permissions.js';
 import { filteredThreadIDs } from 'lib/selectors/calendar-filter-selectors.js';
 import { getPinnedContentFromMessage } from 'lib/shared/message-utils.js';
@@ -205,9 +206,10 @@
   }
 
   const query = SQL`
-    SELECT m.user, m.role, t.default_role
+    SELECT m.user, m.role, r.id AS default_role
     FROM memberships m
-    LEFT JOIN threads t ON t.id = m.thread
+    LEFT JOIN roles r ON r.special_role = ${specialRoles.DEFAULT_ROLE}
+      AND r.thread = ${request.threadID}
     WHERE m.user IN (${memberIDs})
       AND m.thread = ${request.threadID}
   `;
@@ -560,7 +562,8 @@
         const rolePermissionsQuery = SQL`
           SELECT r.permissions
           FROM threads t
-          LEFT JOIN roles r ON r.id = t.default_role
+          LEFT JOIN roles r ON r.special_role = ${specialRoles.DEFAULT_ROLE} 
+            AND r.thread = ${request.threadID}
           WHERE t.id = ${request.threadID}
         `;
         const [result] = await dbQuery(rolePermissionsQuery);