-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Bug]: iOS app fails to connect over Tailscale CGNAT (100.x.x.x) — wss:// required but WebSocket upgrade silently dropped #98062
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.ClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.Good issue quality with a plausible reproduction path needing some confirmation.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Type
Fields
Priority
None yet
Environment
Summary
The iOS app cannot connect to a gateway over Tailscale CGNAT addresses (
100.x.x.x) or Tailscale Serve (wss://hostname.ts.net). The app requireswss://for non-LAN addresses (correct), but everywss://path we attempted silently drops the WebSocket upgrade — HTTP works but the WebSocket handshake never completes.Steps to reproduce
gateway.bind=tailnet(Tailscale IP:100.125.45.28)100.75.182.44, ping round-trip confirmed working)https://100.125.45.28:18789/healthreturns{"ok":true}✅100.125.45.28, Port:18789, TLS: ON → Connect ManualWaiting for gatewayindefinitely. No connection attempt reaches gateway logs.Tailscale Serve path (also tried)
gateway.bind=loopback,gateway.tailscale.mode=servetailscale serve --bg http://localhost:18789→https://uday-one-1.tail5d3585.ts.netliveopenclaw qr --json→wss://uday-one-1.tail5d3585.ts.net✅https://uday-one-1.tail5d3585.ts.net/health→{"ok":true}✅HTTP/2 200instead of101 Switching Protocols— Tailscale Serve silently drops WebSocket upgradesReconnecting...indefinitely. Zero connection attempts in gateway logs.Native gateway TLS path (also tried)
gateway.bind=tailnet,gateway.tls.enabled=true, cert/key from Caddy local CAhttps://100.125.45.28:18789/health→ 200 ✅ from iPhone Safari on 5GVerify gateway TLS fingerprintscreen but fingerprint prompt never appeared for user to confirmWhat does work
ws://192.168.0.117:18789,gateway.bind=lan) on first attemptopenclaw qr --jsoncorrectly advertiseswss://endpoint when Tailscale Serve is activeExpected behaviour
iOS app should be able to connect to gateway over Tailscale (either CGNAT direct or via Tailscale Serve) using
wss://. HTTP reachability is confirmed — the WebSocket upgrade is the specific failure point.Related issues
Notes
The iOS app README says
super-alpha and internal-use only— understood. Filing this to track the Tailscale remote pairing gap now that the app is publicly released. The LAN path works cleanly; the remote/Tailscale path needs attention.