HelloChrome_Auto currently points to HelloChrome_133. That profile is now behind current Chrome in at least one visible ClientHello detail: Chrome sends the TLS trust_anchors extension (0xca34, decimal 51764) by default, while uTLS does not.
I captured ClientHello messages locally on Windows and saw this:
| Client |
trust_anchors |
ClientHello TLS record size |
Chrome for Testing 140.0.7339.207 |
no |
1818 bytes |
Chrome for Testing 141.0.7390.37 |
yes, len 2 |
1792 bytes |
Chrome for Testing 141.0.7390.55 |
yes, len 2 |
1792 bytes |
Chrome for Testing 149.0.7827.54 |
yes, len 2 |
1792 bytes |
Chrome 149.0.7827.54 with --disable-features=TLSTrustAnchorIDs |
no |
1786 bytes |
uTLS HelloChrome_133 / current HelloChrome_Auto |
no |
1786 bytes |
So, from these captures, Chrome appears to have enabled this by default starting with Chrome 141. The extension code existed earlier in Chromium/BoringSSL, but the wire behavior changed at the Chrome 141 boundary in the tested stable builds.
The missing extension is small but fingerprint-visible. The wire encoding is:
That is 6 bytes total: extension type 0xca34, extension length 2, and an empty vector 0000.
The issue is Chrome ClientHello parity: the extension set, JA3-style inputs, and total ClientHello size differ from modern Chrome.
BoringSSL defines the extension as TLSEXT_TYPE_trust_anchors 0xca34 and documents that an empty value still sends the extension in ClientHello. Chromium exposes this through TLSTrustAnchorIDs; disabling that feature in Chrome 149 removes the extension from the captured ClientHello.
HelloChrome_Autocurrently points toHelloChrome_133. That profile is now behind current Chrome in at least one visible ClientHello detail: Chrome sends the TLStrust_anchorsextension (0xca34, decimal51764) by default, while uTLS does not.I captured ClientHello messages locally on Windows and saw this:
trust_anchors140.0.7339.2071818bytes141.0.7390.3721792bytes141.0.7390.5521792bytes149.0.7827.5421792bytes149.0.7827.54with--disable-features=TLSTrustAnchorIDs1786bytesHelloChrome_133/ currentHelloChrome_Auto1786bytesSo, from these captures, Chrome appears to have enabled this by default starting with Chrome 141. The extension code existed earlier in Chromium/BoringSSL, but the wire behavior changed at the Chrome 141 boundary in the tested stable builds.
The missing extension is small but fingerprint-visible. The wire encoding is:
That is 6 bytes total: extension type
0xca34, extension length2, and an empty vector0000.The issue is Chrome ClientHello parity: the extension set, JA3-style inputs, and total ClientHello size differ from modern Chrome.
BoringSSL defines the extension as
TLSEXT_TYPE_trust_anchors 0xca34and documents that an empty value still sends the extension in ClientHello. Chromium exposes this throughTLSTrustAnchorIDs; disabling that feature in Chrome 149 removes the extension from the captured ClientHello.