diff --git a/app/views/search/results/_filters.html.haml b/app/views/search/results/_filters.html.haml
index 632d3dfd58cdd65c01fb98936e3c00f284ee923c..2356a6e1f2c84d3cf38e6f3b0711857e369230e1 100644
--- a/app/views/search/results/_filters.html.haml
+++ b/app/views/search/results/_filters.html.haml
@@ -1,7 +1,6 @@
 .d-lg-flex.align-items-end
   #js-search-filter-by-state{ 'v-cloak': true }
-  - if Feature.enabled?(:search_filter_by_confidential, @group)
-    #js-search-filter-by-confidential{ 'v-cloak': true }
+  #js-search-filter-by-confidential{ 'v-cloak': true }
 
   - if %w(issues merge_requests).include?(@scope)
     %hr.gl-mt-4.gl-mb-4
diff --git a/changelogs/unreleased/244923-feature-flag-rollout-of-search_filter_by_confidential.yml b/changelogs/unreleased/244923-feature-flag-rollout-of-search_filter_by_confidential.yml
new file mode 100644
index 0000000000000000000000000000000000000000..806a15dc992fdf87de4d7a2f40269c1721e7748f
--- /dev/null
+++ b/changelogs/unreleased/244923-feature-flag-rollout-of-search_filter_by_confidential.yml
@@ -0,0 +1,5 @@
+---
+title: Remove search_filter_by_confidential Feature Flag
+merge_request: 45819
+author:
+type: changed
diff --git a/config/feature_flags/development/search_filter_by_confidential.yml b/config/feature_flags/development/search_filter_by_confidential.yml
deleted file mode 100644
index 0a952a4d25e4deca60c6e41c501c2c26070e9a6c..0000000000000000000000000000000000000000
--- a/config/feature_flags/development/search_filter_by_confidential.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-name: search_filter_by_confidential
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40793
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/244923
-group: group::global search
-type: development
-default_enabled: false
\ No newline at end of file
diff --git a/doc/api/search.md b/doc/api/search.md
index bdf5bdd49244a96bc250b591f93e97e2bfd482c2..9eb9f93e5d086f54cd5b5543b3ea2379746d7fcf 100644
--- a/doc/api/search.md
+++ b/doc/api/search.md
@@ -7,7 +7,8 @@ type: reference, api
 
 # Search API
 
-> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41763) in GitLab 10.5.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41763) in GitLab 10.5.
+> - [Feature flag `search_filter_by_confidential` removed](https://gitlab.com/gitlab-org/gitlab/-/issues/244923) in GitLab 13.6.
 
 Every API call to search must be authenticated.
 
@@ -24,7 +25,7 @@ GET /search
 | `scope`       | string   | yes        | The scope to search in                |
 | `search`      | string   | yes        | The search query  |
 | `state`       | string   | no        | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
-| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). |
+| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
 
 Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, snippet_titles, users.
 
@@ -434,7 +435,7 @@ GET /groups/:id/search
 | `scope`       | string   | yes        | The scope to search in                |
 | `search`      | string   | yes        | The search query  |
 | `state`       | string   | no        | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
-| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). |
+| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
 
 Search the expression within the specified scope. Currently these scopes are supported: projects, issues, merge_requests, milestones, users.
 
@@ -814,7 +815,7 @@ GET /projects/:id/search
 | `search`      | string   | yes        | The search query  |
 | `ref`         | string   | no         | The name of a repository branch or tag to search on. The project's default branch is used by default. This is only applicable for scopes: commits, blobs, and wiki_blobs.  |
 | `state`       | string   | no        | Filter by state. Issues and merge requests are supported; it is ignored for other scopes. |
-| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. This parameter is behind a [feature flag (`search_filter_by_confidential`)](../administration/feature_flags.md). |
+| `confidential` | boolean   | no         | Filter by confidentiality. Issues scope is supported; it is ignored for other scopes. |
 
 Search the expression within the specified scope. Currently these scopes are supported: issues, merge_requests, milestones, notes, wiki_blobs, commits, blobs, users.
 
diff --git a/ee/lib/elastic/latest/issue_class_proxy.rb b/ee/lib/elastic/latest/issue_class_proxy.rb
index 57b716cfe805cc2efe6186739b059ba598c80253..281e23fac29540ce94e7ce0dd1402c660d6dc630 100644
--- a/ee/lib/elastic/latest/issue_class_proxy.rb
+++ b/ee/lib/elastic/latest/issue_class_proxy.rb
@@ -37,7 +37,7 @@ def confidentiality_filter(query_hash, options)
         current_user = options[:current_user]
         project_ids = options[:project_ids]
 
-        if [true, false].include?(options[:confidential]) && Feature.enabled?(:search_filter_by_confidential)
+        if [true, false].include?(options[:confidential])
           query_hash[:query][:bool][:filter] << { term: { confidential: options[:confidential] } }
         end
 
diff --git a/lib/gitlab/search_results.rb b/lib/gitlab/search_results.rb
index b81264c5d0c7b68c91cb28914a1cf89cad9490f1..a7fc9e8194fc6e981884e9cfc53b8fab28f3db2e 100644
--- a/lib/gitlab/search_results.rb
+++ b/lib/gitlab/search_results.rb
@@ -219,7 +219,7 @@ def issuable_params
 
         params[:state] = filters[:state] if filters.key?(:state)
 
