diff --git a/app/assets/javascripts/members/components/table/max_role.vue b/app/assets/javascripts/members/components/table/max_role.vue
index 5159881b47409ff942d749456b434faea4e27cf0..5336a0c3d27271d541c87ea1d650642793535ce5 100644
--- a/app/assets/javascripts/members/components/table/max_role.vue
+++ b/app/assets/javascripts/members/components/table/max_role.vue
@@ -42,7 +42,6 @@ export default {
     return {
       accessLevelOptions,
       busy: false,
-      customPermissions: this.member.customPermissions ?? [],
       isDesktop: false,
       memberRoleId: this.member.accessLevel.memberRoleId ?? null,
       selectedRole: initialSelectedRole(accessLevelOptions.flatten, this.member),
diff --git a/app/presenters/member_presenter.rb b/app/presenters/member_presenter.rb
index d0c075c5b7e53eff3c86f60f1c51eea3ada86da1..3e32874aa4adc41a186226ea0c920e9f2a9f2d45 100644
--- a/app/presenters/member_presenter.rb
+++ b/app/presenters/member_presenter.rb
@@ -45,11 +45,6 @@ def can_override?
     false
   end
 
-  # This functionality is only available in EE.
-  def custom_permissions
-    []
-  end
-
   def last_owner?
     raise NotImplementedError
   end
diff --git a/app/serializers/member_entity.rb b/app/serializers/member_entity.rb
index 03ade5586c9707d9b4b43ebd3303edebd0d33994..016cb5e392c0be26d7effafad832dfc3143f3866 100644
--- a/app/serializers/member_entity.rb
+++ b/app/serializers/member_entity.rb
@@ -37,8 +37,6 @@ class MemberEntity < Grape::Entity
     expose :member_role_description, as: :description
   end
 
-  expose :custom_permissions
-
   expose :source, if: ->(member) { member.is_source_accessible_to_current_user } do |member|
     GroupEntity.represent(member.source, only: [:id, :full_name, :web_url])
   end
diff --git a/ee/app/presenters/ee/member_presenter.rb b/ee/app/presenters/ee/member_presenter.rb
index 568a00a67d1fe166d14511c08c3c198d7d58db4d..862e3017495e61870fbb681668c5f48b85278253 100644
--- a/ee/app/presenters/ee/member_presenter.rb
+++ b/ee/app/presenters/ee/member_presenter.rb
@@ -50,14 +50,6 @@ def valid_member_roles
       end
     end
 
-    def custom_permissions
-      return super unless member_role
-
-      member_role.enabled_permissions.each.map do |permission|
-        { key: permission, name: permission.to_s.humanize }
-      end
-    end
-
     delegator_override :member_role_description
     def member_role_description
       member_role&.description
diff --git a/ee/spec/frontend/members/components/table/max_role_spec.js b/ee/spec/frontend/members/components/table/max_role_spec.js
index 666d33ad7508bc8b2b26d0973e73aa18fb66c79d..bb639abf2f8beebd94b96be0abbba4ecbc9d7622 100644
--- a/ee/spec/frontend/members/components/table/max_role_spec.js
+++ b/ee/spec/frontend/members/components/table/max_role_spec.js
@@ -37,10 +37,6 @@ describe('MaxRole', () => {
       },
     });
   };
-  const CustomPermissionsStub = {
-    name: 'custompermissions-stub',
-    template: '<div></div>',
-  };
 
   const createComponent = (propsData = {}, store = createStore()) => {
     wrapper = mountExtended(MaxRole, {
@@ -57,9 +53,6 @@ describe('MaxRole', () => {
         ...propsData,
       },
       store,
-      stubs: {
-        CustomPermissions: CustomPermissionsStub,
-      },
       directives: {
         GlTooltip: createMockDirective('gl-tooltip'),
       },
@@ -107,7 +100,6 @@ describe('MaxRole', () => {
           member: {
             ...member,
             accessLevel: { integerValue: 50, stringValue: 'Owner', memberRoleId: null },
-            customPermissions: [],
           },
         },
         createStore({ updateMemberRoleReturn: () => Promise.reject(myError) }),
diff --git a/ee/spec/frontend/members/mock_data.js b/ee/spec/frontend/members/mock_data.js
index 577a2b003384f822e16b7c426126c8dae04380b2..38f832c29d79abcfd775327c8b3494dfb5b76699 100644
--- a/ee/spec/frontend/members/mock_data.js
+++ b/ee/spec/frontend/members/mock_data.js
@@ -24,8 +24,6 @@ export const customRoles = [
   { baseAccessLevel: 10, name: 'custom role 2', memberRoleId: 102 },
 ];
 
-export const customPermissions = [{ name: 'Read code' }, { name: 'Read vulnerability' }];
-
 export const upgradedMember = {
   ...member,
   accessLevel: {
@@ -34,7 +32,6 @@ export const upgradedMember = {
     memberRoleId: 101,
     description: 'custom role 1 description',
   },
-  customPermissions,
   customRoles,
 };
 
diff --git a/ee/spec/presenters/member_presenter_spec.rb b/ee/spec/presenters/member_presenter_spec.rb
index 3cf9155b205c75eb302a90c32a89f3901a0a4e6c..9002a3a13c816bbf0f2844d020106b06e847ec90 100644
--- a/ee/spec/presenters/member_presenter_spec.rb
+++ b/ee/spec/presenters/member_presenter_spec.rb
@@ -150,39 +150,5 @@
       it_behaves_like 'returning all custom roles for subgroup'
     end
   end
-
-  describe '#custom_permissions' do
-    context 'when user has static role' do
-      it 'returns an empty array for custom permissions' do
-        expect(presenter.custom_permissions).to be_empty
-      end
-
-      it 'returns an empty description' do
-        expect(presenter.member_role_description).to be_nil
-      end
-    end
-
-    context 'when user has custom role' do
-      let_it_be(:member_role) do
-        build_stubbed(:member_role, namespace: root_group, description: 'Role description',
-          read_vulnerability: true, admin_merge_request: true, read_code: false)
-      end
-
-      before do
-        member_root.member_role = member_role
-      end
-
-      it 'returns its abilities' do
-        expect(presenter.custom_permissions).to match_array(
-          [{ key: :read_vulnerability, name: 'Read vulnerability' },
-            { key: :admin_merge_request, name: 'Admin merge request' }]
-        )
-      end
-
-      it 'returns its description' do
-        expect(presenter.member_role_description).to eq('Role description')
-      end
-    end
-  end
 end
 # rubocop:enable RSpec/FactoryBot/AvoidCreate
diff --git a/spec/frontend/members/mock_data.js b/spec/frontend/members/mock_data.js
index a81f0bcf35fa4f2d221e74ed054fc865a776f8b1..dd18435e7ffe70ffa509aec99e557037676da9c6 100644
--- a/spec/frontend/members/mock_data.js
+++ b/spec/frontend/members/mock_data.js
@@ -52,7 +52,6 @@ export const member = {
     'Minimal access': 5,
   },
   customRoles: [],
-  customPermissions: [],
 };
 
 export const group = {