diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 8efba88..626166f 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -363,7 +363,6 @@
 
   bool Initialize() {
     if (enable_web_transport_) {
-      SetQuicReloadableFlag(quic_h3_datagram, true);
       memory_cache_backend_.set_enable_webtransport(true);
     }
 
@@ -6043,6 +6042,7 @@
 
   WebTransportHttp3* web_transport =
       CreateWebTransportSession("/echo", /*wait_for_server_response=*/true);
+  ASSERT_NE(web_transport, nullptr);
 
   server_thread_->Pause();
   QuicSpdySession* server_session = GetServerSession();
@@ -6064,6 +6064,7 @@
 
   WebTransportHttp3* web_transport =
       CreateWebTransportSession("/echo", /*wait_for_server_response=*/true);
+  ASSERT_NE(web_transport, nullptr);
 
   server_thread_->Pause();
   QuicSpdySession* server_session = GetServerSession();
diff --git a/quic/core/http/quic_send_control_stream_test.cc b/quic/core/http/quic_send_control_stream_test.cc
index c5af1dc..3066cb3 100644
--- a/quic/core/http/quic_send_control_stream_test.cc
+++ b/quic/core/http/quic_send_control_stream_test.cc
@@ -133,7 +133,7 @@
       "4040"  // 0x40 as the reserved frame type
       "01"    // 1 byte frame length
       "61");  //  payload "a"
-  if (GetQuicReloadableFlag(quic_h3_datagram)) {
+  if (QuicSpdySessionPeer::ShouldNegotiateHttp3Datagram(&session_)) {
     expected_write_data = absl::HexStringToBytes(
         "00"    // stream type: control stream
         "04"    // frame type: SETTINGS frame
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index 2867d52..0ea2452 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -553,7 +553,6 @@
   settings_.values[SETTINGS_MAX_FIELD_SECTION_SIZE] =
       max_inbound_header_list_size_;
   if (ShouldNegotiateHttp3Datagram() && version().UsesHttp3()) {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_h3_datagram);
     settings_.values[SETTINGS_H3_DATAGRAM] = 1;
   }
   if (WillNegotiateWebTransport()) {
@@ -1850,7 +1849,7 @@
 }
 
 bool QuicSpdySession::ShouldNegotiateHttp3Datagram() {
-  return GetQuicReloadableFlag(quic_h3_datagram);
+  return false;
 }
 
 #undef ENDPOINT  // undef for jumbo builds
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index 163377b..9221937 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -355,6 +355,13 @@
   bool ShouldNegotiateWebTransport() override { return supports_webtransport_; }
   void set_supports_webtransport(bool value) { supports_webtransport_ = value; }
 
+  bool ShouldNegotiateHttp3Datagram() override {
+    return should_negotiate_h3_datagram_;
+  }
+  void set_should_negotiate_h3_datagram(bool value) {
+    should_negotiate_h3_datagram_ = value;
+  }
+
   MOCK_METHOD(void, OnAcceptChFrame, (const AcceptChFrame&), (override));
 
   using QuicSession::closed_streams;
@@ -367,6 +374,7 @@
 
   bool writev_consumes_all_data_;
   bool supports_webtransport_ = false;
+  bool should_negotiate_h3_datagram_ = false;
 };
 
 class QuicSpdySessionTestBase : public QuicTestWithParam<ParsedQuicVersion> {
@@ -3486,7 +3494,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   // HTTP/3 datagrams aren't supported before SETTINGS are received.
   EXPECT_FALSE(session_.h3_datagram_supported());
   // Receive SETTINGS.
@@ -3510,7 +3518,7 @@
     return;
   }
   CompleteHandshake();
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   QuicSpdySessionPeer::SetH3DatagramSupported(&session_, true);
   SavingHttp3DatagramVisitor h3_datagram_visitor;
   QuicDatagramFlowId flow_id = session_.GetNextDatagramFlowId();
@@ -3536,7 +3544,7 @@
     return;
   }
   CompleteHandshake();
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   QuicSpdySessionPeer::SetH3DatagramSupported(&session_, true);
   QuicDatagramFlowId flow_id = session_.GetNextDatagramFlowId();
   std::string h3_datagram_payload = {1, 2, 3, 4, 5, 6};
