diff --git a/quic/masque/masque_compression_engine.cc b/quic/masque/masque_compression_engine.cc
index 07678df..8413e0d 100644
--- a/quic/masque/masque_compression_engine.cc
+++ b/quic/masque/masque_compression_engine.cc
@@ -106,29 +106,29 @@
   if (validated) {
     QUIC_DVLOG(1) << "Compressing using validated flow_id " << flow_id;
     if (!writer->WriteVarInt62(flow_id)) {
-      QUIC_BUG_V2(quic_bug_10981_1) << "Failed to write flow_id";
+      QUIC_BUG(quic_bug_10981_1) << "Failed to write flow_id";
       return false;
     }
   } else {
     QUIC_DVLOG(1) << "Compressing using unvalidated flow_id " << flow_id;
     if (!writer->WriteVarInt62(kFlowId0)) {
-      QUIC_BUG_V2(quic_bug_10981_2) << "Failed to write kFlowId0";
+      QUIC_BUG(quic_bug_10981_2) << "Failed to write kFlowId0";
       return false;
     }
     if (!writer->WriteVarInt62(flow_id)) {
-      QUIC_BUG_V2(quic_bug_10981_3) << "Failed to write flow_id";
+      QUIC_BUG(quic_bug_10981_3) << "Failed to write flow_id";
       return false;
     }
     if (!writer->WriteLengthPrefixedConnectionId(client_connection_id)) {
-      QUIC_BUG_V2(quic_bug_10981_4) << "Failed to write client_connection_id";
+      QUIC_BUG(quic_bug_10981_4) << "Failed to write client_connection_id";
       return false;
     }
     if (!writer->WriteLengthPrefixedConnectionId(server_connection_id)) {
-      QUIC_BUG_V2(quic_bug_10981_5) << "Failed to write server_connection_id";
+      QUIC_BUG(quic_bug_10981_5) << "Failed to write server_connection_id";
       return false;
     }
     if (!writer->WriteUInt16(server_address.port())) {
-      QUIC_BUG_V2(quic_bug_10981_6) << "Failed to write port";
+      QUIC_BUG(quic_bug_10981_6) << "Failed to write port";
       return false;
     }
     QuicIpAddress peer_ip = server_address.host();
@@ -139,31 +139,31 @@
     if (peer_ip.address_family() == IpAddressFamily::IP_V6) {
       address_id = MasqueAddressFamilyIPv6;
       if (peer_ip_bytes.length() != QuicIpAddress::kIPv6AddressSize) {
-        QUIC_BUG_V2(quic_bug_10981_7) << "Bad IPv6 length " << server_address;
+        QUIC_BUG(quic_bug_10981_7) << "Bad IPv6 length " << server_address;
         return false;
       }
     } else if (peer_ip.address_family() == IpAddressFamily::IP_V4) {
       address_id = MasqueAddressFamilyIPv4;
       if (peer_ip_bytes.length() != QuicIpAddress::kIPv4AddressSize) {
-        QUIC_BUG_V2(quic_bug_10981_8) << "Bad IPv4 length " << server_address;
+        QUIC_BUG(quic_bug_10981_8) << "Bad IPv4 length " << server_address;
         return false;
       }
     } else {
-      QUIC_BUG_V2(quic_bug_10981_9)
+      QUIC_BUG(quic_bug_10981_9)
           << "Unexpected server_address " << server_address;
       return false;
     }
     if (!writer->WriteUInt8(address_id)) {
-      QUIC_BUG_V2(quic_bug_10981_10) << "Failed to write address_id";
+      QUIC_BUG(quic_bug_10981_10) << "Failed to write address_id";
       return false;
     }
     if (!writer->WriteStringPiece(peer_ip_bytes)) {
-      QUIC_BUG_V2(quic_bug_10981_11) << "Failed to write IP address";
+      QUIC_BUG(quic_bug_10981_11) << "Failed to write IP address";
       return false;
     }
   }
   if (!writer->WriteUInt8(first_byte)) {
-    QUIC_BUG_V2(quic_bug_10981_12) << "Failed to write first_byte";
+    QUIC_BUG(quic_bug_10981_12) << "Failed to write first_byte";
     return false;
   }
   if (long_header) {
@@ -173,7 +173,7 @@
       return false;
     }
     if (!writer->WriteUInt32(version_label)) {
-      QUIC_BUG_V2(quic_bug_10981_13) << "Failed to write version";
+      QUIC_BUG(quic_bug_10981_13) << "Failed to write version";
       return false;
     }
     QuicConnectionId packet_destination_connection_id,
