Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
cb88d94
Remove client metadata from AnyTLS requests by default
nekohasekai Aug 2, 2026
256d42a
Update sing-quic
nekohasekai Aug 3, 2026
a29b4ea
Fix AnyTLS URLTest results
makt28 Aug 3, 2026
d763884
Fix tailscale panic with IP control URL
nekohasekai Aug 3, 2026
fd7cd31
Fix tailscale DNS transport missing DNS-only netmap updates
nekohasekai Aug 3, 2026
6849e26
tailscale: Fix system interface network category on Windows
nekohasekai Aug 3, 2026
17ec3c7
Bump version
nekohasekai Aug 3, 2026
3d85cbd
tailscale: Fix handle peer DNS query
nekohasekai May 20, 2026
cc1c891
tailscale: Fix preferred_by matching all addresses with exit node
nekohasekai Aug 4, 2026
3b22615
tailscale: Match bare hostnames in preferred_by when search domains e…
nekohasekai Aug 4, 2026
af40956
Update sing
nekohasekai Aug 4, 2026
c976771
Add MAC and hostname rule items
nekohasekai Mar 3, 2026
d33ecce
Add Android support for MAC and hostname rule items
nekohasekai Mar 4, 2026
72fdf31
Add macOS support for MAC and hostname rule items
nekohasekai Mar 6, 2026
79bc600
documentation: Update descriptions for neighbor rules
nekohasekai Mar 6, 2026
11f1468
Refactor ACME support to certificate provider
nekohasekai Mar 23, 2026
cc9c26f
Add BBR profile and hop interval randomization for Hysteria2
nekohasekai Mar 30, 2026
4bd4ab9
platform: Add OOM Report & Crash Report
nekohasekai Apr 2, 2026
3493f7b
Also enable certificate store by default on Apple platforms
nekohasekai Apr 7, 2026
54b51f2
Add evaluate DNS rule action and related rule items
nekohasekai Apr 7, 2026
542a28e
platform: Fix set local
nekohasekai Apr 7, 2026
a59c7ad
Fix deprecated warning double-formatting on localized clients
nekohasekai Apr 7, 2026
a3bd093
oom-killer: Free memory on pressure notification and use gradual inte…
nekohasekai Apr 7, 2026
38cf7ae
tools: Network Quality & STUN
nekohasekai Apr 8, 2026
c8e5884
platform: Fix darwin signal handler
nekohasekai Apr 9, 2026
70ebe81
tools: Tailscale status
nekohasekai Apr 9, 2026
96a7ff3
Revert "Also enable certificate store by default on Apple platforms"
nekohasekai Apr 9, 2026
4c219af
Fix rules lock
nekohasekai Apr 9, 2026
c0a3ba4
Fix darwin local DNS transport
nekohasekai Apr 10, 2026
9da3879
tools: Tailscale status
nekohasekai Apr 10, 2026
9803dc7
Un-deprecate `ip_accept_any` DNS rule item
nekohasekai Apr 10, 2026
547950d
documentation: Fixes
nekohasekai Apr 10, 2026
9dfeb2c
Add `package_name_regex` route, DNS and headless rule item
nekohasekai Apr 10, 2026
e8d3986
platform: Wrap command RPC error returns with E.Cause
nekohasekai Apr 10, 2026
48082a7
Fix lint errors
nekohasekai Apr 10, 2026
f146487
Add cloudflared inbound
nekohasekai Apr 10, 2026
2d460bb
documentation: Fix missing update for `ip_version` and `query_type`
nekohasekai Apr 10, 2026
71146b0
Fix stun test
nekohasekai Apr 10, 2026
ac9560b
Fix darwin cgo DNS again
nekohasekai Apr 10, 2026
d741539
Fix tailscale error
nekohasekai Apr 11, 2026
a2276d7
Add optimistic DNS cache
nekohasekai Apr 11, 2026
ad4db95
oom-killer: Record report before reset network
nekohasekai Apr 14, 2026
044bdfc
Refactor: HTTP clients, unified HTTP2/QUIC options, Apple engines
nekohasekai Apr 14, 2026
13f570c
Standardize hosts path
nekohasekai Apr 15, 2026
27af95b
Add TLS spoof support
nekohasekai Apr 15, 2026
6814631
Fix legacy rule-set download_detour blocked by empty direct check
nekohasekai Apr 15, 2026
6477e9f
Reject pure-IP rule-set references without match_response
nekohasekai Apr 15, 2026
e2a966b
Fix use-after-free of pooled value buffers in bbolt Batch writes
nekohasekai Apr 15, 2026
391bcdb
Reject IP literal server name with TLS spoof
nekohasekai Apr 16, 2026
db4d150
Fix macOS tlsspoof
nekohasekai Apr 17, 2026
6d8ed0a
Scope HTTP/2 fallback and HTTP/3 broken state per authority
nekohasekai Apr 17, 2026
9790d06
Defer implicit default HTTP client fallback to first use
nekohasekai Apr 17, 2026
8a3f6f7
Strip EDNS padding from upstream DNS responses
nekohasekai Apr 17, 2026
dfaea49
Fix Apple TLS metadata capture
nekohasekai Apr 18, 2026
aa32e39
Fix tls-spoof
nekohasekai Apr 17, 2026
3d8d991
Add search domain support for Tailscale DNS
nekohasekai Apr 20, 2026
7bd4453
Log DNS optimistic background refresh outcomes
nekohasekai Apr 21, 2026
9c42b90
Fix Tailscale search domain response name mismatch
nekohasekai Apr 21, 2026
7b6732a
Fix goroutine leak in networkquality tool
nekohasekai Apr 21, 2026
918f445
Add ACME profile support for IP address certificates
nekohasekai Mar 26, 2026
d558d07
platform: Improve oom-killer
nekohasekai Apr 21, 2026
3c637bd
Fix darwin cgo DNS again
nekohasekai Apr 22, 2026
d7156a5
Improve UDP batch support
nekohasekai Apr 24, 2026
67addc4
Add Windows TLS engine
nekohasekai Apr 24, 2026
e82a003
Preserve comments between formatting
nekohasekai Apr 28, 2026
26a7972
Improve oom-killer
nekohasekai Apr 28, 2026
db61a58
ssh: Add cipher, MAC, and key exchange configuration
nekohasekai Apr 28, 2026
6365685
dns: Add timeout configuration
nekohasekai Apr 28, 2026
0855dee
Fix tailscale start dependencies
nekohasekai Apr 28, 2026
fcdd24b
dns: Add neighbor-based hostname resolution to local server
nekohasekai Apr 29, 2026
b5b841c
dns: Add preferred_by rule item
nekohasekai Apr 29, 2026
f339ef3
dns: Add mDNS server
nekohasekai Apr 30, 2026
a1436e3
Allow customizing TUN DNS mode and hijack interface DNS by default
nekohasekai May 2, 2026
2df7a6c
Add more spoof method
macronut Apr 29, 2026
b738edb
Fix reset network
nekohasekai May 5, 2026
54a8668
Add hysteria2 realm service and support
nekohasekai May 10, 2026
5cacaba
Update hysteria2 realm
nekohasekai May 11, 2026
b75616f
Fix TLS server close
nekohasekai May 12, 2026
3ad842d
Fix hysteria2 realm server
nekohasekai May 12, 2026
e1b9423
Fix lint errors
nekohasekai May 14, 2026
0ad68c1
oom-killer: Remove log "OOM draft discarded"
nekohasekai May 19, 2026
66d0f8f
tailscale: Revert dialer deprecation and remove control_http_client
nekohasekai May 20, 2026
a66c47b
tailscale: Fix handle peer DNS query
nekohasekai May 20, 2026
6e54914
tailscale: Add runtime exit node API
nekohasekai May 21, 2026
33f6340
tailscale: Expose more peer info fields
nekohasekai May 21, 2026
08d6955
Fix tailscale dns
nekohasekai May 21, 2026
a58133e
daemon: Add Tailssh
nekohasekai May 25, 2026
48c3f0a
hysteria2: Add gecko obfs
nekohasekai May 25, 2026
9b1ea13
tools: Fix mising cleanup
nekohasekai May 26, 2026
f05d6cd
tailscale: Add tailssh server
nekohasekai May 28, 2026
50c664b
tailssh: fix platform SFTP session teardown
nekohasekai Jun 1, 2026
e8b13dc
platform: Add tailscale device name and logout
nekohasekai Jun 2, 2026
73fde12
platform: Add shell support for iOS
nekohasekai Jun 10, 2026
ffa438c
daemon: Split host operations into ManagedService
nekohasekai Jun 11, 2026
3559a2b
Add sing-box API service
nekohasekai Jun 11, 2026
f03e2df
tailscale: Fix auth URL not refreshed after logout
nekohasekai Jun 12, 2026
663000b
Fix group status updates broken by API service
nekohasekai Jun 13, 2026
125963d
release: Fix apple release
nekohasekai Jun 13, 2026
e8eaea2
dns: Remove unused files
nekohasekai Jun 13, 2026
45382cb
Improve remote rule-set update
nekohasekai Jun 13, 2026
6fc3e9f
Add dashboard support for API service
nekohasekai Jun 13, 2026
e869b03
Fix remote control when Clash server is unavailable
nekohasekai Jun 15, 2026
8975a38
Add USB/IP service
nekohasekai Jun 14, 2026
aad0a3d
Add USB/IP support for macOS
nekohasekai Jun 16, 2026
4691faa
documentation: Add USB/IP server and client
nekohasekai Jun 17, 2026
6cf28bb
Fix Cloudflared edge discovery ignoring configured resolver
nekohasekai Jun 20, 2026
c23d84e
Add iOS jailbreak release
nekohasekai Jun 20, 2026
e1ce6b0
certificate: Replace platform bridge with CGO JNI
nekohasekai Jun 21, 2026
08ee6e0
platform: Fix missing api version check for usb/ip
nekohasekai Jun 21, 2026
9276c9f
Fix oom draft flood
nekohasekai Jun 23, 2026
2946263
release: Fix upload ios deb
nekohasekai Jun 25, 2026
11a379e
Refactor darwin local DNS to raw mDNSResponder call
nekohasekai Jun 27, 2026
a47a5b5
Write logs to oom report
nekohasekai Jun 28, 2026
6b0042a
Add age support for report export
nekohasekai Jun 28, 2026
d300773
Improve DHCP DNS server initialize
nekohasekai Jun 28, 2026
e95cc8c
Fix linux ping
nekohasekai Jun 29, 2026
dd676d7
tls: Fix read wait buffer sizing
nekohasekai Jul 2, 2026
c95f742
dialer: Dial directly when only one interface is available
nekohasekai Jul 4, 2026
38c3dc7
Add snell protocol
nekohasekai Jul 3, 2026
4cfe046
Add L3 forwarding support
nekohasekai Jul 6, 2026
cfecd52
Fix local DNS transport on darwin
nekohasekai Jul 6, 2026
51312b0
Imrpove flow tracking & sniff action
nekohasekai Jul 6, 2026
be42d62
daemon: Release memory to OS on service reload
nekohasekai Jul 7, 2026
c1936a0
Add bridge outbound
nekohasekai Jul 7, 2026
6bde7ac
Improve bridge
nekohasekai Jul 8, 2026
01624aa
Add windows bridge
nekohasekai Jul 8, 2026
27b8069
Improve darwin bridge
nekohasekai Jul 8, 2026
e46505b
Fix bridge MTU
nekohasekai Jul 8, 2026
d979a38
Improve windivert syscall
nekohasekai Jul 8, 2026
575c3ba
Fix windows bridge forwarding to connected subnets
nekohasekai Jul 8, 2026
b2c0fa5
Fix macOS bridge with includeAllNetworks
nekohasekai Jul 8, 2026
7fd87bc
Fix macOS bridge kernel panic
nekohasekai Jul 8, 2026
a89e27b
Fix process and neighbor rules not matched in pre-match
nekohasekai Jul 8, 2026
1361a39
Add hysteria2 realm ip_version and port_mapping options
nekohasekai Jul 9, 2026
d637b9f
Add connections to OOM report
nekohasekai Jul 9, 2026
4ea895b
Fix tailscale version
nekohasekai Jul 10, 2026
3a8a0b6
Add netns and unshare support
nekohasekai Jul 10, 2026
b098455
Fix netns manager
nekohasekai Jul 11, 2026
2ffce94
windivert: Verify cached driver against embedded asset before load
nekohasekai Jul 11, 2026
fecca51
platform: Export tester and reporter
nekohasekai Jul 11, 2026
84a0c36
Fix windivert open
nekohasekai Jul 12, 2026
4a62530
bridge: Raise accept_ra to 2 when enabling IPv6 forwarding
nekohasekai Jul 12, 2026
336019f
Fix daemon groups
nekohasekai Jul 12, 2026
f07e353
platform: Add boxdd
nekohasekai Jul 13, 2026
893b5e7
platform: Fix daemon data
nekohasekai Jul 13, 2026
8a6f063
platform: Add http proxy support for Windows
nekohasekai Jul 13, 2026
47b83a7
documentation: Update icon svg
nekohasekai Jul 13, 2026
2b8885e
Fix nfqueue options
nekohasekai Jul 14, 2026
5286d16
windivert: stabilize Windows driver lifecycle
nekohasekai Jul 14, 2026
37e0757
Fix SetGroupExpand race
nekohasekai Jul 14, 2026
fb04aab
Fix tun gso check
nekohasekai Jul 14, 2026
23e9576
Fix nftables flush
nekohasekai Jul 14, 2026
40cbca2
Fix windows bridge
nekohasekai Jul 14, 2026
f6089e4
Add windows build
nekohasekai Jul 14, 2026
128ccc4
boxdd: Fix log format
nekohasekai Jul 14, 2026
707396f
boxxx: Add update API
nekohasekai Jul 14, 2026
9c1f729
boxdd: Add custom working directory support
nekohasekai Jul 15, 2026
3510b37
tailscale: support Windows SSH user sessions
nekohasekai Jul 15, 2026
f450945
Update windows build
nekohasekai Jul 15, 2026
04d8e89
boxdd: Add insecure mode
nekohasekai Jul 15, 2026
50926c7
Fix start lifecycle
nekohasekai Jul 15, 2026
e60d25e
platform: Fix version compare
nekohasekai Jul 16, 2026
811418d
Fix oomkiller
nekohasekai Jul 16, 2026
3c0e5c2
Fix iOS brdige
nekohasekai Jul 16, 2026
e85d368
Add multiple tags support to rule-sets
nekohasekai Jul 16, 2026
f27f10f
boxx: Fix unsafe installation
nekohasekai Jul 16, 2026
6735a67
refactor: New tun udpnat
nekohasekai Jul 16, 2026
8f42e2a
Refactor endpoint listen
nekohasekai Jul 17, 2026
d8c62fb
Update Go to 1.25.12
nekohasekai Jul 17, 2026
08864d3
Add openvpn and openconnect
nekohasekai Jul 17, 2026
3612c81
Fix bind control for auto redirect
nekohasekai Jul 17, 2026
49dd7de
Refactor endpoint in started interface
nekohasekai Jul 17, 2026
7c17ad3
Refactor OpenVPN and OpenConnect endpoints
nekohasekai Jul 18, 2026
196e1a8
Fix SSO support for anyconnect
nekohasekai Jul 18, 2026
4153184
Refactor UDP DNS hijack
nekohasekai Jul 19, 2026
6e6240c
refactor: Async DNS
nekohasekai Jul 19, 2026
8194dce
Fix DNS route suffix matching
nekohasekai Jul 19, 2026
94c0c28
boxdd: Fix linux permission
nekohasekai Jul 19, 2026
06215ee
Improve network reset
nekohasekai Jul 19, 2026
722f8ee
boxdd: Implement linux http proxy
nekohasekai Jul 19, 2026
22f0a82
desktop: Pin dependencies
nekohasekai Jul 19, 2026
6bc3280
Add linux desktop build
nekohasekai Jul 19, 2026
1bfd003
openconnect: Fix Fortinet SSO
nekohasekai Jul 20, 2026
378fa59
Fix wg detour
nekohasekai Jul 20, 2026
d753ddd
boxdd: Fix unsafe permission check
nekohasekai Jul 20, 2026
34916a4
openvpn: Fix certificate verification compatibility
nekohasekai Jul 20, 2026
d10d24b
Fix security check message
nekohasekai Jul 20, 2026
ede4fe4
Improve OpenVPN & OpenConnect interoperability
nekohasekai Jul 21, 2026
baa864f
build: Refactor workflow
nekohasekai Jul 21, 2026
9610310
boxdd: Fix windows update
nekohasekai Jul 21, 2026
1d28113
Fix TCP DNS retry
nekohasekai Jul 21, 2026
6b6ea71
Update uTLS to v1.8.7
flyzstu Jul 21, 2026
4c0231e
Update issue template for new clients
nekohasekai Jul 21, 2026
143303c
Add Fortinet hostcheck support
nekohasekai Jul 21, 2026
9c96478
release: Improve release workflow
nekohasekai Jul 21, 2026
161dec0
Fix Tailscale 4via6 subnet routing
nekohasekai Jul 22, 2026
500f837
dns: Cache responses with client subnet
nekohasekai Jul 22, 2026
9974c05
dns: Probe connection reuse support for TCP transports
nekohasekai Jul 22, 2026
f1a0dc5
Fix Fortinet SSO again
nekohasekai Jul 22, 2026
428976c
platform: Fix WIFI state on reload
nekohasekai Jul 23, 2026
399359b
route: simplify rule_set matching semantics
nekohasekai Jul 23, 2026
c486852
dns: Add namespace and parallel support for evaluate
nekohasekai Jul 23, 2026
f6bc8b0
Add JSON schema support
nekohasekai Jul 24, 2026
6a48c97
release: Fix linux sign
nekohasekai Jul 24, 2026
940186c
Add initial_path option to remote rule-sets
nekohasekai Jul 24, 2026
90bc53e
daemon: Improve URLTest
nekohasekai Jul 24, 2026
eaa738d
Fix inconsistent URLTest results
nekohasekai Jul 25, 2026
1745497
Fix string type
nekohasekai Jul 25, 2026
04d2efd
Fix TUN dispatcher deadlock
nekohasekai Jul 29, 2026
889603c
Fix openvpn
nekohasekai Jul 29, 2026
66c6c86
release: Fix rpm package format for desktop client
nekohasekai Jul 29, 2026
b517859
dns: Fix completed race rule blocked by earlier armed rule
nekohasekai Jul 31, 2026
213b6be
wireguard: Fix system device configures DNS for interface
nekohasekai Jul 31, 2026
79a9b77
Fix TLS fragment ACK wait on Windows without TCP estats
nekohasekai Jul 31, 2026
9cf183c
Update naiveproxy to v150.0.7871.63-1
nekohasekai Jul 31, 2026
24d212d
Remove client metadata from AnyTLS requests by default
nekohasekai Aug 3, 2026
c2e44e5
Bump version
nekohasekai Aug 3, 2026
406cd91
Update tailscale to v1.102.1
nekohasekai Aug 4, 2026
c0edb79
tailscale: Fix preferred_by matching all addresses with exit node
nekohasekai Aug 4, 2026
62095fa
tailscale: Match bare hostnames in DNS server preferred_by
nekohasekai Aug 4, 2026
53c73f2
Update quic-go to v0.61.0
nekohasekai Aug 4, 2026
2fdd538
Add hysteria2 chrome parrot support
nekohasekai Aug 4, 2026
7edf0a0
Update tailscale usages
nekohasekai Aug 4, 2026
d620bbb
Update gvisor to 20260727.0
nekohasekai Aug 5, 2026
b9dd081
Bump version
nekohasekai Aug 5, 2026
1016e7e
wg: Fix InputPackets exceeding device batch size
nekohasekai Aug 5, 2026
3001f03
Bump version
nekohasekai Aug 5, 2026
bad1d12
merge: sync upstream v1.14.0-beta.7
github-actions[bot] Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/CRONET_GO_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
617d38f41f935b46a68f550d9add2e38abb3f168
cfbca3ad7edb3f8c1bd78b4bcb7c4c1a1ae3d195
2 changes: 1 addition & 1 deletion clients/android
Submodule android updated 1 files
+2 −2 version.properties
2 changes: 1 addition & 1 deletion clients/apple
12 changes: 4 additions & 8 deletions common/networkquality/networkquality.go
Original file line number Diff line number Diff line change
Expand Up @@ -407,11 +407,9 @@ func (r *directionRunner) addConnection(ctx context.Context) error {
r.connMu.Lock()
r.connections = append(r.connections, conn)
r.connMu.Unlock()
r.wg.Add(1)
go func() {
defer r.wg.Done()
r.wg.Go(func() {
conn.run(ctx, r.onConnectionFailed)
}()
})
return nil
}

