{"record":{"id":"9374f2a2d7ff8f70","repo":"zed-industries/zed","slug":"connection-timed-out","errorCode":null,"errorMessage":"connection timed out","messagePattern":"connection timed out","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/client/src/client.rs","lineNumber":1074,"sourceCode":"                if let Some(is_staff_tx) = is_staff_tx.take() {\n                    is_staff_tx.send(state.is_staff).log_err();\n                }\n            })\n            .detach();\n        });\n\n        let credentials = self.sign_in(try_provider, cx).await?;\n\n        self.connect_to_cloud(cx);\n\n        cx.update(move |cx| {\n            cx.spawn({\n                let client = self.clone();\n                async move |cx| {\n                    let is_staff = is_staff_rx.await?;\n                    if is_staff {\n                        match client.connect_with_credentials(credentials, cx).await {\n                            ConnectionResult::Timeout => Err(anyhow!(\"connection timed out\")),\n                            ConnectionResult::ConnectionReset => Err(anyhow!(\"connection reset\")),\n                            ConnectionResult::Result(result) => {\n                                result.context(\"client auth and connect\")\n                            }\n                        }\n                    } else {\n                        Ok(())\n                    }\n                }\n            })\n            .detach_and_log_err(cx);\n        });\n\n        Ok(())\n    }\n\n    pub async fn connect(\n        self: &Arc<Self>,","sourceCodeStart":1056,"sourceCodeEnd":1092,"githubUrl":"https://github.com/zed-industries/zed/blob/bc538def4545534201bbfcac4e95ac34ea6501b6/crates/client/src/client.rs#L1056-L1092","documentation":"After a successful staff sign-in, Zed staff users additionally call connect_with_credentials to reach the collab server. This error means that connection attempt timed out — the server was unreachable within the connection timeout window. The task is detached and logged, so it typically surfaces in logs rather than the UI.","triggerScenarios":"is_staff is true and ConnectionResult::Timeout is returned from connect_with_credentials: the collab endpoint (zed.dev RPC over TCP/TLS) is unreachable due to firewall, DNS, proxy, or outage.","commonSituations":"Corporate networks blocking the collab port; VPN split-tunnel misrouting; zed.dev infrastructure incidents; local packet filters dropping long handshakes.","solutions":["Verify network access to the collab server (try `curl -I https://zed.dev` and check DNS)","Disable or configure VPN/proxy so zed.dev is reachable, then restart Zed","Check https://status.zed.dev for an ongoing incident","Retry after confirming connectivity; the task re-runs on next sign-in"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// preflight connectivity before the staff connect path\ncx.background_spawn(async move {\n    if tcp::connect(\"zed.dev:443\", chrono::Duration::seconds(5)).await.is_err() {\n        log::warn!(\"collab server unreachable; skipping staff connect\");\n    }\n})","typeGuard":null,"tryCatchPattern":"match client.connect_with_credentials(credentials, cx).await {\n    ConnectionResult::Timeout | ConnectionResult::ConnectionReset => {\n        // backoff and retry: network-level failure, not an auth failure\n        cx.background_executor().timer(Duration::from_secs(5)).await;\n    }\n    ConnectionResult::Result(result) => result?,\n}","preventionTips":["Verify outbound access to zed.dev:443 from restricted networks","Treat Timeout/ConnectionReset distinctly from auth errors when logging","Detach-and-log these tasks so UI does not block on staff connect"],"tags":["network","timeout","staff","collab"],"backgroundTag":null,"analyzedSha":"bc538def4545534201bbfcac4e95ac34ea6501b6","analyzedAt":"2026-08-16T07:30:46.435Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}