diff --git a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
index 9a7bc3251512d4af38540f033d7480834b2d839f..7b919952db8a6a16bc4877bd61516541982a621d 100644
--- a/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
+++ b/app/assets/javascripts/projects/settings/branch_rules/components/view/index.vue
@@ -239,7 +239,7 @@ export default {
     <div class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
       <h3 class="gl-mb-5">{{ $options.i18n.pageTitle }}</h3>
       <gl-button
-        v-if="glFeatures.addBranchRule && branchRule"
+        v-if="glFeatures.editBranchRules && branchRule"
         v-gl-modal="$options.deleteModalId"
         data-testid="delete-rule-button"
         category="secondary"
@@ -255,7 +255,7 @@ export default {
           <div class="gl-display-flex gl-justify-content-space-between">
             <strong>{{ $options.i18n.targetRule }}</strong>
             <gl-button
-              v-if="glFeatures.addBranchRule"
+              v-if="glFeatures.addBranchRule || glFeatures.editBranchRules"
               v-gl-modal="$options.editModalId"
               data-testid="edit-rule-button"
               size="small"
@@ -377,7 +377,7 @@ export default {
     </template>
     <!-- EE end -->
     <gl-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :ref="$options.deleteModalId"
       :modal-id="$options.deleteModalId"
       :title="$options.i18n.deleteRuleModalTitle"
@@ -389,7 +389,7 @@ export default {
     </gl-modal>
 
     <branch-rule-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :id="$options.editModalId"
       :ref="$options.editModalId"
       :title="$options.i18n.updateTargetRule"
diff --git a/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue b/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
index e5bc8c4146b50445d38d11728f16899e04649353..39ef18fc65d2ff90741a667e9c075bbbb4f7be0d 100644
--- a/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
+++ b/app/assets/javascripts/projects/settings/repository/branch_rules/app.vue
@@ -147,7 +147,7 @@ export default {
         </div>
       </div>
       <gl-disclosure-dropdown
-        v-if="glFeatures.addBranchRule"
+        v-if="glFeatures.editBranchRules"
         :toggle-text="$options.i18n.addBranchRule"
         :items="addRuleItems"
         size="small"
@@ -181,7 +181,7 @@ export default {
       </div>
     </ul>
     <branch-rule-modal
-      v-if="glFeatures.addBranchRule"
+      v-if="glFeatures.editBranchRules"
       :id="$options.modalId"
       :ref="$options.modalId"
       :title="$options.i18n.createBranchRule"
diff --git a/app/controllers/projects/settings/branch_rules_controller.rb b/app/controllers/projects/settings/branch_rules_controller.rb
index e03ca6526df9b10197375dce512e64fb51583566..8ad9ad9d4cd8104fabea5932b8b7f745868c1ef3 100644
--- a/app/controllers/projects/settings/branch_rules_controller.rb
+++ b/app/controllers/projects/settings/branch_rules_controller.rb
@@ -7,6 +7,7 @@ class BranchRulesController < Projects::ApplicationController
       before_action do
         push_frontend_feature_flag(:add_branch_rule, @project)
         push_frontend_feature_flag(:approval_rules_drawer, @project)
+        push_frontend_feature_flag(:edit_branch_rules, @project)
       end
 
       feature_category :source_code_management
diff --git a/app/controllers/projects/settings/repository_controller.rb b/app/controllers/projects/settings/repository_controller.rb
index 6a10d603ad7bedf403860a2416dda918b5eeb0fe..2d7a3d698f03ac6469982f93ab1cec66c6da4b68 100644
--- a/app/controllers/projects/settings/repository_controller.rb
+++ b/app/controllers/projects/settings/repository_controller.rb
@@ -8,7 +8,7 @@ class RepositoryController < Projects::ApplicationController
       before_action :define_variables, only: [:create_deploy_token]
 
       before_action do
-        push_frontend_feature_flag(:add_branch_rule, @project)
+        push_frontend_feature_flag(:edit_branch_rules, @project)
       end
 
       feature_category :source_code_management, [:show, :cleanup, :update]
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index f0084b6ce6c0889693451835b8e1bde3ff09bfd1..1d02dad5abe6ce6d8b5ead33fe9bc01827588506 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -41,7 +41,7 @@ class ProjectsController < Projects::ApplicationController
     push_frontend_feature_flag(:remove_monitor_metrics, @project)
     push_frontend_feature_flag(:explain_code_chat, current_user)
     push_frontend_feature_flag(:issue_email_participants, @project)
-    push_frontend_feature_flag(:add_branch_rule, @project)
+    push_frontend_feature_flag(:edit_branch_rules, @project)
     # TODO: We need to remove the FF eventually when we rollout page_specific_styles
     push_frontend_feature_flag(:page_specific_styles, current_user)
     push_licensed_feature(:file_locks) if @project.present? && @project.licensed_feature_available?(:file_locks)
diff --git a/config/feature_flags/beta/edit_branch_rules.yml b/config/feature_flags/beta/edit_branch_rules.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b1f155f9c1b568948f773fe5f635baba654d47
--- /dev/null
+++ b/config/feature_flags/beta/edit_branch_rules.yml
@@ -0,0 +1,9 @@
+---
+name: edit_branch_rules
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/435948
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/140319
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/454501
+milestone: '16.11'
+group: group::source code
+type: beta
+default_enabled: false
diff --git a/qa/qa/page/project/settings/branch_rules.rb b/qa/qa/page/project/settings/branch_rules.rb
index 401d75fd1ceda0bbed5f67da1d41368c9351bfe7..a0ef5ad8797907a29967febfb0f1e06813563171 100644
--- a/qa/qa/page/project/settings/branch_rules.rb
+++ b/qa/qa/page/project/settings/branch_rules.rb
@@ -14,7 +14,7 @@ class BranchRules < Page::Base
             element 'details-button'
           end
 
-          def click_add_branch_rule
+          def click_edit_branch_rules
             click_element('add-branch-rule-button')
             click_button('Create protected branch')
           end
diff --git a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
index 9a102fe02123ff3a967ae91008884d715f41179a..e78447b636be69150420caae8bb4318bb653ae28 100644
--- a/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
+++ b/qa/qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb
@@ -26,7 +26,7 @@ module QA
 
         Page::Project::Settings::Repository.perform(&:expand_branch_rules)
 
-        Page::Project::Settings::BranchRules.perform(&:click_add_branch_rule)
+        Page::Project::Settings::BranchRules.perform(&:click_edit_branch_rules)
 
         Page::Project::Settings::ProtectedBranches.perform do |settings|
           settings.select_branch(branch_name)
diff --git a/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js b/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
index 2d469627e2889cbe5097f88df41151b04745ca19..46326ab6c8f14d95e6b3f04854215c40a3a00e19 100644
--- a/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
+++ b/spec/frontend/projects/settings/branch_rules/components/view/index_spec.js
@@ -76,7 +76,7 @@ describe('View branch rules', () => {
   const errorHandler = jest.fn().mockRejectedValue('error');
 
   const createComponent = async (
-    glFeatures = { addBranchRule: true },
+    glFeatures = { editBranchRules: true },
     mockResponse,
     deleteMutationHandler = deleteBranchRuleSuccessHandler,
     editMutationHandler = editBranchRuleSuccessHandler,
@@ -207,7 +207,7 @@ describe('View branch rules', () => {
     });
 
     it('if error happens it shows an alert', async () => {
-      await createComponent({ addBranchRule: true }, branchProtectionsMockResponse, errorHandler);
+      await createComponent({ editBranchRules: true }, branchProtectionsMockResponse, errorHandler);
       findDeleteRuleModal().vm.$emit('ok');
       await nextTick();
       await waitForPromises();
@@ -313,7 +313,7 @@ describe('View branch rules', () => {
   });
 
   describe('When add branch rules is FF disabled', () => {
-    beforeEach(() => createComponent({ addBranchRule: false }));
+    beforeEach(() => createComponent({ editBranchRule: false }));
     it('does not render delete rule button and modal when ff is disabled', () => {
       expect(findDeleteRuleButton().exists()).toBe(false);
       expect(findDeleteRuleModal().exists()).toBe(false);
diff --git a/spec/frontend/projects/settings/repository/branch_rules/app_spec.js b/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
index 89bc348b48ddfd4b900fe316093f9f6c1e89c0f6..16f4ee1e3d621f722a7f794851502026f2a5bc52 100644
--- a/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
+++ b/spec/frontend/projects/settings/repository/branch_rules/app_spec.js
@@ -46,7 +46,7 @@ describe('Branch rules app', () => {
     .mockResolvedValue(protectableBranchesMockResponse);
 
   const createComponent = async ({
-    glFeatures = { addBranchRule: true },
+    glFeatures = { editBranchRules: true },
     queryHandler = branchRulesQuerySuccessHandler,
     mutationHandler = addRuleMutationSuccessHandler,
   } = {}) => {
@@ -157,9 +157,9 @@ describe('Branch rules app', () => {
     });
   });
 
-  describe('Add branch rule when addBranchRule FF disabled', () => {
+  describe('Add branch rule when editBranchRule FF disabled', () => {
     beforeEach(() => {
-      createComponent({ glFeatures: { addBranchRule: false } });
+      createComponent({ glFeatures: { editBranchRule: false } });
     });
     it('renders an Add branch rule button', () => {
       expect(findAddBranchRuleButton().exists()).toBe(true);