@@ -3550,7 +3558,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   EXPECT_FALSE(session_.SupportsWebTransport());
@@ -3580,7 +3588,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   EXPECT_FALSE(session_.SupportsWebTransport());
@@ -3610,7 +3618,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   EXPECT_FALSE(session_.SupportsWebTransport());
@@ -3627,7 +3635,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   CompleteHandshake();
@@ -3660,7 +3668,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   CompleteHandshake();
@@ -3701,7 +3709,7 @@
   if (!version().UsesHttp3()) {
     return;
   }
-  SetQuicReloadableFlag(quic_h3_datagram, true);
+  session_.set_should_negotiate_h3_datagram(true);
   session_.set_supports_webtransport(true);
 
   CompleteHandshake();
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc
index 18526a5..7648277 100644
--- a/quic/core/http/quic_spdy_stream_test.cc
+++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -259,8 +259,16 @@
   bool ShouldNegotiateWebTransport() override { return enable_webtransport_; }
   void EnableWebTransport() { enable_webtransport_ = true; }
 
+  bool ShouldNegotiateHttp3Datagram() override {
+    return should_negotiate_h3_datagram_;
+  }
+  void set_should_negotiate_h3_datagram(bool value) {
+    should_negotiate_h3_datagram_ = value;
+  }
+
  private:
   bool enable_webtransport_ = false;
+  bool should_negotiate_h3_datagram_ = false;
   StrictMock<TestCryptoStream> crypto_stream_;
 };
 
@@ -3107,6 +3115,7 @@
   }
 
   InitializeWithPerspective(kShouldProcessData, Perspective::IS_CLIENT);
+  session_->set_should_negotiate_h3_datagram(true);
   session_->EnableWebTransport();
   QuicSpdySessionPeer::EnableWebTransport(*session_);
 
@@ -3129,6 +3138,7 @@
   }
 
   Initialize(kShouldProcessData);
+  session_->set_should_negotiate_h3_datagram(true);
   session_->EnableWebTransport();
   QuicSpdySessionPeer::EnableWebTransport(*session_);
 
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 8048bc7..02e19b4 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -123,8 +123,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_deprecate_incoming_connection_ids, true)
 // When the STMP connection option is sent by the client, timestamps in the QUIC ACK frame are sent and processed.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_timestamps, false)
-// When true, QuicSpdySession supports draft-ietf-masque-h3-datagram.
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_h3_datagram, false)
 // When true, defaults to BBR congestion control instead of Cubic.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_default_to_bbr, false)
 // When true, prevents QUIC\'s PacingSender from generating bursts when the congestion controller is CWND limited and not pacing limited.
diff --git a/quic/masque/masque_client_bin.cc b/quic/masque/masque_client_bin.cc
index 9203725..bb9964e 100644
--- a/quic/masque/masque_client_bin.cc
+++ b/quic/masque/masque_client_bin.cc
@@ -50,8 +50,6 @@
     return 1;
   }
 
-  SetQuicReloadableFlag(quic_h3_datagram, true);
-
   const bool disable_certificate_verification =
       GetQuicFlag(FLAGS_disable_certificate_verification);
   QuicEpollServer epoll_server;
diff --git a/quic/masque/masque_client_session.h b/quic/masque/masque_client_session.h
index e055a76..c32a961 100644
--- a/quic/masque/masque_client_session.h
+++ b/quic/masque/masque_client_session.h
@@ -144,6 +144,8 @@
     QuicSocketAddress target_server_address_;
   };
 
+  bool ShouldNegotiateHttp3Datagram() override { return true; }
+
   const ConnectUdpClientState* GetOrCreateConnectUdpClientState(
       const QuicSocketAddress& target_server_address,
       EncapsulatedClientSession* encapsulated_client_session);
