diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 2f5e7b9..b6d62e8 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -537,13 +537,8 @@
                             server_stats.packet_spuriously_detected_lost);
         }
         EXPECT_EQ(0u, server_stats.packets_discarded);
-        if (GetQuicReloadableFlag(quic_save_user_agent_in_quic_session)) {
-          EXPECT_EQ(
-              server_session->user_agent_id().value_or("MissingUserAgent"),
-              kTestUserAgentId);
-        } else {
-          EXPECT_FALSE(server_session->user_agent_id().has_value());
-        }
+        EXPECT_EQ(server_session->user_agent_id().value_or("MissingUserAgent"),
+                  kTestUserAgentId);
       } else {
         ADD_FAILURE() << "Missing server connection";
       }
@@ -4716,12 +4711,8 @@
   QuicConfig* server_config = nullptr;
   if (server_session != nullptr) {
     server_config = server_session->config();
-    if (GetQuicReloadableFlag(quic_save_user_agent_in_quic_session)) {
-      EXPECT_EQ(server_session->user_agent_id().value_or("MissingUserAgent"),
-                kTestUserAgentId);
-    } else {
-      EXPECT_FALSE(server_session->user_agent_id().has_value());
-    }
+    EXPECT_EQ(server_session->user_agent_id().value_or("MissingUserAgent"),
+              kTestUserAgentId);
   } else {
     ADD_FAILURE() << "Missing server session";
   }
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc
index 4c979c1..7dfe1fe 100644
--- a/quic/core/http/quic_spdy_stream.cc
+++ b/quic/core/http/quic_spdy_stream.cc
@@ -529,19 +529,15 @@
 void QuicSpdyStream::OnStreamHeaderList(bool fin,
                                         size_t frame_len,
                                         const QuicHeaderList& header_list) {
-  if (GetQuicReloadableFlag(quic_save_user_agent_in_quic_session)) {
-    if (!spdy_session()->user_agent_id().has_value()) {
-      QUIC_RELOADABLE_FLAG_COUNT_N(quic_save_user_agent_in_quic_session, 3, 3);
-      std::string uaid;
-      for (const auto& kv : header_list) {
-        if (quiche::QuicheTextUtils::ToLower(kv.first) ==
-            kUserAgentHeaderName) {
-          uaid = kv.second;
-          break;
-        }
+  if (!spdy_session()->user_agent_id().has_value()) {
+    std::string uaid;
+    for (const auto& kv : header_list) {
+      if (quiche::QuicheTextUtils::ToLower(kv.first) == kUserAgentHeaderName) {
+        uaid = kv.second;
+        break;
       }
-      spdy_session()->SetUserAgentId(std::move(uaid));
     }
+    spdy_session()->SetUserAgentId(std::move(uaid));
   }
 
   // TODO(b/134706391): remove |fin| argument.
