diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index cf46ede..44b204a 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -905,19 +905,6 @@
   if (!GetLargestAckedPacket().IsInitialized() ||
       largest_acked > GetLargestAckedPacket()) {
     visitor_->OnForwardProgressConfirmed();
-  } else if (!sent_packet_manager_.tolerate_reneging() &&
-             largest_acked < GetLargestAckedPacket()) {
-    QUIC_LOG(INFO) << ENDPOINT << "Peer's largest_observed packet decreased:"
-                   << largest_acked << " vs " << GetLargestAckedPacket()
-                   << " packet_number:" << last_header_.packet_number
-                   << " largest seen with ack:"
-                   << GetLargestReceivedPacketWithAck()
-                   << " server_connection_id: " << server_connection_id_;
-    // A new ack has a diminished largest_observed value.
-    // If this was an old packet, we wouldn't even have checked.
-    CloseConnection(QUIC_INVALID_ACK_DATA, "Largest observed too low.",
-                    ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
-    return false;
   }
   processing_ack_frame_ = true;
   sent_packet_manager_.OnAckFrameStart(largest_acked, ack_delay_time,
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index c7f6e07..5762957 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -2801,18 +2801,8 @@
   QuicAckFrame frame2 = InitAckFrame(2);
   ProcessAckPacket(&frame2);
 
-  if (GetQuicReloadableFlag(quic_tolerate_reneging)) {
-    EXPECT_CALL(visitor_, OnCanWrite());
-  } else {
-    // Now change it to 1, and it should cause a connection error.
-    EXPECT_CALL(visitor_,
-                OnConnectionClosed(_, ConnectionCloseSource::FROM_SELF));
-    EXPECT_CALL(visitor_, OnCanWrite()).Times(0);
-  }
+  EXPECT_CALL(visitor_, OnCanWrite());
   ProcessAckPacket(&frame1);
-  if (!GetQuicReloadableFlag(quic_tolerate_reneging)) {
-    TestConnectionCloseQuicErrorCode(QUIC_INVALID_ACK_DATA);
-  }
 }
 
 TEST_P(QuicConnectionTest, AckUnsentData) {
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 71fbdf6..e54ffd3 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -115,14 +115,10 @@
           QuicTime::Delta::FromMilliseconds(kDefaultDelayedAckTimeMs)),
       rtt_updated_(false),
       acked_packets_iter_(last_ack_frame_.packets.rbegin()),
-      tolerate_reneging_(GetQuicReloadableFlag(quic_tolerate_reneging)),
       loss_removes_from_inflight_(
           GetQuicReloadableFlag(quic_loss_removes_from_inflight)),
       ignore_tlpr_if_no_pending_stream_data_(
           GetQuicReloadableFlag(quic_ignore_tlpr_if_no_pending_stream_data)) {
-  if (tolerate_reneging_) {
-    QUIC_RELOADABLE_FLAG_COUNT(quic_tolerate_reneging);
-  }
   if (loss_removes_from_inflight_) {
     QUIC_RELOADABLE_FLAG_COUNT(quic_loss_removes_from_inflight);
   }
@@ -1117,9 +1113,6 @@
   DCHECK_LE(largest_acked, unacked_packets_.largest_sent_packet());
   rtt_updated_ =
       MaybeUpdateRTT(largest_acked, ack_delay_time, ack_receive_time);
-  DCHECK(!unacked_packets_.largest_acked().IsInitialized() ||
-         largest_acked >= unacked_packets_.largest_acked() ||
-         tolerate_reneging_);
   last_ack_frame_.ack_delay_time = ack_delay_time;
   acked_packets_iter_ = last_ack_frame_.packets.rbegin();
 }
diff --git a/quic/core/quic_sent_packet_manager.h b/quic/core/quic_sent_packet_manager.h
index d6f5400..9c6edac 100644
--- a/quic/core/quic_sent_packet_manager.h
+++ b/quic/core/quic_sent_packet_manager.h
@@ -374,8 +374,6 @@
   // Setting the send algorithm once the connection is underway is dangerous.
   void SetSendAlgorithm(SendAlgorithmInterface* send_algorithm);
 
-  bool tolerate_reneging() const { return tolerate_reneging_; }
-
   bool supports_multiple_packet_number_spaces() const {
     return unacked_packets_.supports_multiple_packet_number_spaces();
   }
@@ -619,9 +617,6 @@
   // OnAckRangeStart, and gradually moves in OnAckRange..
   PacketNumberQueue::const_reverse_iterator acked_packets_iter_;
 
-  // Latched value of quic_tolerate_reneging.
-  const bool tolerate_reneging_;
-
   // Latched value of quic_loss_removes_from_inflight.
   const bool loss_removes_from_inflight_;
 
diff --git a/quic/core/quic_sent_packet_manager_test.cc b/quic/core/quic_sent_packet_manager_test.cc
index 5d65c15..d5ad137 100644
--- a/quic/core/quic_sent_packet_manager_test.cc
+++ b/quic/core/quic_sent_packet_manager_test.cc
@@ -2632,9 +2632,6 @@
 }
 
 TEST_P(QuicSentPacketManagerTest, TolerateReneging) {
-  if (!manager_.tolerate_reneging()) {
-    return;
-  }
   // Send packets 1 - 20.
   for (size_t i = 1; i <= 20; ++i) {
     SendDataPacket(i);
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 23b6094..442eaf8 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -431,7 +431,6 @@
   SetQuicFlag(FLAGS_quic_supports_tls_handshake, true);
   SetQuicFlag(FLAGS_quic_headers_stream_id_in_v99, 60);
   SetQuicReloadableFlag(quic_eliminate_static_stream_map_3, true);
-  SetQuicReloadableFlag(quic_tolerate_reneging, true);
   SetQuicReloadableFlag(quic_simplify_stop_waiting, true);
   SetQuicRestartFlag(quic_do_not_override_connection_id, true);
   SetQuicRestartFlag(quic_use_allocated_connection_ids, true);
