diff --git a/config/feature_flags/beta/ai_custom_model.yml b/config/feature_flags/beta/ai_custom_model.yml
deleted file mode 100644
index 0957ca144637adba9ecbcb7e1c6bf41aa2e43973..0000000000000000000000000000000000000000
--- a/config/feature_flags/beta/ai_custom_model.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: ai_custom_model
-feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/455590
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/152107
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/460254
-milestone: '17.1'
-group: group::custom models
-type: beta
-default_enabled: true
diff --git a/doc/administration/self_hosted_models/configuration_types.md b/doc/administration/self_hosted_models/configuration_types.md
index 096b0f159976072bddd07fbe36fd7ab52926276c..cccd770b6cd4bb725706abbfdd5963cacbaa56b8 100644
--- a/doc/administration/self_hosted_models/configuration_types.md
+++ b/doc/administration/self_hosted_models/configuration_types.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 There are two configuration options for self-managed customers:
 
diff --git a/doc/administration/self_hosted_models/configure_duo_features.md b/doc/administration/self_hosted_models/configure_duo_features.md
index 01ee396f1b707c8f848a7fb037261e5f044f9a3d..291444baa0ac28827f7e5203fe2555c0d28d69d6 100644
--- a/doc/administration/self_hosted_models/configure_duo_features.md
+++ b/doc/administration/self_hosted_models/configure_duo_features.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 To configure your GitLab instance to access the available self-hosted models in your infrastructure:
 
diff --git a/doc/administration/self_hosted_models/index.md b/doc/administration/self_hosted_models/index.md
index 375eaf124370ebf724e10cf8fc1adea4f2a9e6dd..6e84966fe9f08896991c6ea787e583ab636281c6 100644
--- a/doc/administration/self_hosted_models/index.md
+++ b/doc/administration/self_hosted_models/index.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 To maintain full control over your data privacy, security, and the deployment of large language models (LLMs) in your own infrastructure, use GitLab Duo Self-Hosted Models.
 