Expand All @@ -437,9 +435,7 @@ func (r *directionRunner) pickReadyConnection() *loadConnection {
}

func (r *directionRunner) startProber(ctx context.Context) {
r.wg.Add(1)
go func() {
defer r.wg.Done()
r.wg.Go(func() {
ticker := time.NewTicker(r.probeInterval())
defer ticker.Stop()
for {
Expand All @@ -455,7 +451,7 @@ func (r *directionRunner) startProber(ctx context.Context) {
r.runProbeRound(ctx, conn.client)
ticker.Reset(r.probeInterval())
}
}()
})
}

func (r *directionRunner) runProbeRound(ctx context.Context, selfClient *http.Client) {
Expand Down
25 changes: 8 additions & 17 deletions daemon/started_service_tailscale_ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,9 +211,7 @@ func (s *StartedService) StartTailscaleSSHSession(
Message: &TailscaleSSHServerMessage_Ready{Ready: &TailscaleSSHReady{}},
})

workersWg.Add(1)
go func() {
defer workersWg.Done()
workersWg.Go(func() {
for {
msg, recvErr := server.Recv()
if recvErr == io.EOF {
Expand Down Expand Up @@ -243,10 +241,9 @@ func (s *StartedService) StartTailscaleSSHSession(
}))
}
}
}()
})