-        if [true, false].include?(filters[:confidential]) && Feature.enabled?(:search_filter_by_confidential)
+        if [true, false].include?(filters[:confidential])
           params[:confidential] = filters[:confidential]
         end
       end
diff --git a/spec/requests/api/search_spec.rb b/spec/requests/api/search_spec.rb
index 05cfad9cc62ced1f5ac566ce6df50a3b4387c9e7..3bbc57a5c461b5001bc894de574456e5e1a77c60 100644
--- a/spec/requests/api/search_spec.rb
+++ b/spec/requests/api/search_spec.rb
@@ -151,7 +151,6 @@
 
         context 'filter by confidentiality' do
           before do
-            stub_feature_flags(search_filter_by_confidential: true)
             create(:issue, project: project, author: user, title: 'awesome non-confidential issue')
             create(:issue, :confidential, project: project, author: user, title: 'awesome confidential issue')
           end
diff --git a/spec/support/shared_examples/lib/gitlab/search_confidential_filter_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/search_confidential_filter_shared_examples.rb
index d0bef2ad730c0df585fee64430432328be1c8008..e70dfec80b13a59731bb4fad5292bbbbef18252d 100644
--- a/spec/support/shared_examples/lib/gitlab/search_confidential_filter_shared_examples.rb
+++ b/spec/support/shared_examples/lib/gitlab/search_confidential_filter_shared_examples.rb
@@ -4,66 +4,27 @@
   context 'filter not provided (all behavior)' do
     let(:filters) { {} }
 
-    context 'when Feature search_filter_by_confidential enabled' do
-      it 'returns confidential and not confidential results', :aggregate_failures do
-        expect(results.objects('issues')).to include confidential_result
-        expect(results.objects('issues')).to include opened_result
-      end
-    end
-
-    context 'when Feature search_filter_by_confidential not enabled' do
-      before do
-        stub_feature_flags(search_filter_by_confidential: false)
-      end
-
-      it 'returns confidential and not confidential results', :aggregate_failures do
-        expect(results.objects('issues')).to include confidential_result
-        expect(results.objects('issues')).to include opened_result
-      end
+    it 'returns confidential and not confidential results', :aggregate_failures do
+      expect(results.objects('issues')).to include confidential_result
+      expect(results.objects('issues')).to include opened_result
     end
   end
 
   context 'confidential filter' do
     let(:filters) { { confidential: true } }
 
-    context 'when Feature search_filter_by_confidential enabled' do
-      it 'returns only confidential results', :aggregate_failures do
-        expect(results.objects('issues')).to include confidential_result
-        expect(results.objects('issues')).not_to include opened_result
-      end
-    end
-
-    context 'when Feature search_filter_by_confidential not enabled' do
-      before do
-        stub_feature_flags(search_filter_by_confidential: false)
-      end
-
-      it 'returns confidential and not confidential results', :aggregate_failures do
-        expect(results.objects('issues')).to include confidential_result
-        expect(results.objects('issues')).to include opened_result
-      end
+    it 'returns only confidential results', :aggregate_failures do
+      expect(results.objects('issues')).to include confidential_result
+      expect(results.objects('issues')).not_to include opened_result
     end
   end
 
   context 'not confidential filter' do
     let(:filters) { { confidential: false } }
 
-    context 'when Feature search_filter_by_confidential enabled' do
-      it 'returns not confidential results', :aggregate_failures do
-        expect(results.objects('issues')).not_to include confidential_result
-        expect(results.objects('issues')).to include opened_result
-      end
-    end
-
-    context 'when Feature search_filter_by_confidential not enabled' do
-      before do
-        stub_feature_flags(search_filter_by_confidential: false)
-      end
-
-      it 'returns confidential and not confidential results', :aggregate_failures do
-        expect(results.objects('issues')).to include confidential_result
-        expect(results.objects('issues')).to include opened_result
-      end
+    it 'returns not confidential results', :aggregate_failures do
+      expect(results.objects('issues')).not_to include confidential_result
+      expect(results.objects('issues')).to include opened_result
     end
   end
 end
diff --git a/spec/views/search/_results.html.haml_spec.rb b/spec/views/search/_results.html.haml_spec.rb
index 033b2304e3357ff39b7b3671ec8857a65e4f0746..58912eab51e0b16608dc8ef3de30b2bdabad5968 100644
--- a/spec/views/search/_results.html.haml_spec.rb
+++ b/spec/views/search/_results.html.haml_spec.rb
@@ -61,26 +61,10 @@
           expect(rendered).to have_selector('#js-search-filter-by-state')
         end
 
-        context 'Feature search_filter_by_confidential' do
-          context 'when disabled' do
-            before do
-              stub_feature_flags(search_filter_by_confidential: false)
-            end
-
-            it 'does not render the confidential drop down' do
-              render
-
-              expect(rendered).not_to have_selector('#js-search-filter-by-confidential')
-            end
-          end
-
-          context 'when enabled' do
-            it 'renders the confidential drop down' do
-              render
-
-              expect(rendered).to have_selector('#js-search-filter-by-confidential')
-            end
-          end
+        it 'renders the confidential drop down' do
+          render
+
+          expect(rendered).to have_selector('#js-search-filter-by-confidential')
         end
       end
     end