diff --git a/app/assets/javascripts/access_level/constants.js b/app/assets/javascripts/access_level/constants.js
index 619dc246829256e05331efd8f36f58c07e40ee02..7dc1d0e51e4c55267de5f5f2bec7040e7e509db4 100644
--- a/app/assets/javascripts/access_level/constants.js
+++ b/app/assets/javascripts/access_level/constants.js
@@ -25,6 +25,11 @@ export const BASE_ROLES = [
   { value: 'OWNER', text: ACCESS_LEVEL_OWNER },
 ];
 
+export const BASE_ROLES_INC_MINIMAL_ACCESS = [
+  { value: 'MINIMAL_ACCESS', text: ACCESS_LEVEL_MINIMAL_ACCESS },
+  ...BASE_ROLES,
+];
+
 export const ACCESS_LEVEL_LABELS = {
   [ACCESS_LEVEL_NO_ACCESS_INTEGER]: ACCESS_LEVEL_NO_ACCESS,
   [ACCESS_LEVEL_MINIMAL_ACCESS_INTEGER]: ACCESS_LEVEL_MINIMAL_ACCESS,
diff --git a/ee/app/assets/javascripts/roles_and_permissions/components/create_member_role.vue b/ee/app/assets/javascripts/roles_and_permissions/components/create_member_role.vue
index 4e5cef5e3717f52c3f9e760a4ea3ce0ca0501e5c..2dc204ac79e53295c2d68b2b2de3383e4e24d996 100644
--- a/ee/app/assets/javascripts/roles_and_permissions/components/create_member_role.vue
+++ b/ee/app/assets/javascripts/roles_and_permissions/components/create_member_role.vue
@@ -14,7 +14,7 @@ import {
 import { difference, pull } from 'lodash';
 import { createAlert } from '~/alert';
 import { sprintf, s__, __ } from '~/locale';
-import { BASE_ROLES } from '~/access_level/constants';
+import { BASE_ROLES_INC_MINIMAL_ACCESS } from '~/access_level/constants';
 import memberRolePermissionsQuery from 'ee/roles_and_permissions/graphql/member_role_permissions.query.graphql';
 import { visitUrl } from '~/lib/utils/url_utility';
 import { helpPagePath } from '~/helpers/help_page_helper';
@@ -217,7 +217,7 @@ export default {
       }
     },
   },
-  BASE_ROLES,
+  BASE_ROLES_INC_MINIMAL_ACCESS,
 };
 </script>
 
@@ -278,7 +278,7 @@ export default {
         id="base-role-select"
         v-model="baseRole"
         width="md"
-        :options="$options.BASE_ROLES"
+        :options="$options.BASE_ROLES_INC_MINIMAL_ACCESS"
         :state="baseRoleValid"
       />
     </gl-form-group>
diff --git a/ee/app/models/members/member_role.rb b/ee/app/models/members/member_role.rb
index f15f5d9cf46af0647cb1e37f5f3e1358bf7a3a41..aad98fc69b6f8ea62cf23f86aa3da1a209f97fc6 100644
--- a/ee/app/models/members/member_role.rb
+++ b/ee/app/models/members/member_role.rb
@@ -6,7 +6,9 @@ class MemberRole < ApplicationRecord # rubocop:disable Gitlab/NamespacedClass
 
   MAX_COUNT_PER_GROUP_HIERARCHY = 10
 
-  LEVELS = ::Gitlab::Access.options_with_owner.values.freeze
+  # base_access_level is validated against this array,
+  # so a migration may be needed if you change it
+  LEVELS = ::Gitlab::Access.options_with_minimal_access.values.freeze
 
   has_many :members
   has_many :saml_providers
diff --git a/ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js b/ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js
index 1a46cc9b1d0d1b2f69d7841276e726f38dd2b52e..092875b3684c7ee2bfc90df2a0604b49a80139b3 100644
--- a/ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js
+++ b/ee/spec/frontend/roles_and_permissions/components/create_member_role_spec.js
@@ -88,6 +88,7 @@ describe('CreateMemberRole', () => {
     createComponent({ stubs });
 
     expect(findSelect().props('options')).toEqual([
+      { value: 'MINIMAL_ACCESS', text: 'Minimal Access' },
       { value: 'GUEST', text: 'Guest' },
       { value: 'REPORTER', text: 'Reporter' },
       { value: 'DEVELOPER', text: 'Developer' },
diff --git a/ee/spec/models/members/member_role_spec.rb b/ee/spec/models/members/member_role_spec.rb
index b6f0626499a60da132db204f6c3fac229b9a0d4c..709b029faa37f5e8a0d4171481c5b0eef3ac50aa 100644
--- a/ee/spec/models/members/member_role_spec.rb
+++ b/ee/spec/models/members/member_role_spec.rb
@@ -17,7 +17,11 @@
 
     it { is_expected.to validate_presence_of(:name) }
     it { is_expected.to validate_presence_of(:base_access_level) }
-    it { is_expected.to validate_inclusion_of(:base_access_level).in_array(described_class::LEVELS) }
+
+    it do
+      is_expected.to validate_inclusion_of(:base_access_level)
+        .in_array(::Gitlab::Access.options_with_minimal_access.values.freeze)
+    end
 
     describe 'name uniqueness validation' do
       let_it_be(:group) { create(:group) }