diff --git a/app/assets/javascripts/work_items/components/notes/work_item_notes_activity_header.vue b/app/assets/javascripts/work_items/components/notes/work_item_notes_activity_header.vue
index 075aa3efe3e9d3a4afae3afb491f0482fbabdb6f..799275f3875fee59d1a0d1856f6dd393e4d9de50 100644
--- a/app/assets/javascripts/work_items/components/notes/work_item_notes_activity_header.vue
+++ b/app/assets/javascripts/work_items/components/notes/work_item_notes_activity_header.vue
@@ -1,6 +1,5 @@
 <script>
 import WorkItemActivitySortFilter from '~/work_items/components/notes/work_item_activity_sort_filter.vue';
-import { s__ } from '~/locale';
 import { ASC } from '~/notes/constants';
 import {
   WORK_ITEM_NOTES_FILTER_ALL_NOTES,
@@ -11,13 +10,17 @@ import {
 } from '~/work_items/constants';
 
 export default {
-  i18n: {
-    activityLabel: s__('WorkItem|Activity'),
-  },
   components: {
+    AiSummarizeNotes: () =>
+      import('ee_component/notes/components/note_actions/ai_summarize_notes.vue'),
     WorkItemActivitySortFilter,
   },
   props: {
+    canSummarizeComments: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
     disableActivityFilterSort: {
       type: Boolean,
       required: true,
@@ -27,6 +30,10 @@ export default {
       default: ASC,
       required: false,
     },
+    workItemId: {
+      type: String,
+      required: true,
+    },
     workItemType: {
       type: String,
       required: true,
@@ -70,10 +77,17 @@ export default {
 </script>
 
 <template>
-  <div class="gl-flex gl-flex-wrap gl-items-center gl-justify-between gl-pb-3">
-    <component :is="useH2 ? 'h2' : 'h3'" :class="headerClasses">{{
-      $options.i18n.activityLabel
-    }}</component>
+  <div class="gl-flex gl-flex-wrap gl-items-center gl-gap-3 gl-pb-3">
+    <div class="gl-flex gl-grow gl-items-center gl-justify-between gl-gap-3">
+      <component :is="useH2 ? 'h2' : 'h3'" :class="headerClasses">
+        {{ s__('WorkItem|Activity') }}
+      </component>
+      <ai-summarize-notes
+        v-if="canSummarizeComments"
+        :resource-global-id="workItemId"
+        size="small"
+      />
+    </div>
     <div class="gl-flex gl-gap-3">
       <work-item-activity-sort-filter
         :work-item-type="workItemType"
diff --git a/app/assets/javascripts/work_items/components/work_item_detail.vue b/app/assets/javascripts/work_items/components/work_item_detail.vue
index 08e5dde787212f5c1d8f1296db2b819dab3797a5..5b26acc4ff53cc35864665b15f565b6bd3fa114f 100644
--- a/app/assets/javascripts/work_items/components/work_item_detail.vue
+++ b/app/assets/javascripts/work_items/components/work_item_detail.vue
@@ -328,6 +328,9 @@ export default {
     canAssignUnassignUser() {
       return this.workItemAssignees && this.canUpdateMetadata;
     },
+    canSummarizeComments() {
+      return this.workItem.userPermissions?.summarizeComments;
+    },
     isDiscussionLocked() {
       return this.workItemNotes?.discussionLocked;
     },
@@ -1112,6 +1115,7 @@ export default {
               :is-modal="isModal"
               :assignees="workItemAssignees && workItemAssignees.assignees.nodes"
               :can-set-work-item-metadata="canAssignUnassignUser"
+              :can-summarize-comments="canSummarizeComments"
               :report-abuse-path="reportAbusePath"
               :is-discussion-locked="isDiscussionLocked"
               :is-work-item-confidential="workItem.confidential"
diff --git a/app/assets/javascripts/work_items/components/work_item_notes.vue b/app/assets/javascripts/work_items/components/work_item_notes.vue
index 7cc0a6d098f95160c9d636a841bb1582d9cf2873..20c2f0cb0e0be976130bccef21279dc4b58f9c39 100644
--- a/app/assets/javascripts/work_items/components/work_item_notes.vue
+++ b/app/assets/javascripts/work_items/components/work_item_notes.vue
@@ -81,6 +81,11 @@ export default {
       required: false,
       default: false,
     },
+    canSummarizeComments: {
+      type: Boolean,
+      required: false,
+      default: false,
+    },
     reportAbusePath: {
       type: String,
       required: true,
@@ -129,6 +134,7 @@ export default {
       discussionFilter: WORK_ITEM_NOTES_FILTER_ALL_NOTES,
       workItemNamespace: null,
       previewNote: null,
+      workItemNotes: [],
     };
   },
   computed: {
@@ -286,7 +292,6 @@ export default {
         Sentry.captureException(error);
       },
     },
-    // eslint-disable-next-line @gitlab/vue-no-undef-apollo-properties
     workItemNotes: {
       query: workItemNotesByIidQuery,
       variables() {
@@ -448,8 +453,10 @@ export default {
 <template>
   <div class="work-item-notes">
     <work-item-notes-activity-header
+      :can-summarize-comments="canSummarizeComments"
       :sort-order="sortOrder"
       :disable-activity-filter-sort="disableActivityFilterSort"
+      :work-item-id="workItemId"
       :work-item-type="workItemType"
       :discussion-filter="discussionFilter"
       :use-h2="useH2"
diff --git a/app/assets/javascripts/work_items/graphql/cache_utils.js b/app/assets/javascripts/work_items/graphql/cache_utils.js
index 2769e3ab0e6e129dec33a6301ecd5bf8d665e1be..1a23897a6d2d91c0e212d336e7a69a9ba56b28b1 100644
--- a/app/assets/javascripts/work_items/graphql/cache_utils.js
+++ b/app/assets/javascripts/work_items/graphql/cache_utils.js
@@ -596,15 +596,16 @@ export const setNewWorkItemCache = async (
             __typename: 'WorkItemType',
           },
           userPermissions: {
-            deleteWorkItem: true,
-            updateWorkItem: true,
-            moveWorkItem: true,
             adminParentLink: true,
-            setWorkItemMetadata: true,
-            createNote: true,
             adminWorkItemLink: true,
+            createNote: true,
+            deleteWorkItem: true,
             markNoteAsInternal: true,
+            moveWorkItem: true,
             reportSpam: true,
+            setWorkItemMetadata: true,
+            summarizeComments: true,
+            updateWorkItem: true,
             __typename: 'WorkItemPermissions',
           },
           widgets,
@@ -617,15 +618,16 @@ export const setNewWorkItemCache = async (
 };
 
 export const optimisticUserPermissions = {
-  deleteWorkItem: false,
-  updateWorkItem: false,
-  moveWorkItem: false,
   adminParentLink: false,
-  setWorkItemMetadata: false,
-  createNote: false,
   adminWorkItemLink: false,
+  createNote: false,
+  deleteWorkItem: false,
   markNoteAsInternal: false,
+  moveWorkItem: false,
   reportSpam: false,
+  setWorkItemMetadata: false,
+  summarizeComments: false,
+  updateWorkItem: false,
   __typename: 'WorkItemPermissions',
 };
 
diff --git a/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql b/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
index 6c0aa34da0a40e828c66529bcda4a5b168368cb6..0eafb0e566f5fe62057f2e1e8f6ab5e536fe08c7 100644
--- a/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
+++ b/app/assets/javascripts/work_items/graphql/work_item.fragment.graphql
@@ -32,15 +32,16 @@ fragment WorkItem on WorkItem {
     iconName
   }
   userPermissions {
-    deleteWorkItem
-    updateWorkItem
-    moveWorkItem
     adminParentLink
-    setWorkItemMetadata
-    createNote
     adminWorkItemLink
+    createNote
+    deleteWorkItem
     markNoteAsInternal
+    moveWorkItem
     reportSpam
+    setWorkItemMetadata
+    summarizeComments
+    updateWorkItem
   }
   widgets {
     ...WorkItemWidgets
diff --git a/app/assets/javascripts/work_items/graphql/work_item_hierarchy.fragment.graphql b/app/assets/javascripts/work_items/graphql/work_item_hierarchy.fragment.graphql
index 1b6ad539d5decbf016755964544806ec48d35dfc..52e19614c2b706d7704556f7d01eae9b9babebff 100644
--- a/app/assets/javascripts/work_items/graphql/work_item_hierarchy.fragment.graphql
+++ b/app/assets/javascripts/work_items/graphql/work_item_hierarchy.fragment.graphql
@@ -11,14 +11,16 @@ fragment WorkItemHierarchy on WorkItem {
   title
   confidential
   userPermissions {
-    deleteWorkItem
-    updateWorkItem
-    moveWorkItem
     adminParentLink
-    setWorkItemMetadata
-    createNote
     adminWorkItemLink
+    createNote
+    deleteWorkItem
     markNoteAsInternal
+    moveWorkItem
+    reportSpam
+    setWorkItemMetadata
+    summarizeComments
+    updateWorkItem
   }
   widgets {
     type
diff --git a/ee/app/assets/javascripts/ai/editor_actions/summarize_comments.js b/ee/app/assets/javascripts/ai/editor_actions/summarize_comments.js
deleted file mode 100644
index 788b023f5d9c341bac67865571d47d13f2b4d4b3..0000000000000000000000000000000000000000
--- a/ee/app/assets/javascripts/ai/editor_actions/summarize_comments.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import aiActionMutation from 'ee/graphql_shared/mutations/ai_action.mutation.graphql';
-import { __ } from '~/locale';
-import { convertToGraphQLId } from '~/graphql_shared/utils';
-import { TYPENAME_USER } from '~/graphql_shared/constants';
-
-export const summarizeCommentsAction = (resourceGlobalId) => ({
-  title: __('Summarize comments'),
-  description: __('Creates a summary of all comments'),
-  subscriptionVariables() {
-    return {
-      userId: convertToGraphQLId(TYPENAME_USER, gon.current_user_id),
-      resourceId: resourceGlobalId,
-    };
-  },
-  apolloMutation() {
-    return {
-      mutation: aiActionMutation,
-      variables: {
-        input: {
-          summarizeComments: {
-            resourceId: resourceGlobalId,
-          },
-        },
-      },
-    };
-  },
-});
diff --git a/ee/app/assets/javascripts/notes/components/note_actions/ai_summarize_notes.vue b/ee/app/assets/javascripts/notes/components/note_actions/ai_summarize_notes.vue
index c45177b77b8f1415bac5b7d23ee242a2bf9a356e..39d552b583040093ceeb7fd67adfbe0a1e091d53 100644
--- a/ee/app/assets/javascripts/notes/components/note_actions/ai_summarize_notes.vue
+++ b/ee/app/assets/javascripts/notes/components/note_actions/ai_summarize_notes.vue
@@ -1,42 +1,32 @@
 <script>
 import { GlButton, GlTooltipDirective } from '@gitlab/ui';
-import { s__, __ } from '~/locale';
-import { createAlert } from '~/alert';
-import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
 import { sendDuoChatCommand } from 'ee/ai/utils';
 import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';
 
 export default {
+  name: 'AiSummarizeNotes',
   components: {
     GlButton,
   },
   directives: {
     GlTooltip: GlTooltipDirective,
   },
-  mixins: [glFeatureFlagsMixin()],
-  inject: ['summarizeClientSubscriptionId'],
   props: {
+    loading: {
+      type: Boolean,
+      default: false,
+      required: false,
+    },
     resourceGlobalId: {
       type: String,
       required: true,
     },
-    loading: {
-      type: Boolean,
-      default: false,
+    size: {
+      type: String,
       required: false,
+      default: 'medium',
     },
   },
-  data() {
-    return {
-      errorAlert: null,
-      aiCompletionResponse: {},
-    };
-  },
-  destroyed() {
-    if (this.timeout) {
-      clearTimeout(this.timeout);
-    }
-  },
   methods: {
     onClick() {
       this.hideTooltips();
@@ -55,19 +45,6 @@ export default {
         this.$root.$emit(BV_HIDE_TOOLTIP);
       });
     },
-    handleError(error) {
-      this.hideTooltips();
-      const alertOptions = error ? { captureError: true, error } : {};
-      this.errorAlert = createAlert({
-        message: error ? error.message : __('Something went wrong'),
-        ...alertOptions,
-      });
-      this.$parent.$emit('set-ai-loading', false);
-    },
-  },
-  i18n: {
-    button: s__('AISummary|View summary'),
-    tooltip: s__('AISummary|Generates a summary of this issue'),
   },
 };
 </script>
@@ -78,11 +55,12 @@ export default {
     icon="duo-chat"
     :disabled="loading"
     :loading="loading"
-    :title="$options.i18n.tooltip"
-    :aria-label="$options.i18n.tooltip"
+    :size="size"
+    :title="s__('AISummary|Generates a summary of this issue')"
+    :aria-label="s__('AISummary|Generates a summary of this issue')"
     @click="onClick"
     @mouseout="hideTooltips"
   >
-    {{ $options.i18n.button }}
+    {{ s__('AISummary|View summary') }}
   </gl-button>
 </template>
diff --git a/ee/spec/frontend/notes/components/note_actions/ai_summarize_notes_spec.js b/ee/spec/frontend/notes/components/note_actions/ai_summarize_notes_spec.js
index b0b7b4f6a5f4494c650cfd520958c31f47c4cd8a..de5b2a7953aba56ded5a7418df1cf6001156c39a 100644
--- a/ee/spec/frontend/notes/components/note_actions/ai_summarize_notes_spec.js
+++ b/ee/spec/frontend/notes/components/note_actions/ai_summarize_notes_spec.js
@@ -1,38 +1,21 @@
-import Vue, { nextTick } from 'vue';
-import VueApollo from 'vue-apollo';
+import { nextTick } from 'vue';
 import { GlButton } from '@gitlab/ui';
+import { shallowMount } from '@vue/test-utils';
 import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants';
-import createMockApollo from 'helpers/mock_apollo_helper';
-import { mountExtended } from 'helpers/vue_test_utils_helper';
 import * as aiUtils from 'ee/ai/utils';
 import AiSummaryNotes from 'ee/notes/components/note_actions/ai_summarize_notes.vue';
-import aiActionMutation from 'ee/graphql_shared/mutations/ai_action.mutation.graphql';
 
-Vue.use(VueApollo);
 jest.mock('ee/ai/utils');
 jest.spyOn(aiUtils, 'sendDuoChatCommand');
 
 describe('AiSummarizeNotes component', () => {
   let wrapper;
-  let aiActionMutationHandler;
   const resourceGlobalId = 'gid://gitlab/Issue/1';
-  const clientSubscriptionId = 'someId';
 
   const findButton = () => wrapper.findComponent(GlButton);
 
   const createWrapper = () => {
-    aiActionMutationHandler = jest.fn();
-
-    const mockApollo = createMockApollo([[aiActionMutation, aiActionMutationHandler]]);
-
-    wrapper = mountExtended(AiSummaryNotes, {
-      apolloProvider: mockApollo,
-      provide: {
-        summarizeClientSubscriptionId: clientSubscriptionId,
-        glAbilities: {
-          summarizeComments: true,
-        },
-      },
+    wrapper = shallowMount(AiSummaryNotes, {
       propsData: {
         resourceGlobalId,
       },
@@ -43,7 +26,7 @@ describe('AiSummarizeNotes component', () => {
     it('calls sendDuoChatCommand with correct variables', async () => {
       createWrapper();
 
-      await findButton().trigger('click');
+      findButton().vm.$emit('click');
       await nextTick();
 
       expect(aiUtils.sendDuoChatCommand).toHaveBeenCalledWith({
@@ -58,7 +41,7 @@ describe('AiSummarizeNotes component', () => {
       const bsTooltipHide = jest.fn();
       wrapper.vm.$root.$on(BV_HIDE_TOOLTIP, bsTooltipHide);
 
-      await findButton().trigger('click');
+      findButton().vm.$emit('click');
       await nextTick();
 
       expect(bsTooltipHide).toHaveBeenCalled();
@@ -66,19 +49,15 @@ describe('AiSummarizeNotes component', () => {
   });
 
   describe('on mouseout', () => {
-    let bsTooltipHide;
-
-    beforeEach(async () => {
+    it('closes tooltip', async () => {
       createWrapper();
 
-      bsTooltipHide = jest.fn();
+      const bsTooltipHide = jest.fn();
       wrapper.vm.$root.$on(BV_HIDE_TOOLTIP, bsTooltipHide);
 
-      await findButton().trigger('mouseout');
+      findButton().vm.$emit('mouseout');
       await nextTick();
-    });
 
-    it('closes tooltip', () => {
       expect(bsTooltipHide).toHaveBeenCalled();
     });
   });
diff --git a/ee/spec/frontend/work_items/components/work_item_notes_activity_header_spec.js b/ee/spec/frontend/work_items/components/work_item_notes_activity_header_spec.js
new file mode 100644
index 0000000000000000000000000000000000000000..ec69e03e257f440bc12ee3bdcbcd0b9028dbeef0
--- /dev/null
+++ b/ee/spec/frontend/work_items/components/work_item_notes_activity_header_spec.js
@@ -0,0 +1,31 @@
+import AiSummarizeNotes from 'ee_component/notes/components/note_actions/ai_summarize_notes.vue';
+import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
+import waitForPromises from 'helpers/wait_for_promises';
+import WorkItemNotesActivityHeader from '~/work_items/components/notes/work_item_notes_activity_header.vue';
+
+describe('WorkItemNotesActivityHeader component', () => {
+  let wrapper;
+
+  const findAiSummarizeNotes = () => wrapper.findComponent(AiSummarizeNotes);
+
+  const createComponent = ({ canSummarizeComments = false } = {}) => {
+    wrapper = shallowMountExtended(WorkItemNotesActivityHeader, {
+      propsData: {
+        canSummarizeComments,
+        disableActivityFilterSort: false,
+        workItemId: 'gid://gitlab/WorkItem/123',
+        workItemType: 'Task',
+      },
+    });
+  };
+
+  it.each([true, false])(
+    'renders "View summary" button depending on canSummarizeComments',
+    async (canSummarizeComments) => {
+      createComponent({ canSummarizeComments });
+      await waitForPromises();
+
+      expect(findAiSummarizeNotes().exists()).toBe(canSummarizeComments);
+    },
+  );
+});
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 687fa2e6dfb787f9a935e0d74cd10094ffe58840..b76f0defd7783553b041bf4144135e39ef89b6cf 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -17480,9 +17480,6 @@ msgstr ""
 msgid "Creates a reminder to-do item after the specified time period."
 msgstr ""
 
-msgid "Creates a summary of all comments"
-msgstr ""
-
 msgid "Creates branch '%{branch_name}' and a merge request to resolve this issue."
 msgstr ""
 
@@ -56816,9 +56813,6 @@ msgstr ""
 msgid "Summarize code changes"
 msgstr ""
 
-msgid "Summarize comments"
-msgstr ""
-
 msgid "Summarize the comments in the current issue."
 msgstr ""
 
diff --git a/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js b/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
index dff54fef9fe3b3afa97f2a09df0f841ea9fecfb3..547bd831e1c0ea31fb2a04bce239115ddb4d2e24 100644
--- a/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
+++ b/spec/frontend/work_items/components/notes/work_item_notes_activity_header_spec.js
@@ -1,12 +1,9 @@
 import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
-import WorkItemNotesActivityHeader from '~/work_items/components/notes/work_item_notes_activity_header.vue';
 import { ASC } from '~/notes/constants';
-import {
-  WORK_ITEM_NOTES_FILTER_ALL_NOTES,
-  WORK_ITEM_NOTES_FILTER_ONLY_HISTORY,
-} from '~/work_items/constants';
+import WorkItemNotesActivityHeader from '~/work_items/components/notes/work_item_notes_activity_header.vue';
+import { WORK_ITEM_NOTES_FILTER_ONLY_HISTORY } from '~/work_items/constants';
 
-describe('Work Item Note Activity Header', () => {
+describe('WorkItemNotesActivityHeader component', () => {
   let wrapper;
 
   const findActivityLabelH2Heading = () => wrapper.find('h2');
@@ -14,53 +11,53 @@ describe('Work Item Note Activity Header', () => {
   const findActivityFilterDropdown = () => wrapper.findByTestId('work-item-filter');
   const findActivitySortDropdown = () => wrapper.findByTestId('work-item-sort');
 
-  const createComponent = ({
-    disableActivityFilterSort = false,
-    sortOrder = ASC,
-    workItemType = 'Task',
-    discussionFilter = WORK_ITEM_NOTES_FILTER_ALL_NOTES,
-    useH2 = false,
-  } = {}) => {
+  const createComponent = ({ useH2 = false } = {}) => {
     wrapper = shallowMountExtended(WorkItemNotesActivityHeader, {
       propsData: {
-        disableActivityFilterSort,
-        sortOrder,
-        workItemType,
-        discussionFilter,
+        disableActivityFilterSort: false,
         useH2,
+        workItemId: 'gid://gitlab/WorkItem/123',
+        workItemType: 'Task',
       },
     });
   };
 
-  beforeEach(() => {
+  it('renders Activity heading', () => {
     createComponent();
-  });
 
-  it('Should have the Activity label', () => {
-    expect(findActivityLabelH3Heading().text()).toBe(
-      WorkItemNotesActivityHeader.i18n.activityLabel,
-    );
+    expect(findActivityLabelH3Heading().text()).toBe('Activity');
   });
 
-  it('Should render an H2 instead of an H3 if useH2 is true', () => {
+  it('renders an h3 heading by default', () => {
     createComponent();
+
     expect(findActivityLabelH3Heading().exists()).toBe(true);
     expect(findActivityLabelH2Heading().exists()).toBe(false);
+  });
+
+  it('renders an h2 heading when useH2=true', () => {
     createComponent({ useH2: true });
+
     expect(findActivityLabelH2Heading().exists()).toBe(true);
     expect(findActivityLabelH3Heading().exists()).toBe(false);
   });
 
   it('Should have Activity filtering dropdown', () => {
+    createComponent();
+
     expect(findActivityFilterDropdown().exists()).toBe(true);
   });
 
   it('Should have Activity sorting dropdown', () => {
+    createComponent();
+
     expect(findActivitySortDropdown().exists()).toBe(true);
   });
 
   describe('Activity Filter', () => {
     it('emits `changeFilter` when filtering discussions', () => {
+      createComponent();
+
       findActivityFilterDropdown().vm.$emit('changeFilter', WORK_ITEM_NOTES_FILTER_ONLY_HISTORY);
 
       expect(wrapper.emitted('changeFilter')).toEqual([[WORK_ITEM_NOTES_FILTER_ONLY_HISTORY]]);
@@ -69,6 +66,8 @@ describe('Work Item Note Activity Header', () => {
 
   describe('Activity Sorting', () => {
     it('emits `changeSort` when sorting discussions/activity', () => {
+      createComponent();
+
       findActivitySortDropdown().vm.$emit('changeSort', ASC);
 
       expect(wrapper.emitted('changeSort')).toEqual([[ASC]]);
diff --git a/spec/frontend/work_items/graphql/cache_utils_spec.js b/spec/frontend/work_items/graphql/cache_utils_spec.js
index d8d697d19fbf31ed339cf138056d13847d1e2411..631cc965f45e2d5c76ded264f9aaffac7cb86fcc 100644
--- a/spec/frontend/work_items/graphql/cache_utils_spec.js
+++ b/spec/frontend/work_items/graphql/cache_utils_spec.js
@@ -272,14 +272,16 @@ describe('work items graphql cache utils', () => {
             },
             userPermissions: {
               __typename: 'WorkItemPermissions',
-              deleteWorkItem: true,
-              updateWorkItem: true,
-              moveWorkItem: true,
               adminParentLink: true,
-              setWorkItemMetadata: true,
-              createNote: true,
               adminWorkItemLink: true,
+              createNote: true,
+              deleteWorkItem: true,
               markNoteAsInternal: true,
+              moveWorkItem: true,
+              reportSpam: true,
+              setWorkItemMetadata: true,
+              summarizeComments: true,
+              updateWorkItem: true,
             },
             widgets: [
               {
diff --git a/spec/frontend/work_items/mock_data.js b/spec/frontend/work_items/mock_data.js
index ac04da695a4899ab68fc5d3f1fefdc4f88e44e8d..5314a421494ecdd8055399d1217e24d3ddf94ded 100644
--- a/spec/frontend/work_items/mock_data.js
+++ b/spec/frontend/work_items/mock_data.js
@@ -216,15 +216,16 @@ export const workItemQueryResponse = {
         iconName: 'issue-type-task',
       },
       userPermissions: {
-        deleteWorkItem: false,
-        updateWorkItem: false,
-        moveWorkItem: false,
-        setWorkItemMetadata: false,
         adminParentLink: false,
-        createNote: false,
         adminWorkItemLink: true,
+        deleteWorkItem: false,
+        createNote: false,
         markNoteAsInternal: true,
+        moveWorkItem: false,
         reportSpam: false,
+        setWorkItemMetadata: false,
+        summarizeComments: false,
+        updateWorkItem: false,
         __typename: 'WorkItemPermissions',
       },
       widgets: [
@@ -340,15 +341,16 @@ export const updateWorkItemMutationResponse = {
           iconName: 'issue-type-task',
         },
         userPermissions: {
-          deleteWorkItem: false,
-          updateWorkItem: false,
-          moveWorkItem: false,
-          setWorkItemMetadata: false,
           adminParentLink: false,
-          createNote: false,
           adminWorkItemLink: true,
+          createNote: false,
+          deleteWorkItem: false,
           markNoteAsInternal: true,
+          moveWorkItem: false,
           reportSpam: false,
+          setWorkItemMetadata: false,
+          summarizeComments: false,
+          updateWorkItem: false,
           __typename: 'WorkItemPermissions',
         },
         reference: 'test-project-path#1',
@@ -478,15 +480,16 @@ export const convertWorkItemMutationResponse = {
           iconName: 'issue-type-objective',
         },
         userPermissions: {
-          deleteWorkItem: false,
-          updateWorkItem: false,
-          moveWorkItem: false,
-          setWorkItemMetadata: false,
           adminParentLink: false,
-          createNote: false,
           adminWorkItemLink: true,
+          createNote: false,
+          deleteWorkItem: false,
           markNoteAsInternal: true,
+          moveWorkItem: false,
           reportSpam: false,
+          setWorkItemMetadata: false,
+          summarizeComments: false,
+          updateWorkItem: false,
           __typename: 'WorkItemPermissions',
         },
         reference: 'gitlab-org/gitlab-test#1',
@@ -1348,6 +1351,7 @@ export const workItemResponseFactory = ({
   reportSpam = false,
   canAdminWorkItemLink = true,
   canMarkNoteAsInternal = true,
+  canSummarizeComments = false,
   notificationsWidgetPresent = true,
   currentUserTodosWidgetPresent = true,
   awardEmojiWidgetPresent = true,
@@ -1431,15 +1435,16 @@ export const workItemResponseFactory = ({
       },
       workItemType,
       userPermissions: {
-        deleteWorkItem: canDelete,
-        updateWorkItem: canUpdate,
-        moveWorkItem: canMove,
-        setWorkItemMetadata: canUpdate,
         adminParentLink,
         adminWorkItemLink: canAdminWorkItemLink,
         createNote: canCreateNote,
+        deleteWorkItem: canDelete,
         markNoteAsInternal: canMarkNoteAsInternal,
+        moveWorkItem: canMove,
         reportSpam,
+        setWorkItemMetadata: canUpdate,
+        summarizeComments: canSummarizeComments,
+        updateWorkItem: canUpdate,
         __typename: 'WorkItemPermissions',
       },
       reference: 'test-project-path#1',
@@ -1895,15 +1900,16 @@ export const createWorkItemMutationResponse = {
           iconName: 'issue-type-task',
         },
         userPermissions: {
-          deleteWorkItem: false,
-          updateWorkItem: false,
-          moveWorkItem: false,
-          setWorkItemMetadata: false,
           adminParentLink: false,
-          createNote: false,
           adminWorkItemLink: true,
+          createNote: false,
+          deleteWorkItem: false,
           markNoteAsInternal: true,
+          moveWorkItem: false,
           reportSpam: false,
+          setWorkItemMetadata: false,
+          summarizeComments: false,
+          updateWorkItem: false,
           __typename: 'WorkItemPermissions',
         },
         reference: 'test-project-path#1',
@@ -1970,15 +1976,16 @@ export const workItemHierarchyNoUpdatePermissionResponse = {
       closedAt: null,
       author: mockAssignees[0],
       userPermissions: {
-        deleteWorkItem: false,
-        updateWorkItem: false,
-        moveWorkItem: false,
-        setWorkItemMetadata: false,
         adminParentLink: false,
-        createNote: false,
         adminWorkItemLink: true,
+        createNote: false,
+        deleteWorkItem: false,
         markNoteAsInternal: true,
+        moveWorkItem: false,
         reportSpam: false,
+        setWorkItemMetadata: false,
+        summarizeComments: false,
+        updateWorkItem: false,
         __typename: 'WorkItemPermissions',
       },
       namespace: {
@@ -2402,15 +2409,16 @@ export const workItemHierarchyResponse = {
         title: 'New title',
         webUrl: 'http://gdk.test/gitlab-org/gitlab/-/issues/1',
         userPermissions: {
-          deleteWorkItem: true,
-          updateWorkItem: true,
-          moveWorkItem: true,
-          setWorkItemMetadata: true,
           adminParentLink: true,
-          createNote: true,
           adminWorkItemLink: true,
+          createNote: true,
+          deleteWorkItem: true,
           markNoteAsInternal: true,
+          moveWorkItem: true,
           reportSpam: false,
+          setWorkItemMetadata: true,
+          summarizeComments: true,
+          updateWorkItem: true,
           __typename: 'WorkItemPermissions',
         },
         author: {
@@ -2470,15 +2478,16 @@ export const workItemObjectiveWithChild = {
     fullName: 'Group name',
   },
   userPermissions: {
-    deleteWorkItem: true,
-    updateWorkItem: true,
-    moveWorkItem: true,
-    setWorkItemMetadata: true,
     adminParentLink: true,
-    createNote: true,
     adminWorkItemLink: true,
+    createNote: true,
+    deleteWorkItem: true,
     markNoteAsInternal: true,
+    moveWorkItem: true,
     reportSpam: false,
+    setWorkItemMetadata: true,
+    summarizeComments: true,
+    updateWorkItem: true,
     __typename: 'WorkItemPermissions',
   },
   author: {
@@ -2562,15 +2571,16 @@ export const workItemObjectiveWithoutChild = {
     fullName: 'Group name',
   },
   userPermissions: {
-    deleteWorkItem: true,
-    updateWorkItem: true,
-    moveWorkItem: true,
-    setWorkItemMetadata: true,
     adminParentLink: true,
-    createNote: true,
     adminWorkItemLink: true,
+    createNote: true,
+    deleteWorkItem: true,
     markNoteAsInternal: true,
+    moveWorkItem: true,
     reportSpam: false,
+    setWorkItemMetadata: true,
+    summarizeComments: true,
+    updateWorkItem: true,
     __typename: 'WorkItemPermissions',
   },
   author: {
@@ -2617,15 +2627,16 @@ export const workItemHierarchyTreeEmptyResponse = {
       },
       title: 'New title',
       userPermissions: {
-        deleteWorkItem: true,
-        updateWorkItem: true,
-        moveWorkItem: true,
-        setWorkItemMetadata: true,
         adminParentLink: true,
-        createNote: true,
         adminWorkItemLink: true,
+        createNote: true,
+        deleteWorkItem: true,
         markNoteAsInternal: true,
+        moveWorkItem: true,
         reportSpam: false,
+        setWorkItemMetadata: true,
+        summarizeComments: true,
+        updateWorkItem: true,
         __typename: 'WorkItemPermissions',
       },
       confidential: false,
@@ -2884,15 +2895,16 @@ export const workItemHierarchyTreeResponse = {
       },
       title: 'New title',
       userPermissions: {
-        deleteWorkItem: true,
-        updateWorkItem: true,
-        moveWorkItem: true,
-        setWorkItemMetadata: true,
         adminParentLink: true,
-        createNote: true,
         adminWorkItemLink: true,
+        createNote: true,
+        deleteWorkItem: true,
         markNoteAsInternal: true,
+        moveWorkItem: true,
         reportSpam: false,
+        setWorkItemMetadata: true,
+        summarizeComments: true,
+        updateWorkItem: true,
         __typename: 'WorkItemPermissions',
       },
       confidential: false,
@@ -2930,15 +2942,16 @@ export const workItemHierarchyTreeSingleClosedItemResponse = {
       },
       title: 'New title',
       userPermissions: {
-        deleteWorkItem: true,
-        updateWorkItem: true,
-        moveWorkItem: true,
-        setWorkItemMetadata: true,
         adminParentLink: true,
-        createNote: true,
         adminWorkItemLink: true,
+        createNote: true,
+        deleteWorkItem: true,
         markNoteAsInternal: true,
+        moveWorkItem: true,
         reportSpam: false,
+        setWorkItemMetadata: true,
+        summarizeComments: true,
+        updateWorkItem: true,
         __typename: 'WorkItemPermissions',
       },
       confidential: false,
@@ -3070,15 +3083,16 @@ export const workItemObjectiveWithClosedChild = {
     name: 'Project name',
   },
   userPermissions: {
-    deleteWorkItem: true,
-    updateWorkItem: true,
-    moveWorkItem: true,
-    setWorkItemMetadata: true,
     adminParentLink: true,
-    createNote: true,
     adminWorkItemLink: true,
+    createNote: true,
+    deleteWorkItem: true,
     markNoteAsInternal: true,
+    moveWorkItem: true,
     reportSpam: false,
+    setWorkItemMetadata: true,
+    summarizeComments: true,
+    updateWorkItem: true,
     __typename: 'WorkItemPermissions',
   },
   author: {
@@ -3138,15 +3152,16 @@ export const changeWorkItemParentMutationResponse = {
           iconName: 'issue-type-issue',
         },
         userPermissions: {
-          deleteWorkItem: true,
-          updateWorkItem: true,
-          moveWorkItem: true,
-          setWorkItemMetadata: true,
           adminParentLink: true,
-          createNote: true,
           adminWorkItemLink: true,
+          createNote: true,
+          deleteWorkItem: true,
           markNoteAsInternal: true,
+          moveWorkItem: true,
           reportSpam: false,
+          setWorkItemMetadata: true,
+          summarizeComments: true,
+          updateWorkItem: true,
           __typename: 'WorkItemPermissions',
         },
         description: null,
@@ -5641,15 +5656,16 @@ export const createWorkItemQueryResponse = {
           __typename: 'WorkItemType',
         },
         userPermissions: {
-          deleteWorkItem: true,
-          updateWorkItem: true,
-          moveWorkItem: true,
           adminParentLink: true,
-          setWorkItemMetadata: true,
-          createNote: true,
           adminWorkItemLink: true,
+          createNote: true,
+          deleteWorkItem: true,
           markNoteAsInternal: true,
+          moveWorkItem: true,
           reportSpam: false,
+          setWorkItemMetadata: true,
+          summarizeComments: true,
+          updateWorkItem: true,
           __typename: 'WorkItemPermissions',
         },
         widgets: [
@@ -5932,15 +5948,16 @@ export const mockToggleResolveDiscussionResponse = {
 };
 
 const mockUserPermissions = {
-  deleteWorkItem: true,
-  updateWorkItem: true,
-  moveWorkItem: true,
   adminParentLin: true,
-  setWorkItemMetadata: true,
-  createNote: true,
   adminWorkItemLink: true,
+  createNote: true,
+  deleteWorkItem: true,
   markNoteAsInternal: true,
+  moveWorkItem: true,
   reportSpam: false,
+  setWorkItemMetadata: true,
+  summarizeComments: true,
+  updateWorkItem: true,
   __typename: 'WorkItemPermissions',
 };
 
@@ -6095,15 +6112,16 @@ export const workItemHierarchyNoChildrenTreeResponse = {
       },
       title: 'New title without children',
       userPermissions: {
-        deleteWorkItem: true,
-        updateWorkItem: true,
-        moveWorkItem: true,
-        setWorkItemMetadata: true,
         adminParentLink: true,
-        createNote: true,
         adminWorkItemLink: true,
+        createNote: true,
+        deleteWorkItem: true,
         markNoteAsInternal: true,
+        moveWorkItem: true,
         reportSpam: false,
+        setWorkItemMetadata: true,
+        summarizeComments: true,
+        updateWorkItem: true,
         __typename: 'WorkItemPermissions',
       },
       confidential: false,