diff --git a/quic/masque/masque_server_bin.cc b/quic/masque/masque_server_bin.cc
index d5a5d9f..aaccda3 100644
--- a/quic/masque/masque_server_bin.cc
+++ b/quic/masque/masque_server_bin.cc
@@ -52,8 +52,6 @@
     return 0;
   }
 
-  SetQuicReloadableFlag(quic_h3_datagram, true);
-
   quic::MasqueMode masque_mode = quic::MasqueMode::kOpen;
   std::string mode_string = GetQuicFlag(FLAGS_masque_mode);
   if (mode_string == "legacy") {
diff --git a/quic/masque/masque_server_session.h b/quic/masque/masque_server_session.h
index 14b8293..ebf0d21 100644
--- a/quic/masque/masque_server_session.h
+++ b/quic/masque/masque_server_session.h
@@ -129,6 +129,8 @@
     MasqueServerSession* masque_session_;  // Unowned.
   };
 
+  bool ShouldNegotiateHttp3Datagram() override { return true; }
+
   MasqueServerBackend* masque_server_backend_;  // Unowned.
   Visitor* owner_;                              // Unowned.
   QuicEpollServer* epoll_server_;               // Unowned.
diff --git a/quic/test_tools/quic_spdy_session_peer.cc b/quic/test_tools/quic_spdy_session_peer.cc
index c547ac2..a27f073 100644
--- a/quic/test_tools/quic_spdy_session_peer.cc
+++ b/quic/test_tools/quic_spdy_session_peer.cc
@@ -106,8 +106,13 @@
 }
 
 // static
+bool QuicSpdySessionPeer::ShouldNegotiateHttp3Datagram(
+    QuicSpdySession* session) {
+  return session->ShouldNegotiateHttp3Datagram();
+}
+
+// static
 void QuicSpdySessionPeer::EnableWebTransport(QuicSpdySession& session) {
-  SetQuicReloadableFlag(quic_h3_datagram, true);
   QUICHE_DCHECK(session.WillNegotiateWebTransport());
   session.h3_datagram_supported_ = true;
   session.peer_supports_webtransport_ = true;
diff --git a/quic/test_tools/quic_spdy_session_peer.h b/quic/test_tools/quic_spdy_session_peer.h
index 9ba5497..0d06c4d 100644
--- a/quic/test_tools/quic_spdy_session_peer.h
+++ b/quic/test_tools/quic_spdy_session_peer.h
@@ -52,6 +52,7 @@
       QuicSpdySession* session);
   static void SetH3DatagramSupported(QuicSpdySession* session,
                                      bool h3_datagram_supported);
+  static bool ShouldNegotiateHttp3Datagram(QuicSpdySession* session);
   static void EnableWebTransport(QuicSpdySession& session);
 };
 
diff --git a/quic/tools/quic_simple_client_session.cc b/quic/tools/quic_simple_client_session.cc
index d1efcba..07c4628 100644
--- a/quic/tools/quic_simple_client_session.cc
+++ b/quic/tools/quic_simple_client_session.cc
@@ -54,4 +54,8 @@
   return enable_web_transport_;
 }
 
+bool QuicSimpleClientSession::ShouldNegotiateHttp3Datagram() {
+  return enable_web_transport_;
+}
+
 }  // namespace quic
diff --git a/quic/tools/quic_simple_client_session.h b/quic/tools/quic_simple_client_session.h
index aa86d9a..124e56f 100644
--- a/quic/tools/quic_simple_client_session.h
+++ b/quic/tools/quic_simple_client_session.h
@@ -30,6 +30,7 @@
 
   std::unique_ptr<QuicSpdyClientStream> CreateClientStream() override;
   bool ShouldNegotiateWebTransport() override;
+  bool ShouldNegotiateHttp3Datagram() override;
 
  private:
   const bool drop_response_body_;
