diff --git a/quic/quartc/quartc_multiplexer_test.cc b/quic/quartc/quartc_multiplexer_test.cc
index ffffb97..dcdef66 100644
--- a/quic/quartc/quartc_multiplexer_test.cc
+++ b/quic/quartc/quartc_multiplexer_test.cc
@@ -200,8 +200,11 @@
             simulator_.GetRandomGenerator(),
             &server_multiplexer_,
             quic::QuartcSessionConfig())) {
-    // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
+    // TODO(b/150224094): Re-enable TLS handshake.
+    // TODO(b/150236522): Parametrize by QUIC version.
     SetQuicReloadableFlag(quic_enable_version_t099, false);
+    SetQuicReloadableFlag(quic_enable_version_draft_25, false);
+    SetQuicReloadableFlag(quic_enable_version_t050, false);
   }
 
   void Connect() {
diff --git a/quic/quartc/quartc_session_test.cc b/quic/quartc/quartc_session_test.cc
index e53930b..0a01f81 100644
--- a/quic/quartc/quartc_session_test.cc
+++ b/quic/quartc/quartc_session_test.cc
@@ -54,8 +54,11 @@
   ~QuartcSessionTest() override {}
 
   void Init(bool create_client_endpoint = true) {
-    // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
+    // TODO(b/150224094): Re-enable TLS handshake.
+    // TODO(b/150236522): Parametrize by QUIC version.
     SetQuicReloadableFlag(quic_enable_version_t099, false);
+    SetQuicReloadableFlag(quic_enable_version_draft_25, false);
+    SetQuicReloadableFlag(quic_enable_version_t050, false);
 
     client_transport_ =
         std::make_unique<simulator::SimulatedQuartcPacketTransport>(
@@ -346,18 +349,12 @@
 }
 
 TEST_F(QuartcSessionTest, SendReceiveMessages) {
-  // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
-  SetQuicReloadableFlag(quic_enable_version_t099, false);
-
   CreateClientAndServerSessions(QuartcSessionConfig());
   AwaitHandshake();
   TestSendReceiveMessage();
 }
 
 TEST_F(QuartcSessionTest, SendReceiveQueuedMessages) {
-  // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
-  SetQuicReloadableFlag(quic_enable_version_t099, false);
-
   CreateClientAndServerSessions(QuartcSessionConfig());
   AwaitHandshake();
   TestSendReceiveQueuedMessages(/*direction_from_server=*/true);
@@ -416,9 +413,6 @@
 }
 
 TEST_F(QuartcSessionTest, PreSharedKeyHandshake) {
-  // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
-  SetQuicReloadableFlag(quic_enable_version_t099, false);
-
   QuartcSessionConfig config;
   config.pre_shared_key = "foo";
   CreateClientAndServerSessions(config);
@@ -562,9 +556,6 @@
 }
 
 TEST_F(QuartcSessionTest, LostDatagramNotifications) {
-  // TODO(b/134175506): Remove when IETF QUIC supports receive timestamps.
-  SetQuicReloadableFlag(quic_enable_version_t099, false);
-
   // Disable tail loss probe, otherwise test maybe flaky because dropped
   // message will be retransmitted to detect tail loss.
   QuartcSessionConfig session_config;
diff --git a/quic/quartc/test/quartc_bidi_test.cc b/quic/quartc/test/quartc_bidi_test.cc
index d7dbee5..836c276 100644
--- a/quic/quartc/test/quartc_bidi_test.cc
+++ b/quic/quartc/test/quartc_bidi_test.cc
@@ -26,6 +26,12 @@
 class QuartcBidiTest : public QuicTest {
  protected:
   QuartcBidiTest() {
+    // TODO(b/150224094): Re-enable TLS handshake.
+    // TODO(b/150236522): Parametrize by QUIC version.
+    SetQuicReloadableFlag(quic_enable_version_t099, false);
+    SetQuicReloadableFlag(quic_enable_version_draft_25, false);
+    SetQuicReloadableFlag(quic_enable_version_t050, false);
+
     uint64_t seed = QuicRandom::GetInstance()->RandUint64();
     QUIC_LOG(INFO) << "Setting random seed to " << seed;
     random_.set_seed(seed);
diff --git a/quic/quartc/test/quartc_peer_test.cc b/quic/quartc/test/quartc_peer_test.cc
index 04e317b..563eb02 100644
--- a/quic/quartc/test/quartc_peer_test.cc
+++ b/quic/quartc/test/quartc_peer_test.cc
@@ -35,6 +35,12 @@
                             &server_transport_,
                             QuicBandwidth::FromKBitsPerSecond(512),
                             QuicTime::Delta::FromMilliseconds(100)) {
+    // TODO(b/150224094): Re-enable TLS handshake.
+    // TODO(b/150236522): Parametrize by QUIC version.
+    SetQuicReloadableFlag(quic_enable_version_t099, false);
+    SetQuicReloadableFlag(quic_enable_version_draft_25, false);
+    SetQuicReloadableFlag(quic_enable_version_t050, false);
+
     SetQuicReloadableFlag(quic_default_to_bbr, true);
     simulator_.set_random_generator(&rng_);
   }
