diff --git a/quic/core/quic_alarm.cc b/quic/core/quic_alarm.cc
index 22e2e67..37d563f 100644
--- a/quic/core/quic_alarm.cc
+++ b/quic/core/quic_alarm.cc
@@ -17,7 +17,7 @@
     : delegate_(std::move(delegate)), deadline_(QuicTime::Zero()) {}
 
 QuicAlarm::~QuicAlarm() {
-  if (GetQuicRestartFlag(quic_alarm_add_permanent_cancel) && IsSet()) {
+  if (IsSet()) {
     QUIC_CODE_COUNT(quic_alarm_not_cancelled_in_dtor);
     static std::atomic<uint64_t> hit_count{0};
     uint64_t old_count = hit_count.fetch_add(1, std::memory_order_relaxed);
@@ -44,16 +44,6 @@
 }
 
 void QuicAlarm::CancelInternal(bool permanent) {
-  if (!GetQuicRestartFlag(quic_alarm_add_permanent_cancel)) {
-    if (!IsSet()) {
-      // Don't try to cancel an alarm that hasn't been set.
-      return;
-    }
-    deadline_ = QuicTime::Zero();
-    CancelImpl();
-    return;
-  }
-
   if (IsSet()) {
     deadline_ = QuicTime::Zero();
     CancelImpl();
diff --git a/quic/core/quic_alarm_test.cc b/quic/core/quic_alarm_test.cc
index bc3ea2c..c5f0327 100644
--- a/quic/core/quic_alarm_test.cc
+++ b/quic/core/quic_alarm_test.cc
@@ -140,35 +140,16 @@
   EXPECT_FALSE(alarm_.scheduled());
   EXPECT_EQ(QuicTime::Zero(), alarm_.deadline());
 
-  if (!GetQuicRestartFlag(quic_alarm_add_permanent_cancel)) {
-    alarm_.Set(deadline);
-    // When flag is false, PermanentCancel should work like a normal Cancel.
-    EXPECT_TRUE(alarm_.IsSet());
-    EXPECT_TRUE(alarm_.scheduled());
-    EXPECT_EQ(deadline, alarm_.deadline());
-    EXPECT_FALSE(alarm_.IsPermanentlyCancelled());
-    alarm_.PermanentCancel();
-  } else {
-    EXPECT_QUIC_BUG(alarm_.Set(deadline),
-                    "Set called after alarm is permanently cancelled");
-    EXPECT_TRUE(alarm_.IsPermanentlyCancelled());
-  }
+  EXPECT_QUIC_BUG(alarm_.Set(deadline),
+                  "Set called after alarm is permanently cancelled");
+  EXPECT_TRUE(alarm_.IsPermanentlyCancelled());
   EXPECT_FALSE(alarm_.IsSet());
   EXPECT_FALSE(alarm_.scheduled());
   EXPECT_EQ(QuicTime::Zero(), alarm_.deadline());
 
-  if (!GetQuicRestartFlag(quic_alarm_add_permanent_cancel)) {
-    alarm_.Update(deadline, QuicTime::Delta::Zero());
-    EXPECT_TRUE(alarm_.IsSet());
-    EXPECT_TRUE(alarm_.scheduled());
-    EXPECT_EQ(deadline, alarm_.deadline());
-    EXPECT_FALSE(alarm_.IsPermanentlyCancelled());
-    alarm_.PermanentCancel();
-  } else {
-    EXPECT_QUIC_BUG(alarm_.Update(deadline, QuicTime::Delta::Zero()),
-                    "Update called after alarm is permanently cancelled");
-    EXPECT_TRUE(alarm_.IsPermanentlyCancelled());
-  }
+  EXPECT_QUIC_BUG(alarm_.Update(deadline, QuicTime::Delta::Zero()),
+                  "Update called after alarm is permanently cancelled");
+  EXPECT_TRUE(alarm_.IsPermanentlyCancelled());
   EXPECT_FALSE(alarm_.IsSet());
   EXPECT_FALSE(alarm_.scheduled());
   EXPECT_EQ(QuicTime::Zero(), alarm_.deadline());
diff --git a/quic/core/quic_buffered_packet_store.cc b/quic/core/quic_buffered_packet_store.cc
index ed1b80e..f235e45 100644
--- a/quic/core/quic_buffered_packet_store.cc
+++ b/quic/core/quic_buffered_packet_store.cc
@@ -77,8 +77,7 @@
           alarm_factory->CreateAlarm(new ConnectionExpireAlarm(this))) {}
 
 QuicBufferedPacketStore::~QuicBufferedPacketStore() {
-  if (GetQuicRestartFlag(quic_alarm_add_permanent_cancel) &&
-      expiration_alarm_ != nullptr) {
+  if (expiration_alarm_ != nullptr) {
     expiration_alarm_->PermanentCancel();
   }
 }
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index bd745fd..8ab5bf9 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -6137,7 +6137,7 @@
 }
 
 void QuicConnection::OnForwardProgressMade() {
-  if (GetQuicRestartFlag(quic_alarm_add_permanent_cancel) && !connected_) {
+  if (!connected_) {
     return;
   }
   if (is_path_degrading_) {
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index 00bd616..3e33c29 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -359,12 +359,10 @@
       << "Trying to create dispatcher without any supported versions";
   QUIC_DLOG(INFO) << "Created QuicDispatcher with versions: "
                   << ParsedQuicVersionVectorToString(GetSupportedVersions());
-  QUIC_RESTART_FLAG_COUNT(quic_alarm_add_permanent_cancel);
 }
 
 QuicDispatcher::~QuicDispatcher() {
-  if (GetQuicRestartFlag(quic_alarm_add_permanent_cancel) &&
-      delete_sessions_alarm_ != nullptr) {
+  if (delete_sessions_alarm_ != nullptr) {
     delete_sessions_alarm_->PermanentCancel();
   }
   if (clear_stateless_reset_addresses_alarm_ != nullptr) {
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 6f0617c..fecb34d 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -31,8 +31,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_can_send_ack_frequency, true)
 // If true, add missing MaybeUpdateAckTimeout for ack-eliciting frames.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_add_missing_update_ack_timeout, true)
-// If true, allow QuicAlarm to be permanently cancelled.
-QUIC_FLAG(FLAGS_quic_restart_flag_quic_alarm_add_permanent_cancel, true)
 // If true, allow client to enable BBRv2 on server via connection option \'B2ON\'.
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_allow_client_enabled_bbr_v2, false)
 // If true, avoid calling reloadable flags in QuicVersionManager constructor by lazily initializing internal state.
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index ad373e3..60a2b45 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -159,8 +159,7 @@
 }
 
 QuicSession::~QuicSession() {
-  if (GetQuicRestartFlag(quic_alarm_add_permanent_cancel) &&
-      closed_streams_clean_up_alarm_ != nullptr) {
+  if (closed_streams_clean_up_alarm_ != nullptr) {
     closed_streams_clean_up_alarm_->PermanentCancel();
   }
 }
