diff --git a/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml b/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0306a4620fbbc31ae4c8fa7a89f4ef918b2864f4
--- /dev/null
+++ b/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml
@@ -0,0 +1,9 @@
+---
+name: generate_commit_message_claude_3_7
+feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/521392
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183311
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/522917
+milestone: '17.10'
+group: group::code review
+type: experiment
+default_enabled: false
diff --git a/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb b/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb
index 2619a86fb46f3c97a4d20c8007f792d8a64e3c3e..eae0af3acba7fda67cb473b0f40246aaf84bcbf4 100644
--- a/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb
+++ b/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb
@@ -13,6 +13,15 @@ class GenerateCommitMessage < Base
           def inputs
             { diff: resource.raw_diffs.to_a.map(&:diff).join("\n").truncate_words(WORDS_LIMIT) }
           end
+
+          override :prompt_version
+          def prompt_version
+            if Feature.enabled?(:generate_commit_message_claude_3_7, user)
+              '1.1.0'
+            else
+              '1.0.0'
+            end
+          end
         end
       end
     end
diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb
index 86d0e49cd5d988e5b4127bd798a8f6a31bdab959..fbded318d5e730536117ee0c9b4a956049a8f4b0 100644
--- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb
+++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb
@@ -30,7 +30,7 @@
         )
         expect(ai_client).to receive(:complete).with(
           url: "#{Gitlab::AiGateway.url}/v1/prompts/generate_commit_message",
-          body: { 'inputs' => { diff: expected_diff } }
+          body: body
         ).and_return(ai_response)
 
         expect(::Gitlab::Llm::GraphqlSubscriptionResponseService).to receive(:new).and_call_original
@@ -39,6 +39,7 @@
       end
     end
 
+    let(:body) { { 'inputs' => { diff: expected_diff }, 'prompt_version' => '1.1.0' } }
     let(:expected_diff) { merge_request.raw_diffs.to_a.map(&:diff).join("\n").truncate_words(10000) }
 
     before do
@@ -94,5 +95,15 @@
 
       it_behaves_like 'successful completion request'
     end
+
+    context 'when generate_commit_message_claude_3_7 FF is disabled' do
+      before do
+        stub_feature_flags(generate_commit_message_claude_3_7: false)
+      end
+
+      let(:body) { { 'inputs' => { diff: expected_diff }, 'prompt_version' => '1.0.0' } }
+
+      it_behaves_like 'successful completion request'
+    end
   end
 end