diff --git a/quiche/quic/core/quic_connection_id_manager.cc b/quiche/quic/core/quic_connection_id_manager.cc
index 4776545..e192880 100644
--- a/quiche/quic/core/quic_connection_id_manager.cc
+++ b/quiche/quic/core/quic_connection_id_manager.cc
@@ -298,30 +298,19 @@
 
 absl::optional<QuicNewConnectionIdFrame>
 QuicSelfIssuedConnectionIdManager::MaybeIssueNewConnectionId() {
-  const bool check_cid_collision_when_issue_new_cid =
-      GetQuicReloadableFlag(quic_check_cid_collision_when_issue_new_cid);
   absl::optional<QuicConnectionId> new_cid =
       connection_id_generator_.GenerateNextConnectionId(last_connection_id_);
   if (!new_cid.has_value()) {
     return {};
   }
-  if (check_cid_collision_when_issue_new_cid) {
-    QUIC_RELOADABLE_FLAG_COUNT_N(quic_check_cid_collision_when_issue_new_cid, 1,
-                                 2);
-    if (!visitor_->MaybeReserveConnectionId(*new_cid)) {
-      QUIC_RELOADABLE_FLAG_COUNT_N(quic_check_cid_collision_when_issue_new_cid,
-                                   2, 2);
-      return {};
-    }
+  if (!visitor_->MaybeReserveConnectionId(*new_cid)) {
+    return {};
   }
   QuicNewConnectionIdFrame frame;
   frame.connection_id = *new_cid;
   frame.sequence_number = next_connection_id_sequence_number_++;
   frame.stateless_reset_token =
       QuicUtils::GenerateStatelessResetToken(frame.connection_id);
-  if (!check_cid_collision_when_issue_new_cid) {
-    visitor_->MaybeReserveConnectionId(frame.connection_id);
-  }
   active_connection_ids_.emplace_back(frame.connection_id,
                                       frame.sequence_number);
   frame.retire_prior_to = active_connection_ids_.front().second;
diff --git a/quiche/quic/core/quic_connection_id_manager_test.cc b/quiche/quic/core/quic_connection_id_manager_test.cc
index 2dd35bf..137be15 100644
--- a/quiche/quic/core/quic_connection_id_manager_test.cc
+++ b/quiche/quic/core/quic_connection_id_manager_test.cc
@@ -977,11 +977,7 @@
   QuicConnectionId cid1 = CheckGenerate(cid0);
   EXPECT_CALL(cid_manager_visitor_, MaybeReserveConnectionId(cid1))
       .WillOnce(Return(false));
-  if (GetQuicReloadableFlag(quic_check_cid_collision_when_issue_new_cid)) {
-    EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(0);
-  } else {
-    EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(1);
-  }
+  EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(0);
   cid_manager_.MaybeSendNewConnectionIds();
 }
 
@@ -1000,11 +996,7 @@
   // CID #2 is not issued.
   EXPECT_CALL(cid_manager_visitor_, MaybeReserveConnectionId(cid2))
       .WillOnce(Return(false));
-  if (GetQuicReloadableFlag(quic_check_cid_collision_when_issue_new_cid)) {
-    EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(0);
-  } else {
-    EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(1);
-  }
+  EXPECT_CALL(cid_manager_visitor_, SendNewConnectionId(_)).Times(0);
   QuicRetireConnectionIdFrame retire_cid_frame;
   retire_cid_frame.sequence_number = 1;
   ASSERT_THAT(cid_manager_.OnRetireConnectionIdFrame(
@@ -1033,7 +1025,6 @@
 // Regression test for b/258450534
 TEST_F(QuicSelfIssuedConnectionIdManagerTest,
        RetireConnectionIdAfterConnectionIdCollisionIsFine) {
-  SetQuicReloadableFlag(quic_check_cid_collision_when_issue_new_cid, true);
   QuicConnectionId cid0 = initial_connection_id_;
   QuicConnectionId cid1 = CheckGenerate(cid0);
   EXPECT_CALL(cid_manager_visitor_, MaybeReserveConnectionId(cid1))
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc
index c501347..00f02b2 100644
--- a/quiche/quic/core/quic_connection_test.cc
+++ b/quiche/quic/core/quic_connection_test.cc
@@ -14199,11 +14199,7 @@
         .WillOnce(Return(TestConnectionId(456)));
   }
   EXPECT_CALL(visitor_, MaybeReserveConnectionId(_)).WillOnce(Return(false));
-  if (GetQuicReloadableFlag(quic_check_cid_collision_when_issue_new_cid)) {
-    EXPECT_CALL(visitor_, SendNewConnectionId(_)).Times(0);
-  } else {
-    EXPECT_CALL(visitor_, SendNewConnectionId(_)).Times(1);
-  }
+  EXPECT_CALL(visitor_, SendNewConnectionId(_)).Times(0);
   connection_.MaybeSendConnectionIdToClient();
 }
 
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 9b8813e..e1e6645 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -43,8 +43,6 @@
 QUIC_FLAG(quic_reloadable_flag_quic_enable_disable_resumption, true)
 // If true, discard INITIAL packet if the key has been dropped.
 QUIC_FLAG(quic_reloadable_flag_quic_discard_initial_packet_with_key_dropped, true)
-// If true, do not issue a new connection ID that has been claimed by another connection.
-QUIC_FLAG(quic_reloadable_flag_quic_check_cid_collision_when_issue_new_cid, true)
 // If true, do not write when client CID is requried but missing in the packet creator.
 QUIC_FLAG(quic_reloadable_flag_quic_do_not_write_when_no_client_cid_available, true)
 // If true, enable server retransmittable on wire PING.
