diff --git a/changelogs/unreleased/smh-remove-read-only-mode-config.yml b/changelogs/unreleased/smh-remove-read-only-mode-config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a0c0fe0b47015deed6da536dbb1156a422afab59_Y2hhbmdlbG9ncy91bnJlbGVhc2VkL3NtaC1yZW1vdmUtcmVhZC1vbmx5LW1vZGUtY29uZmlnLnltbA==
--- /dev/null
+++ b/changelogs/unreleased/smh-remove-read-only-mode-config.yml
@@ -0,0 +1,5 @@
+---
+title: Remove read-only config toggle from Praefect
+merge_request: 4462
+author:
+type: changed
diff --git a/files/gitlab-config-template/gitlab.rb.template b/files/gitlab-config-template/gitlab.rb.template
index 20865cc23aca9ccb630d6a47b893ab9509f6072d_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU=..a0c0fe0b47015deed6da536dbb1156a422afab59_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU= 100644
--- a/files/gitlab-config-template/gitlab.rb.template
+++ b/files/gitlab-config-template/gitlab.rb.template
@@ -1945,7 +1945,6 @@
 # praefect['virtual_storage_name'] = "praefect"
 # praefect['failover_enabled'] = false
 # praefect['failover_election_strategy'] = 'sql'
-# praefect['failover_read_only_after_failover'] = true
 # praefect['auth_token'] = ""
 # praefect['auth_transitioning'] = false
 # praefect['listen_addr'] = "localhost:2305"
diff --git a/files/gitlab-cookbooks/package/libraries/deprecations.rb b/files/gitlab-cookbooks/package/libraries/deprecations.rb
index 20865cc23aca9ccb630d6a47b893ab9509f6072d_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9kZXByZWNhdGlvbnMucmI=..a0c0fe0b47015deed6da536dbb1156a422afab59_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wYWNrYWdlL2xpYnJhcmllcy9kZXByZWNhdGlvbnMucmI= 100644
--- a/files/gitlab-cookbooks/package/libraries/deprecations.rb
+++ b/files/gitlab-cookbooks/package/libraries/deprecations.rb
@@ -47,6 +47,12 @@
             deprecation: '13.1',
             removal: '14.0',
             note: "Set gitlab_pages['env']['http_proxy'] instead. See https://docs.gitlab.com/omnibus/settings/environment-variables.html"
+          },
+          {
+            config_keys: %w(praefect failover_read_only_after_failover),
+            deprecation: '13.3',
+            removal: '14.0',
+            note: "Read-only mode is repository specific and always enabled after suspected data loss. See https://docs.gitlab.com/ee/administration/gitaly/praefect.html#read-only-mode"
           }
         ]
 
diff --git a/files/gitlab-cookbooks/praefect/attributes/default.rb b/files/gitlab-cookbooks/praefect/attributes/default.rb
index 20865cc23aca9ccb630d6a47b893ab9509f6072d_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wcmFlZmVjdC9hdHRyaWJ1dGVzL2RlZmF1bHQucmI=..a0c0fe0b47015deed6da536dbb1156a422afab59_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wcmFlZmVjdC9hdHRyaWJ1dGVzL2RlZmF1bHQucmI= 100644
--- a/files/gitlab-cookbooks/praefect/attributes/default.rb
+++ b/files/gitlab-cookbooks/praefect/attributes/default.rb
@@ -1,7 +1,7 @@
 default['praefect']['enable'] = false
 default['praefect']['failover_enabled'] = false
 default['praefect']['failover_election_strategy'] = 'sql'
-default['praefect']['failover_read_only_after_failover'] = true
+default['praefect']['failover_read_only_after_failover'] = nil
 default['praefect']['auth_token'] = nil
 default['praefect']['auth_transitioning'] = false
 default['praefect']['dir'] = "/var/opt/gitlab/praefect"