@@ -215,7 +215,7 @@
   }
   absl::string_view packet_payload = reader->ReadRemainingPayload();
   if (!writer->WriteStringPiece(packet_payload)) {
-    QUIC_BUG_V2(quic_bug_10981_14) << "Failed to write packet_payload";
+    QUIC_BUG(quic_bug_10981_14) << "Failed to write packet_payload";
     return false;
   }
   return true;
@@ -231,13 +231,13 @@
                 << quiche::QuicheTextUtils::HexDump(packet);
   QUICHE_DCHECK(server_address.IsInitialized());
   if (packet.empty()) {
-    QUIC_BUG_V2(quic_bug_10981_15) << "Tried to send empty packet";
+    QUIC_BUG(quic_bug_10981_15) << "Tried to send empty packet";
     return;
   }
   QuicDataReader reader(packet.data(), packet.length());
   uint8_t first_byte;
   if (!reader.ReadUInt8(&first_byte)) {
-    QUIC_BUG_V2(quic_bug_10981_16) << "Failed to read first_byte";
+    QUIC_BUG(quic_bug_10981_16) << "Failed to read first_byte";
     return;
   }
   const bool long_header = (first_byte & FLAGS_LONG_HEADER) != 0;
@@ -341,7 +341,7 @@
   QuicIpAddress ip_address;
   ip_address.FromPackedString(ip_bytes, ip_bytes_length);
   if (!ip_address.IsInitialized()) {
-    QUIC_BUG_V2(quic_bug_10981_17) << "Failed to parse IP address";
+    QUIC_BUG(quic_bug_10981_17) << "Failed to parse IP address";
     return false;
   }
   QuicSocketAddress new_server_address = QuicSocketAddress(ip_address, port);
@@ -425,7 +425,7 @@
   *packet = std::vector<char>(packet_length);
   QuicDataWriter writer(packet->size(), packet->data());
   if (!writer.WriteUInt8(first_byte)) {
-    QUIC_BUG_V2(quic_bug_10981_18) << "Failed to write first_byte";
+    QUIC_BUG(quic_bug_10981_18) << "Failed to write first_byte";
     return false;
   }
   if (*version_present) {
@@ -435,29 +435,29 @@
       return false;
     }
     if (!writer.WriteUInt32(version_label)) {
-      QUIC_BUG_V2(quic_bug_10981_19) << "Failed to write version";
+      QUIC_BUG(quic_bug_10981_19) << "Failed to write version";
       return false;
     }
     if (!writer.WriteLengthPrefixedConnectionId(destination_connection_id)) {
-      QUIC_BUG_V2(quic_bug_10981_20)
+      QUIC_BUG(quic_bug_10981_20)
           << "Failed to write long header destination_connection_id";
       return false;
     }
     if (!writer.WriteLengthPrefixedConnectionId(source_connection_id)) {
-      QUIC_BUG_V2(quic_bug_10981_21)
+      QUIC_BUG(quic_bug_10981_21)
           << "Failed to write long header source_connection_id";
       return false;
     }
   } else {
     if (!writer.WriteConnectionId(destination_connection_id)) {
-      QUIC_BUG_V2(quic_bug_10981_22)
+      QUIC_BUG(quic_bug_10981_22)
           << "Failed to write short header destination_connection_id";
       return false;
     }
   }
   absl::string_view payload = reader->ReadRemainingPayload();
   if (!writer.WriteStringPiece(payload)) {
-    QUIC_BUG_V2(quic_bug_10981_23) << "Failed to write payload";
+    QUIC_BUG(quic_bug_10981_23) << "Failed to write payload";
     return false;
   }
   return true;
