diff --git a/lib/topic_query/private_message_lists.rb b/lib/topic_query/private_message_lists.rb
index a41015fecae..da8d204aca1 100644
--- a/lib/topic_query/private_message_lists.rb
+++ b/lib/topic_query/private_message_lists.rb
@@ -104,6 +104,7 @@ class TopicQuery
 
     def list_private_messages_group_new(user)
       list = filter_private_message_new(user, :group)
+      list = remove_dismissed(list, user)
       publish_read_state = !!group.publish_read_state
       list = append_read_state(list, group) if publish_read_state
       create_list(:private_messages, { publish_read_state: publish_read_state }, list)
diff --git a/spec/lib/topic_query/private_message_lists_spec.rb b/spec/lib/topic_query/private_message_lists_spec.rb
index 7ddbd175bc9..29701387440 100644
--- a/spec/lib/topic_query/private_message_lists_spec.rb
+++ b/spec/lib/topic_query/private_message_lists_spec.rb
@@ -203,6 +203,16 @@ describe TopicQuery::PrivateMessageLists do
 
       expect(topics).to contain_exactly(group_message)
     end
+
+    it 'returns a list of new private messages for a group accounting for dismissed topics' do
+      Fabricate(:dismissed_topic_user, topic: group_message, user: user_2)
+
+      topics = TopicQuery.new(nil, group_name: group.name)
+        .list_private_messages_group_new(user_2)
+        .topics
+
+      expect(topics).to eq([])
+    end
   end
 
   describe '#list_private_messages_group_unread' do