diff --git a/files/gitlab-cookbooks/praefect/templates/default/praefect-config.toml.erb b/files/gitlab-cookbooks/praefect/templates/default/praefect-config.toml.erb
index 20865cc23aca9ccb630d6a47b893ab9509f6072d_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wcmFlZmVjdC90ZW1wbGF0ZXMvZGVmYXVsdC9wcmFlZmVjdC1jb25maWcudG9tbC5lcmI=..a0c0fe0b47015deed6da536dbb1156a422afab59_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9wcmFlZmVjdC90ZW1wbGF0ZXMvZGVmYXVsdC9wcmFlZmVjdC1jb25maWcudG9tbC5lcmI= 100644
--- a/files/gitlab-cookbooks/praefect/templates/default/praefect-config.toml.erb
+++ b/files/gitlab-cookbooks/praefect/templates/default/praefect-config.toml.erb
@@ -34,7 +34,6 @@
 <% if @failover_election_strategy %>
 election_strategy = '<%= @failover_election_strategy %>'
 <% end %>
-read_only_after_failover = <%= @failover_read_only_after_failover %>
 
 [sentry]
 <% if @sentry_dsn %>
diff --git a/spec/chef/recipes/praefect_spec.rb b/spec/chef/recipes/praefect_spec.rb
index 20865cc23aca9ccb630d6a47b893ab9509f6072d_c3BlYy9jaGVmL3JlY2lwZXMvcHJhZWZlY3Rfc3BlYy5yYg==..a0c0fe0b47015deed6da536dbb1156a422afab59_c3BlYy9jaGVmL3JlY2lwZXMvcHJhZWZlY3Rfc3BlYy5yYg== 100644
--- a/spec/chef/recipes/praefect_spec.rb
+++ b/spec/chef/recipes/praefect_spec.rb
@@ -47,8 +47,7 @@
         'sentry' => {},
         'database' => {},
         'failover' => { 'enabled' => false,
-                        'election_strategy' => 'sql',
-                        'read_only_after_failover' => true }
+                        'election_strategy' => 'sql' }
       }
 
       expect(chef_run).to render_file(config_path).with_content { |content|
@@ -57,7 +56,7 @@
       expect(chef_run).not_to render_file(config_path)
       .with_content(%r{\[prometheus\]\s+grpc_latency_buckets =})
       expect(chef_run).to render_file(config_path)
-      .with_content(%r{\[failover\]\s+enabled = false\s+election_strategy = 'sql'\s+read_only_after_failover = true})
+      .with_content(%r{\[failover\]\s+enabled = false\s+election_strategy = 'sql'})
     end
 
     it 'renders the env dir files' do
@@ -102,7 +101,6 @@
       end
       let(:failover_enabled) { true }
       let(:failover_election_strategy) { 'local' }
-      let(:failover_read_only_after_failover) { true }
       let(:database_host) { 'pg.internal' }
       let(:database_port) { 1234 }
       let(:database_user) { 'praefect-pg' }
@@ -131,7 +129,6 @@
                          logging_format: log_format,
                          failover_enabled: failover_enabled,
                          failover_election_strategy: failover_election_strategy,
-                         failover_read_only_after_failover: failover_read_only_after_failover,
                          virtual_storages: virtual_storages,
                          database_host: database_host,
                          database_port: database_port,
@@ -163,9 +160,7 @@
         expect(chef_run).to render_file(config_path)
           .with_content("sentry_environment = '#{sentry_environment}'")
         expect(chef_run).to render_file(config_path)
-          .with_content("read_only_after_failover = true")
-        expect(chef_run).to render_file(config_path)
-          .with_content(%r{\[failover\]\s+enabled = true\s+election_strategy = 'local'\s+read_only_after_failover = true})
+          .with_content(%r{\[failover\]\s+enabled = true\s+election_strategy = 'local'})
         expect(chef_run).to render_file(config_path)
           .with_content(%r{\[prometheus\]\s+grpc_latency_buckets = #{Regexp.escape(prometheus_grpc_latency_buckets)}})