diff --git a/doc/administration/self_hosted_models/licensing_and_offerings.md b/doc/administration/self_hosted_models/licensing_and_offerings.md
index 65b73e522512bdb769df11a8dc38ce52f24b7df9..4d705da384c39d059016175bc9bd2c379c35b331 100644
--- a/doc/administration/self_hosted_models/licensing_and_offerings.md
+++ b/doc/administration/self_hosted_models/licensing_and_offerings.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 To deploy self-hosted AI models, you need GitLab Ultimate and Duo Enterprise - [Start a trial](https://about.gitlab.com/solutions/gitlab-duo-pro/sales/?type=free-trial).
 
diff --git a/doc/administration/self_hosted_models/logging.md b/doc/administration/self_hosted_models/logging.md
index c82c989a86c41672ab2df916a4623565cc100e96..9b1d369b805c13342bd3a6c9522f8f0b914f92c9 100644
--- a/doc/administration/self_hosted_models/logging.md
+++ b/doc/administration/self_hosted_models/logging.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 Prerequisites:
 
diff --git a/doc/administration/self_hosted_models/related_topics.md b/doc/administration/self_hosted_models/related_topics.md
index 2874765f7bf8f308057842728bc5d8dc30a1848a..d2a3c8350b8994ff5bf289f107a21f5cb684d88b 100644
--- a/doc/administration/self_hosted_models/related_topics.md
+++ b/doc/administration/self_hosted_models/related_topics.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 ## AWS Bedrock
 
diff --git a/doc/administration/self_hosted_models/supported_llm_serving_platforms.md b/doc/administration/self_hosted_models/supported_llm_serving_platforms.md
index b765ed49b6f968f980ade4318d429affe6e8b283..17a36d3b43f409de0185db3f76a4463d17854a65 100644
--- a/doc/administration/self_hosted_models/supported_llm_serving_platforms.md
+++ b/doc/administration/self_hosted_models/supported_llm_serving_platforms.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 There are multiple platforms available to host your self-hosted Large Language Models (LLMs). Each platform has unique features and benefits that can cater to different needs. The following documentation summarises the currently supported options:
 
diff --git a/doc/administration/self_hosted_models/supported_models_and_hardware_requirements.md b/doc/administration/self_hosted_models/supported_models_and_hardware_requirements.md
index e0f2e2189e932f121db98f7600f1222fb4865edd..30060ef22ea5c8b1f4e47906cd677accfaaa6a38 100644
--- a/doc/administration/self_hosted_models/supported_models_and_hardware_requirements.md
+++ b/doc/administration/self_hosted_models/supported_models_and_hardware_requirements.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 The following table shows the supported models along with their specific features and hardware requirements to help you select the model that best fits your infrastructure needs for optimal performance.
 
diff --git a/doc/administration/self_hosted_models/troubleshooting.md b/doc/administration/self_hosted_models/troubleshooting.md
index eb4828ad9f5c01e0e3b4dd86af151868637340ad..611dbf3e7a4865235bf5837a9acc883f92f2d1bc 100644
--- a/doc/administration/self_hosted_models/troubleshooting.md
+++ b/doc/administration/self_hosted_models/troubleshooting.md
@@ -15,6 +15,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 When working with GitLab Duo Self-Hosted Models, you might encounter issues.
 
diff --git a/doc/development/custom_models/index.md b/doc/development/custom_models/index.md
index aec3c654d0a17ddb9cbd3b706f62202e4e57664a..276b38c9da9129a180505d5349b97933b851f62e 100644
--- a/doc/development/custom_models/index.md
+++ b/doc/development/custom_models/index.md
@@ -9,11 +9,6 @@ info: Any user with at least the Maintainer role can merge updates to this conte
 ## Set up your local GitLab instance
 
 1. [Configure GDK to set up Duo Features in the local environment](../ai_features/index.md)
-1. For GitLab Rails, enable `ai_custom_model` feature flag:
-
-   ```ruby
-   Feature.enable(:ai_custom_model)
-   ```
 
 1. For AI gateway:
 
diff --git a/doc/user/gitlab_duo/index.md b/doc/user/gitlab_duo/index.md
index 02bda7cd4425263eb7e30398b95a41bce1a54767..8458d359c3d7640c8124922e9261a41126574a68 100644
--- a/doc/user/gitlab_duo/index.md
+++ b/doc/user/gitlab_duo/index.md
@@ -175,6 +175,7 @@ DETAILS:
 > - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/12972) in GitLab 17.1 [with a flag](../../administration/feature_flags.md) named `ai_custom_model`. Disabled by default.
 > - [Enabled on self-managed](https://gitlab.com/groups/gitlab-org/-/epics/15176) in GitLab 17.6.
 > - Changed to require GitLab Duo add-on in GitLab 17.6 and later.
+> - Feature flag `ai_custom_model` removed in GitLab 17.8
 
 Host the language models that power AI features in GitLab. Code Suggestions and Duo Chat are supported.
 
diff --git a/ee/app/controllers/admin/ai/self_hosted_models_controller.rb b/ee/app/controllers/admin/ai/self_hosted_models_controller.rb
index 60f7661d5cff747e99b2ba7b8ec7ce446af4ae86..433fd7f611afcca1fdbc5b143cab6c445fdad12d 100644
--- a/ee/app/controllers/admin/ai/self_hosted_models_controller.rb
+++ b/ee/app/controllers/admin/ai/self_hosted_models_controller.rb
@@ -22,7 +22,6 @@ def ensure_registration!
       end
 
       def ensure_feature_enabled!
-        render_404 unless Feature.enabled?(:ai_custom_model) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
         render_404 unless Ability.allowed?(current_user, :manage_ai_settings)
       end
     end
diff --git a/ee/app/controllers/admin/ai/terms_and_conditions_controller.rb b/ee/app/controllers/admin/ai/terms_and_conditions_controller.rb
index dfb90dd652c84b7a9d12cdc8c85d824b1fbeae07..31450d0fa440f04e051ad923a599a860ba63463a 100644
--- a/ee/app/controllers/admin/ai/terms_and_conditions_controller.rb
+++ b/ee/app/controllers/admin/ai/terms_and_conditions_controller.rb
@@ -25,7 +25,6 @@ def create
       private
 
       def ensure_feature_enabled!
-        render_404 unless Feature.enabled?(:ai_custom_model) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
         render_404 unless Ability.allowed?(current_user, :manage_ai_settings)
       end
 
diff --git a/ee/app/graphql/mutations/ai/feature_settings/base.rb b/ee/app/graphql/mutations/ai/feature_settings/base.rb
index 4d49a9347cbe9baa21b9d0676f6b3f933f079f1c..65231681197b095b764562a7219e7a87a920f082 100644
--- a/ee/app/graphql/mutations/ai/feature_settings/base.rb
+++ b/ee/app/graphql/mutations/ai/feature_settings/base.rb
@@ -13,8 +13,6 @@ class Base < BaseMutation
         private
 
         def check_feature_access!
-          raise_resource_not_available_error! unless Feature.enabled?(:ai_custom_model) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-
           raise_resource_not_available_error! unless Ability.allowed?(current_user, :manage_ai_settings)
         end
       end
diff --git a/ee/app/graphql/mutations/ai/self_hosted_models/base.rb b/ee/app/graphql/mutations/ai/self_hosted_models/base.rb
index 0f33b766c332e9311840647ba3cb0d578ffda903..fe61191e10587bef4239e9fc08810a0f0aa889cb 100644
--- a/ee/app/graphql/mutations/ai/self_hosted_models/base.rb
+++ b/ee/app/graphql/mutations/ai/self_hosted_models/base.rb
@@ -37,8 +37,6 @@ def self.arguments_for_model_attributes
         private
 
         def check_feature_access!
-          raise_resource_not_available_error! unless Feature.enabled?(:ai_custom_model) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-
           raise_resource_not_available_error! unless Ability.allowed?(current_user, :manage_ai_settings)
         end
       end
diff --git a/ee/app/graphql/resolvers/ai/feature_settings/feature_settings_resolver.rb b/ee/app/graphql/resolvers/ai/feature_settings/feature_settings_resolver.rb
index 47e0e8f08897bf86324ed5b31ede5a20d401f155..fe41003003941c87d829511cbca68efbe125ebde 100644
--- a/ee/app/graphql/resolvers/ai/feature_settings/feature_settings_resolver.rb
+++ b/ee/app/graphql/resolvers/ai/feature_settings/feature_settings_resolver.rb
@@ -14,11 +14,6 @@ class FeatureSettingsResolver < BaseResolver
           description: 'Global ID of the self-hosted model.'
 
         def resolve(self_hosted_model_id: nil)
-          # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-          unless Feature.enabled?(:ai_custom_model)
-            raise_resource_not_available_error!("The 'ai_custom_model' feature is not enabled.")
-          end
-          # rubocop:enable Gitlab/FeatureFlagWithoutActor
           raise_resource_not_available_error! unless Ability.allowed?(current_user, :manage_ai_settings)
 
           feature_settings = get_feature_settings(self_hosted_model_id)
diff --git a/ee/app/graphql/resolvers/ai/self_hosted_models/self_hosted_models_resolver.rb b/ee/app/graphql/resolvers/ai/self_hosted_models/self_hosted_models_resolver.rb
index 2023fb8aef5ea2026f0cb40e736b00b62427bb25..d90c28b8c335041e44471ad3c44f01827200d69e 100644
--- a/ee/app/graphql/resolvers/ai/self_hosted_models/self_hosted_models_resolver.rb
+++ b/ee/app/graphql/resolvers/ai/self_hosted_models/self_hosted_models_resolver.rb
@@ -7,7 +7,6 @@ class SelfHostedModelsResolver < BaseResolver
         type ::Types::Ai::SelfHostedModels::SelfHostedModelType.connection_type, null: false
 
         def resolve(**args)
-          return unless Feature.enabled?(:ai_custom_model) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
           return unless Ability.allowed?(current_user, :manage_ai_settings)
 
           if args[:id]
diff --git a/ee/lib/ee/sidebars/admin/panel.rb b/ee/lib/ee/sidebars/admin/panel.rb
index 635a08bde968cefe970e5f15415a5e31567bca58..460806eea411b9d93dcd4452979af3fbe31a3908 100644
--- a/ee/lib/ee/sidebars/admin/panel.rb
+++ b/ee/lib/ee/sidebars/admin/panel.rb
@@ -53,8 +53,7 @@ def insert_gilab_duo_menu
         end
 
         def self_hosted_models_enabled?
-          ::Feature.enabled?(:ai_custom_model) && # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-            License.current&.ultimate? &&
+          License.current&.ultimate? &&
             GitlabSubscriptions::AddOnPurchase.for_duo_enterprise.active.exists?
         end
       end
diff --git a/ee/lib/gitlab/ai/self_hosted/ai_gateway.rb b/ee/lib/gitlab/ai/self_hosted/ai_gateway.rb
index 5e842fd37c31293a31b3c45cc3c598731f2873a1..0fa1384f05d2b4eeeeb9f8507bc8c084e1ef818d 100644
--- a/ee/lib/gitlab/ai/self_hosted/ai_gateway.rb
+++ b/ee/lib/gitlab/ai/self_hosted/ai_gateway.rb
@@ -11,8 +11,7 @@ module AiGateway
         # Air-gapped instances cannot connect to GitLab's default CloudConnector
         # and are hence required to self-host their own AI Gateway (and the models)
         def required?
-          ::Feature.enabled?(:ai_custom_model) && # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-            ::License.current&.offline_cloud_license?
+          ::License.current&.offline_cloud_license?
         end
 
         def probes(user)
diff --git a/ee/lib/gitlab/duo/administration/verify_self_hosted_setup.rb b/ee/lib/gitlab/duo/administration/verify_self_hosted_setup.rb
index fb49f6886910bc73830a520400154827aad0b1a1..9f8cd0d97a785938d37572f781ce6bf63c471d7d 100644
--- a/ee/lib/gitlab/duo/administration/verify_self_hosted_setup.rb
+++ b/ee/lib/gitlab/duo/administration/verify_self_hosted_setup.rb
@@ -21,7 +21,6 @@ def execute
 
           verify_environmental_variables!
           verify_license_access!
-          enable_feature_flag
           verify_aigateway_access!
         end
 
@@ -54,12 +53,6 @@ def verify_license_access!
           raise "License does not provide access to code suggestions, verify your license"
         end
 
-        def enable_feature_flag
-          Feature.enable(:ai_custom_model)
-
-          puts("Feature flag enabled ✔")
-        end
-
         def verify_aigateway_access!
           puts "Checking if AI Gateway is accessible..."
 
diff --git a/ee/spec/lib/gitlab/ai/self_hosted/ai_gateway_spec.rb b/ee/spec/lib/gitlab/ai/self_hosted/ai_gateway_spec.rb
index e5a1c654e82b947bc843fce490f7e483812187ae..58fc97ac9fc58a9fb6613f5bb71f6c836288bcac 100644
--- a/ee/spec/lib/gitlab/ai/self_hosted/ai_gateway_spec.rb
+++ b/ee/spec/lib/gitlab/ai/self_hosted/ai_gateway_spec.rb
@@ -18,13 +18,6 @@
       it 'returns true' do
         expect(described_class.required?).to be(true)
       end
-
-      context 'when the feature flag :ai_custom_model is disabled' do
-        it 'returns false' do
-          stub_feature_flags(ai_custom_model: false)
-          expect(described_class.required?).to be(false)
-        end
-      end
     end
   end
 
diff --git a/ee/spec/lib/gitlab/duo/administration/verify_self_hosted_setup_spec.rb b/ee/spec/lib/gitlab/duo/administration/verify_self_hosted_setup_spec.rb
index 3d8c9477254971a80d9d14662e77ac6b2fb1c02e..539816a6fae1b04b03e9a062a165be2cd2268021 100644
--- a/ee/spec/lib/gitlab/duo/administration/verify_self_hosted_setup_spec.rb
+++ b/ee/spec/lib/gitlab/duo/administration/verify_self_hosted_setup_spec.rb
@@ -93,14 +93,6 @@
     end
   end
 
-  it 'enables the feature flag' do
-    Feature.disable(:ai_custom_model)
-
-    verify_setup
-
-    expect(Feature.enabled?(:ai_custom_model)).to be(true) # rubocop:disable Gitlab/FeatureFlagWithoutActor -- The feature flag is global
-  end
-
   context 'when connection to ai_gateway fails' do
     before do
       allow(Gitlab::HTTP).to receive(:get).with("#{ai_gateway_url}/monitoring/healthz",
diff --git a/ee/spec/lib/sidebars/admin/panel_spec.rb b/ee/spec/lib/sidebars/admin/panel_spec.rb
index 81ec96410013a901f8d6a6ac170eaeab77fe2bc3..f02977f559d6021c99825e2f688c1fb9c758cdec 100644
--- a/ee/spec/lib/sidebars/admin/panel_spec.rb
+++ b/ee/spec/lib/sidebars/admin/panel_spec.rb
@@ -63,49 +63,34 @@
       end
 
       context 'when instance has a paid license' do
-        context 'when ai_custom_model feature is disabled' do
-          before do
-            stub_feature_flags(ai_custom_model: false)
-          end
-
+        context 'when instance does not have an ultimate license' do
           it_behaves_like 'shows code suggestions menu'
           it_behaves_like 'hides self-hosted models menu'
         end
 
-        context 'when ai_custom_model feature is enabled' do
-          before do
-            stub_feature_flags(ai_custom_model: true)
-          end
+        context 'when instance has an ultimate license' do
+          let(:ultimate_license) { build(:license, plan: License::ULTIMATE_PLAN) }
 
-          context 'when instance does not have an ultimate license' do
-            it_behaves_like 'shows code suggestions menu'
-            it_behaves_like 'hides self-hosted models menu'
+          before do
+            allow(License).to receive(:current).and_return(ultimate_license)
           end
 
-          context 'when instance has an ultimate license' do
-            let(:ultimate_license) { build(:license, plan: License::ULTIMATE_PLAN) }
-
-            before do
-              allow(License).to receive(:current).and_return(ultimate_license)
+          context 'when instance has a Duo Enterprise subscription' do
+            let_it_be(:add_on_purchase) do
+              create(:gitlab_subscription_add_on_purchase, :duo_enterprise, :active) # rubocop:disable RSpec/FactoryBot/AvoidCreate -- persisted record required
             end
 
-            context 'when instance has a Duo Enterprise subscription' do
-              let_it_be(:add_on_purchase) do
-                create(:gitlab_subscription_add_on_purchase, :duo_enterprise, :active) # rubocop:disable RSpec/FactoryBot/AvoidCreate -- persisted record required
-              end
+            it_behaves_like 'shows code suggestions menu'
+            it_behaves_like 'shows self-hosted models menu'
+          end
 
-              it_behaves_like 'shows code suggestions menu'
-              it_behaves_like 'shows self-hosted models menu'
+          context 'when instance does not have a Duo Enterprise subscription' do
+            let_it_be(:add_on_purchase) do
+              create(:gitlab_subscription_add_on_purchase, :duo_enterprise, :expired) # rubocop:disable RSpec/FactoryBot/AvoidCreate -- persisted record required
             end
 
-            context 'when instance does not have a Duo Enterprise subscription' do
-              let_it_be(:add_on_purchase) do
-                create(:gitlab_subscription_add_on_purchase, :duo_enterprise, :expired) # rubocop:disable RSpec/FactoryBot/AvoidCreate -- persisted record required
-              end
-
-              it_behaves_like 'shows code suggestions menu'
-              it_behaves_like 'hides self-hosted models menu'
-            end
+            it_behaves_like 'shows code suggestions menu'
+            it_behaves_like 'hides self-hosted models menu'
           end
         end
       end
diff --git a/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb b/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb
index de723532b31d3f3907552da1f22362c4b15f5d38..63086f333bc385effe6645fd2eeac21f5702c4e8 100644
--- a/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb
+++ b/ee/spec/requests/admin/ai/self_hosted_models_controller_spec.rb
@@ -28,18 +28,6 @@
   end
 
   shared_examples 'returns 404' do
-    context 'when ai_custom_model feature flag is disabled' do
-      before do
-        stub_feature_flags(ai_custom_model: false)
-      end
-
-      it 'returns 404' do
-        perform_request
-
-        expect(response).to have_gitlab_http_status(:not_found)
-      end
-    end
-
     context 'when the user is not authorized' do
       it 'performs the right authorization correctly' do
         allow(Ability).to receive(:allowed?).and_call_original
diff --git a/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb b/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb
index fdf8ba06b16f984a5a1e2d58f922c66d1552e9a1..06a491c4822c6b188fe5e1188e78defad23473fe 100644
--- a/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb
+++ b/ee/spec/requests/admin/ai/terms_and_conditions_controller_spec.rb
@@ -12,18 +12,6 @@
   end
 
   shared_examples 'returns 404' do
-    context 'when ai_custom_model feature flag is disabled' do
-      before do
-        stub_feature_flags(ai_custom_model: false)
-      end
-
-      it 'returns 404' do
-        perform_request
-
-        expect(response).to have_gitlab_http_status(:not_found)
-      end
-    end
-
     context 'when the user is not authorized' do
       it 'performs the right authorization correctly' do
         allow(Ability).to receive(:allowed?).and_call_original
diff --git a/ee/spec/requests/api/graphql/ai/feature_settings/feature_settings_spec.rb b/ee/spec/requests/api/graphql/ai/feature_settings/feature_settings_spec.rb
index 2f77995a83e547b1334618e8808ca6b78a8f88f8..a020353815160b22c36d59027db8d3d03bbc5f03 100644
--- a/ee/spec/requests/api/graphql/ai/feature_settings/feature_settings_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/feature_settings/feature_settings_spec.rb
@@ -72,14 +72,6 @@
     end
   end
 
-  context 'when the ai_custom_model FF is disabled' do
-    before do
-      stub_feature_flags(ai_custom_model: false)
-    end
-
-    it_behaves_like 'an error response', "The 'ai_custom_model' feature is not enabled."
-  end
-
   context "when the user is authorized" do
     context 'when no query parameters are given' do
       let(:expected_response) do
@@ -90,12 +82,10 @@
         end
       end
 
-      context 'when the ai_custom_model feature flag is enabled' do
-        it 'returns the expected response' do
-          post_graphql(query, current_user: current_user)
+      it 'returns the expected response' do
+        post_graphql(query, current_user: current_user)
 
-          expect(ai_feature_settings_data).to match_array(expected_response)
-        end
+        expect(ai_feature_settings_data).to match_array(expected_response)
       end
     end
 
diff --git a/ee/spec/requests/api/graphql/ai/feature_settings/update_spec.rb b/ee/spec/requests/api/graphql/ai/feature_settings/update_spec.rb
index 9ca3cba29347fcde6eee8e6cd98d43c3ef91dc76..3a99ad6e6fc56b0b4a4476db5763019f8d59ad42 100644
--- a/ee/spec/requests/api/graphql/ai/feature_settings/update_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/feature_settings/update_spec.rb
@@ -22,14 +22,6 @@
   subject(:request) { post_graphql_mutation(mutation, current_user: current_user) }
 
   describe '#resolve' do
-    context 'when the ai_custom_model FF is disabled' do
-      before do
-        stub_feature_flags(ai_custom_model: false)
-      end
-
-      it_behaves_like 'a mutation that returns a top-level access error'
-    end
-
     context 'when the user does not have write access' do
       let(:current_user) { create(:user) }
 
diff --git a/ee/spec/requests/api/graphql/ai/self_hosted_models/connection_check_spec.rb b/ee/spec/requests/api/graphql/ai/self_hosted_models/connection_check_spec.rb
index bd825e5f3df4d580afae87c58523ce7d517c9a7a..7a58c1ffbacaa4b9e7482fcb4152793eb7ac00bc 100644
--- a/ee/spec/requests/api/graphql/ai/self_hosted_models/connection_check_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/self_hosted_models/connection_check_spec.rb
@@ -33,14 +33,6 @@
     end
   end
 
-  context 'when the ai_custom_model FF is disabled' do
-    before do
-      stub_feature_flags(ai_custom_model: false)
-    end
-
-    it_behaves_like 'a mutation that returns a top-level access error'
-  end
-
   context 'when user is not allowed to write changes' do
     let(:current_user) { create(:user) }
 
diff --git a/ee/spec/requests/api/graphql/ai/self_hosted_models/create_spec.rb b/ee/spec/requests/api/graphql/ai/self_hosted_models/create_spec.rb
index 58a21412e4a676641a412d529a888a21e751fa5d..18fe597811f73024d798a700e54fce88fe33c275 100644
--- a/ee/spec/requests/api/graphql/ai/self_hosted_models/create_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/self_hosted_models/create_spec.rb
@@ -33,14 +33,6 @@
     end
   end
 
-  context 'when the ai_custom_model FF is disabled' do
-    before do
-      stub_feature_flags(ai_custom_model: false)
-    end
-
-    it_behaves_like 'a mutation that returns a top-level access error'
-  end
-
   context 'when user is not allowed to write changes' do
     let(:current_user) { create(:user) }
 
diff --git a/ee/spec/requests/api/graphql/ai/self_hosted_models/delete_spec.rb b/ee/spec/requests/api/graphql/ai/self_hosted_models/delete_spec.rb
index 37d1d062ceacbc1565073aac7c3eee7ed230ef53..20bbef9097fad7e2a4d8313f2224a855927a4a3a 100644
--- a/ee/spec/requests/api/graphql/ai/self_hosted_models/delete_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/self_hosted_models/delete_spec.rb
@@ -23,14 +23,6 @@
   subject(:request) { post_graphql_mutation(mutation, current_user: current_user) }
 
   describe '#resolve' do
-    context 'when the ai_custom_model FF is disabled' do
-      before do
-        stub_feature_flags(ai_custom_model: false)
-      end
-
-      it_behaves_like 'a mutation that returns a top-level access error'
-    end
-
     context 'when the user does not have write access' do
       let(:current_user) { create(:user) }
 
diff --git a/ee/spec/requests/api/graphql/ai/self_hosted_models/self_hosted_models_spec.rb b/ee/spec/requests/api/graphql/ai/self_hosted_models/self_hosted_models_spec.rb
index 44975463cb48a73c849fc30fadcff4efb9455a59..9382e8e74fac635e08325dc8896d831b802d4c6b 100644
--- a/ee/spec/requests/api/graphql/ai/self_hosted_models/self_hosted_models_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/self_hosted_models/self_hosted_models_spec.rb
@@ -80,18 +80,6 @@
     it_behaves_like 'performs the right authorization'
   end
 
-  context 'when the ai_custom_model FF is disabled' do
-    before do
-      stub_feature_flags(ai_custom_model: false)
-    end
-
-    it 'does not return self-hosted model data' do
-      request
-
-      expect(ai_self_hosted_models_data).to be_nil
-    end
-  end
-
   context 'when a self-hosted model id is provided' do
     let(:self_hosted_model_gid) { self_hosted_models.first.to_global_id }
     let(:query) do
diff --git a/ee/spec/requests/api/graphql/ai/self_hosted_models/update_spec.rb b/ee/spec/requests/api/graphql/ai/self_hosted_models/update_spec.rb
index 7cab43557cce3eb0f812b48e00c23f155e65c773..1f7ec00c57b2accbdb0a35456f97a63187fc06dc 100644
--- a/ee/spec/requests/api/graphql/ai/self_hosted_models/update_spec.rb
+++ b/ee/spec/requests/api/graphql/ai/self_hosted_models/update_spec.rb
@@ -33,14 +33,6 @@
   subject(:request) { post_graphql_mutation(mutation, current_user: current_user) }
 
   describe '#resolve' do
-    context 'when the ai_custom_model FF is disabled' do
-      before do
-        stub_feature_flags(ai_custom_model: false)
-      end
-
-      it_behaves_like 'a mutation that returns a top-level access error'
-    end
-
     context 'when the user does not have write access' do
       let(:current_user) { create(:user) }