What happened
On a Windows machine with Tailscale installed for unrelated work, T3 Code displayed both “Local network” and “Tailscale IP” as pairing endpoint options.
Selecting either option did not change the displayed address or QR code, even before scanning or syncing with the phone. Both options used the machine’s Tailscale 100.x address.
The phone and computer were connected to the same Wi-Fi, but the phone was intentionally not connected to the work tailnet. Pairing therefore timed out. Manually replacing the advertised address with the computer’s Wi-Fi LAN address made the mobile connection work immediately.
Diagnosis
The T3 server was healthy, listening on 0.0.0.0:3773, and responding correctly through both the Wi-Fi and Tailscale addresses from the host machine.
The desktop core endpoint selection accepts every non-internal IPv4 address except loopback and link-local addresses, then returns the first match:
On this Windows machine, the Tailscale adapter was enumerated before Wi-Fi. The Tailscale 100.x address therefore became the desktop core advertisedHost and was incorrectly emitted as:
label: Local network
reachability: lan
isDefault: true
The Tailscale endpoint provider independently detects the same 100.x address and emits it as “Tailscale IP”:
Consequently, the endpoint selector contains two different options and preference keys, but both resolve to the same URL. Switching between them correctly changes the logical selection while leaving the displayed address and QR code unchanged. The actual Wi-Fi address is absent from the endpoint list.
The current regression test constructs the interfaces with LAN first and Tailscale second, so it does not cover Windows returning the Tailscale adapter first:
The same implementation is still present on main.
Steps to reproduce
- On Windows, connect the computer to Wi-Fi.
- Install and connect Tailscale on the computer.
- Ensure Windows enumerates the Tailscale adapter before Wi-Fi.
- Leave the phone connected to the same Wi-Fi but outside the computer’s tailnet.
- Start T3 Code Desktop.
- Open Settings → Connections and enable Network access.
- Expand the available endpoint list.
- Select “Local network” and note the displayed address and QR code.
- Select “Tailscale IP”.
- Observe that the address and QR code remain unchanged because both options contain the same Tailscale
100.x URL.
- Attempt to pair the phone and observe the discovery timeout.
- Replace the host manually with the computer’s Wi-Fi
192.168.x.x address.
- Observe that the connection succeeds.
Version
0.0.34-nightly.20260819.1132
Commit: 36f4314ab768dca3fc20af6ac25e7011b4b0447f
Environment
Windows x64 10.0.26200
Node.js 24.19.0
T3 Code Desktop Nightly
Tailscale connected on the computer
Android phone on the same Wi-Fi, intentionally outside the work tailnet
Evidence
Listener:
LocalAddress: 0.0.0.0
LocalPort: 3773
Detected IPv4 interfaces:
Tailscale: <tailnet-ip>
Wi-Fi: <lan-ip>
vEthernet (WSL): <wsl-ip>
Advertised endpoint selected by Desktop:
Local network -> http://<tailnet-ip>:3773
Endpoint options shown in the UI:
Local network -> http://<tailnet-ip>:3773
Tailscale IP -> http://<tailnet-ip>:3773
Observed UI behavior:
Switching between Local network and Tailscale IP does not change
the displayed address or QR code.
Host probes:
GET http://<tailnet-ip>:3773/.well-known/t3/environment -> 200 application/json
GET http://<lan-ip>:3773/.well-known/t3/environment -> 200 application/json
Mobile result:
Generated endpoint -> timeout
Manually substituted Wi-Fi endpoint -> connection succeeds
Related issues
#5233 requests ordered fallback endpoints such as LAN plus Tailscale. This report is distinct: the desktop misclassifies the Tailscale IP as the LAN endpoint, causing both selector options to contain the same URL while omitting the real LAN address.
No exact duplicate was found.
Fix applied or workaround
Manually replace the generated Tailscale host with the computer’s Wi-Fi LAN address in the mobile environment configuration.
A product fix could:
- Exclude Tailscale’s
100.64.0.0/10 range from the core LAN endpoint selection.
- Keep Tailscale addresses exclusively in the Tailscale endpoint provider.
- Consider excluding or separately classifying other virtual adapters such as WSL.
- Add a regression test where the Tailscale interface appears before the Wi-Fi interface.
- Ensure the actual Wi-Fi address remains available in the endpoint selector.
Filed by
Codex (GPT-5.6 Sol) via t3 triage
What happened
On a Windows machine with Tailscale installed for unrelated work, T3 Code displayed both “Local network” and “Tailscale IP” as pairing endpoint options.
Selecting either option did not change the displayed address or QR code, even before scanning or syncing with the phone. Both options used the machine’s Tailscale
100.xaddress.The phone and computer were connected to the same Wi-Fi, but the phone was intentionally not connected to the work tailnet. Pairing therefore timed out. Manually replacing the advertised address with the computer’s Wi-Fi LAN address made the mobile connection work immediately.
Diagnosis
The T3 server was healthy, listening on
0.0.0.0:3773, and responding correctly through both the Wi-Fi and Tailscale addresses from the host machine.The desktop core endpoint selection accepts every non-internal IPv4 address except loopback and link-local addresses, then returns the first match:
isUsableLanIpv4AddressresolveLanAdvertisedHostOn this Windows machine, the Tailscale adapter was enumerated before Wi-Fi. The Tailscale
100.xaddress therefore became the desktop coreadvertisedHostand was incorrectly emitted as:The Tailscale endpoint provider independently detects the same
100.xaddress and emits it as “Tailscale IP”:tailscaleEndpointProvider.tsConsequently, the endpoint selector contains two different options and preference keys, but both resolve to the same URL. Switching between them correctly changes the logical selection while leaving the displayed address and QR code unchanged. The actual Wi-Fi address is absent from the endpoint list.
The current regression test constructs the interfaces with LAN first and Tailscale second, so it does not cover Windows returning the Tailscale adapter first:
DesktopServerExposure.test.tsThe same implementation is still present on
main.Steps to reproduce
100.xURL.192.168.x.xaddress.Version
Environment
Evidence
Related issues
#5233 requests ordered fallback endpoints such as LAN plus Tailscale. This report is distinct: the desktop misclassifies the Tailscale IP as the LAN endpoint, causing both selector options to contain the same URL while omitting the real LAN address.
No exact duplicate was found.
Fix applied or workaround
Manually replace the generated Tailscale host with the computer’s Wi-Fi LAN address in the mobile environment configuration.
A product fix could:
100.64.0.0/10range from the core LAN endpoint selection.Filed by