diff --git a/quic/masque/masque_dispatcher.cc b/quic/masque/masque_dispatcher.cc
index 5e7a626..2273e9b 100644
--- a/quic/masque/masque_dispatcher.cc
+++ b/quic/masque/masque_dispatcher.cc
@@ -74,12 +74,11 @@
 
   // Make sure we don't try to overwrite an existing registration with a
   // different session.
-  QUIC_BUG_IF_V2(
-      quic_bug_12013_1,
-      client_connection_id_registrations_.find(client_connection_id) !=
-              client_connection_id_registrations_.end() &&
-          client_connection_id_registrations_[client_connection_id] !=
-              masque_server_session)
+  QUIC_BUG_IF(quic_bug_12013_1,
+              client_connection_id_registrations_.find(client_connection_id) !=
+                      client_connection_id_registrations_.end() &&
+                  client_connection_id_registrations_[client_connection_id] !=
+                      masque_server_session)
       << "Overwriting existing registration for " << client_connection_id;
   client_connection_id_registrations_[client_connection_id] =
       masque_server_session;
diff --git a/quic/masque/masque_server_backend.cc b/quic/masque/masque_server_backend.cc
index a5a8963..112f305 100644
--- a/quic/masque/masque_server_backend.cc
+++ b/quic/masque/masque_server_backend.cc
@@ -120,8 +120,8 @@
 void MasqueServerBackend::RegisterBackendClient(QuicConnectionId connection_id,
                                                 BackendClient* backend_client) {
   QUIC_DLOG(INFO) << "Registering backend client for " << connection_id;
-  QUIC_BUG_IF_V2(quic_bug_12005_1, backend_client_states_.find(connection_id) !=
-                                       backend_client_states_.end())
+  QUIC_BUG_IF(quic_bug_12005_1, backend_client_states_.find(connection_id) !=
+                                    backend_client_states_.end())
       << connection_id << " already in backend clients map";
   backend_client_states_[connection_id] =
       BackendClientState{backend_client, {}};
diff --git a/quic/masque/masque_server_session.cc b/quic/masque/masque_server_session.cc
index f183ebe..036c75f 100644
--- a/quic/masque/masque_server_session.cc
+++ b/quic/masque/masque_server_session.cc
@@ -347,9 +347,8 @@
                               return connect_udp.fd() == fd;
                             });
   if (it == connect_udp_server_states_.end()) {
-    QUIC_BUG_V2(quic_bug_10974_1)
-        << "Got unexpected event mask " << event->in_events << " on unknown fd "
-        << fd;
+    QUIC_BUG(quic_bug_10974_1) << "Got unexpected event mask "
+                               << event->in_events << " on unknown fd " << fd;
     return;
   }
   QuicDatagramFlowId flow_id = it->flow_id();
@@ -373,7 +372,7 @@
       break;
     }
     if (!read_result.packet_info.HasValue(QuicUdpPacketInfoBit::PEER_ADDRESS)) {
-      QUIC_BUG_V2(quic_bug_10974_2)
+      QUIC_BUG(quic_bug_10974_2)
           << "Missing peer address when reading from fd " << fd;
       continue;
     }
@@ -387,7 +386,7 @@
       continue;
     }
     if (!connection()->connected()) {
-      QUIC_BUG_V2(quic_bug_10974_3)
+      QUIC_BUG(quic_bug_10974_3)
           << "Unexpected incoming UDP packet on fd " << fd << " from "
           << expected_target_server_address
           << " because MASQUE connection is closed";