pumpReader := func(reader io.Reader) {
defer workersWg.Done()
buffer := buf.Get(buf.BufferSize)
defer buf.Put(buffer)
for {
Expand All @@ -261,14 +258,10 @@ func (s *StartedService) StartTailscaleSSHSession(
}
}
}
workersWg.Add(1)
go pumpReader(stdout)
workersWg.Add(1)
go pumpReader(stderr)
workersWg.Go(func() { pumpReader(stdout) })
workersWg.Go(func() { pumpReader(stderr) })

workersWg.Add(1)
go func() {
defer workersWg.Done()
workersWg.Go(func() {
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
for {
Expand All @@ -283,11 +276,9 @@ func (s *StartedService) StartTailscaleSSHSession(
}
}
}
}()
})

workersWg.Add(1)
go func() {
defer workersWg.Done()
workersWg.Go(func() {
waitErr := sshSession.Wait()
exitMessage := &TailscaleSSHExit{}
switch waitErrTyped := waitErr.(type) {
Expand All @@ -302,7 +293,7 @@ func (s *StartedService) StartTailscaleSSHSession(
Message: &TailscaleSSHServerMessage_Exit{Exit: exitMessage},
})
cancel()
}()
})

go func() {
<-sessionCtx.Done()
Expand Down
6 changes: 2 additions & 4 deletions dns/transport/local/local_darwin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,7 @@ func TestSystemExchangeConcurrent(t *testing.T) {
if i%2 == 1 {
qtype = mDNS.TypeAAAA
}
waitGroup.Add(1)
go func() {
defer waitGroup.Done()
waitGroup.Go(func() {
message := new(mDNS.Msg)
message.SetQuestion("localhost.", qtype)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
Expand All @@ -149,7 +147,7 @@ func TestSystemExchangeConcurrent(t *testing.T) {
if len(response.Answer) == 0 {
errors <- context.DeadlineExceeded
}
}()
})
}
waitGroup.Wait()
close(errors)
Expand Down
43 changes: 43 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,49 @@
icon: material/alert-decagram
---

#### 1.14.0-beta.7

* Add Hysteria2 Chrome QUIC fingerprint parroting **1**
* Update quic-go to v0.61.0
* Update tailscale to v1.102.1
* Update gvisor to 20260727.0
* Fixes and improvements

**1**:

Hysteria2 client connections now parrot Chrome's QUIC handshake by default,
making the traffic harder to identify by handshake fingerprinting. Since
Chrome does not declare support for Ed25519, servers using Ed25519
certificates will fail the handshake; see
[disable_chrome_parrot](/configuration/outbound/hysteria2/#disable_chrome_parrot).

#### 1.14.0-beta.5

* Remove client metadata from AnyTLS requests by default **1**
* Update naiveproxy to v150.0.7871.63-1
* Fixes and improvements

**1**:

We found that the AnyTLS client implementation uploads metadata that is
**not used by the open-source server**, and there are reports of vendors using
it to profile and discriminate against users. We now leave it empty by default
and allow you to customize it, see
[AnyTLS client metadata](/manual/misc/anytls-client-metadata/).

#### 1.13.16

* Remove client metadata from AnyTLS requests by default **1**
* Fixes and improvements

**1**:

We found that the AnyTLS client implementation uploads metadata that is
**not used by the open-source server**, and there are reports of vendors using
it to profile and discriminate against users. We now leave it empty by default
and allow you to customize it, see
[AnyTLS client metadata](/manual/misc/anytls-client-metadata/).

#### 1.14.0-beta.4

* Fixes and improvements
Expand Down
7 changes: 7 additions & 0 deletions docs/configuration/outbound/anytls.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ icon: material/new-box
"idle_session_check_interval": "30s",
"idle_session_timeout": "30s",
"min_idle_session": 5,
"client_metadata": "",
"tls": {},

... // Dial Fields
Expand Down Expand Up @@ -55,6 +56,12 @@ In the check, close sessions that have been idle for longer than this. Default:

In the check, at least the first `n` idle sessions are kept open. Default value: `n`=0

#### client_metadata

!!! question "Since sing-box 1.13.16"

Check [AnyTLS client metadata](/manual/misc/anytls-client-metadata/).

#### tls

==Required==
Expand Down
7 changes: 7 additions & 0 deletions docs/configuration/outbound/anytls.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ icon: material/new-box
"idle_session_check_interval": "30s",
"idle_session_timeout": "30s",
"min_idle_session": 5,
"client_metadata": "",
"tls": {},

... // 拨号字段
Expand Down Expand Up @@ -55,6 +56,12 @@ AnyTLS 密码。

在检查中,至少前 `n` 个空闲会话保持打开状态。默认值:`n`=0

#### client_metadata

!!! question "自 sing-box 1.13.16 起"

参阅 [AnyTLS 客户端元数据](/zh/manual/misc/anytls-client-metadata/)。

#### tls

==必填==
Expand Down
21 changes: 21 additions & 0 deletions docs/configuration/outbound/hysteria2.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

:material-plus: [hop_interval_max](#hop_interval_max)
:material-plus: [bbr_profile](#bbr_profile)
:material-plus: [disable_chrome_parrot](#disable_chrome_parrot)
:material-plus: [realm](#realm)
:material-alert: [obfs](#obfstype)

Expand Down Expand Up @@ -38,6 +39,7 @@

"bbr_profile": "",
"brutal_debug": false,
"disable_chrome_parrot": false,
"realm": {
"server_url": "https://realm.example.com",
"token": "",
Expand Down Expand Up @@ -178,6 +180,25 @@ BBR congestion control algorithm profile, one of `conservative` `standard` `aggr

Enable debug information logging for Hysteria Brutal CC.

#### disable_chrome_parrot

!!! question "Since sing-box 1.14.0"

Disable Chrome QUIC fingerprint parroting.

If it is not disabled, the client's QUIC handshake is made to parrot Chrome's, so that Hysteria traffic
is harder to identify by handshake fingerprinting.

To match Chrome, the client uses Chrome's own QUIC parameters, which override some settings:
`idle_timeout` is fixed at 30 seconds, `max_concurrent_streams` and `initial_packet_size` are replaced by
Chrome's values, and the receive windows start at Chrome's initial values before growing to the configured
maximums.

!!! warning ""

Chrome does not declare support for Ed25519, so a server using an Ed25519 certificate will fail the
handshake. Use an ECDSA or RSA certificate instead; certificates issued by ACME are unaffected.

#### realm

!!! question "Since sing-box 1.14.0"
Expand Down
19 changes: 19 additions & 0 deletions docs/configuration/outbound/hysteria2.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

:material-plus: [hop_interval_max](#hop_interval_max)
:material-plus: [bbr_profile](#bbr_profile)
:material-plus: [disable_chrome_parrot](#disable_chrome_parrot)
:material-plus: [realm](#realm)
:material-alert: [obfs](#obfstype)

Expand Down Expand Up @@ -38,6 +39,7 @@

"bbr_profile": "",
"brutal_debug": false,
"disable_chrome_parrot": false,
"realm": {
"server_url": "https://realm.example.com",
"token": "",
Expand Down Expand Up @@ -176,6 +178,23 @@ BBR 拥塞控制算法配置,可选 `conservative` `standard` `aggressive`。

启用 Hysteria Brutal CC 的调试信息日志记录。

#### disable_chrome_parrot

!!! question "自 sing-box 1.14.0 起"

禁用 Chrome QUIC 指纹模仿。

如果没有禁用,客户端的 QUIC 握手将被构造为模仿 Chrome,使 Hysteria 流量更难通过握手指纹识别。

为了与 Chrome 一致,客户端使用 Chrome 自己的 QUIC 参数,其覆盖部分设置:
`idle_timeout` 固定为 30 秒,`max_concurrent_streams` 与 `initial_packet_size` 被替换为 Chrome 的值,
接收窗口从 Chrome 的初始值开始,再增长到配置的最大值。

!!! warning ""

Chrome 不声明支持 Ed25519,因此使用 Ed25519 证书的服务端将无法完成握手。
请改用 ECDSA 或 RSA 证书;由 ACME 签发的证书不受影响。

#### realm

!!! question "自 sing-box 1.14.0 起"
Expand Down
67 changes: 67 additions & 0 deletions docs/manual/misc/anytls-client-metadata.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
icon: material/incognito
---

# AnyTLS client metadata

The AnyTLS protocol has a design flaw: its settings frame requires the client
to send its software name and version to the server, and the protocol
specification requires that clients not disguise this information.

This field serves no protocol purpose — AnyTLS already has a separate version
field for compatibility negotiation, and the open-source server implementation
does not use client metadata. However, the field allows vendors to collect and track client types, and for
platform-specific clients, potentially infer private information such as the operating system type and version range —
something that should not, and is not expected by users to, appear in an
anti-censorship protocol. We have received reports that
commercial proxy providers use this information to identify and block
connections from the official library provided by AnyTLS for sing-box
integration, reportedly because abusive users connect to their servers with
sing-box or with clients using the same official library. This indicates that
client metadata is being collected and used for discrimination in practice.

The protocol specification states that "disguising it has no value." We
disagree: the situation is analogous to browsers implementing TLS ECH GREASE —
without it, privacy-protecting clients can be fingerprinted and treated
differently.

## Status

### 2025-02-20

We merged the
[pull request adding this protocol](https://github.com/SagerNet/sing-box/pull/2615).
Since the metadata was fixed at `sing-anytls/<library version>` in the
implementation provided for our use, and we did not carefully review the
protocol specification and other implementations, we wrongly believed that it
was not private information.

### 2025-04-05

The protocol document
[added](https://github.com/anytls/anytls-go/commit/8812aae7ab29dd88bb89067b9ca676e2e7e29171)
the requirement that third-party implementations fill in the real software
name and version, claiming that "disguising it has no value".

### 2026-07-18

A [pull request submitted to sing-box](https://github.com/SagerNet/sing-box/pull/4311)
was found to additionally upload the `sing-box` name and the actual version;
the change was subsequently reverted and was never released.

### 2026-08-03

sing-box 1.13.16 and 1.14.0-beta.5 have been released; the client metadata in
AnyTLS requests is now empty by default. For compatibility, the
[client_metadata](/configuration/outbound/anytls/#client_metadata) outbound
option allows users to set a custom value.

Since the open-source server implementation does not use this information and
it has no legitimate use, this is not considered a breaking change.

## Recommendations

We recommend that the AnyTLS protocol remove the client metadata, or replace
it with an option that is not sent by default and can be customized by the
user; and that other client implementations also take action, to jointly stop
statistics collection and discrimination based on client metadata.
Loading