{"record":{"id":"4b578d4e88cf8ed8","repo":"pbakaus/impeccable","slug":"could-not-check-for-updates-e","errorCode":null,"errorMessage":"Could not check for updates: {e}","messagePattern":"Could not check for updates: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/skills/src/commands.rs","lineNumber":169,"sourceCode":"        let bundle_dir = bundle::download_and_extract_bundle(&sys)?;\n        // JS: agentScope 'user' for a home-rooted checkout (d2a9efb9), so\n        // check() judges agent freshness against the user agent dirs.\n        let agent_scope = if sys.is_home_dir(&root) { Some(Scope::User) } else { None };\n        let up_to_date = bundle::is_up_to_date(&sys, &root, &providers, &bundle_dir, None, agent_scope)?;\n        util::rm_rf(&bundle_dir);\n        Ok(up_to_date)\n    })();\n    match result {\n        Ok(true) => {\n            let v = sys.get_skills_version(&root, None);\n            out(io, &format!(\"Skills are up to date{}.\", version_suffix(&v)));\n        }\n        Ok(false) => {\n            out(io, \"Updates available.\");\n            out(io, \"Run `npx impeccable update` to update.\");\n        }\n        Err(e) => {\n            err(io, &format!(\"Could not check for updates: {e}\"));\n            return Err(Flow::Exit(1));\n        }\n    }\n    Ok(())\n}\n\nfn version_suffix(v: &Option<String>) -> String {\n    match v {\n        Some(v) => format!(\" (v{v})\"),\n        None => String::new(),\n    }\n}\n\nfn to_version_suffix(v: &Option<String>) -> String {\n    match v {\n        Some(v) => format!(\" to v{v}\"),\n        None => String::new(),\n    }","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/skills/src/commands.rs#L151-L187","documentation":"The `skills check` command queries the update endpoint to determine whether a newer version is available. If that check itself fails (network error, bad response, parse failure), the error is surfaced as 'Could not check for updates: {e}' and the process exits 1 — distinguishing check failure from the 'updates available' result.","triggerScenarios":"Running `impeccable skills check` (also reached via token_after_prefix) when the update-check request errors: offline, DNS/proxy failure, request timeout, or a malformed/unexpected response body.","commonSituations":"No internet connection; firewall or proxy blocking the update endpoint; intermittent network dropping mid-request; update server returning an error page that fails to parse.","solutions":["Verify network access and retry `impeccable skills check` — transient failures resolve on retry.","Check proxy settings (HTTPS_PROXY) if on a restricted network.","Test the endpoint manually with curl to see the raw failure.","Skip the check and update directly: `npx impeccable update` (still needs network), or pin/ignore version checks when offline."],"exampleFix":"// before\n$ impeccable skills check\nCould not check for updates: error sending request\n// after (proxy configured)\n$ export HTTPS_PROXY=http://proxy:8080 && impeccable skills check\nYou are up to date.\n","handlingStrategy":"retry","validationCode":"curl -fsS -o /dev/null -w '%{http_code}' https://impeccable.style/ && echo ' reachable' || echo 'unreachable'","typeGuard":null,"tryCatchPattern":"try {\n  const res = await fetch(updateEndpoint);\n  if (!res.ok) throw new Error(`HTTP ${res.status}`);\n} catch (e) {\n  // transient network issue: retry with backoff or proceed without the check\n}","preventionTips":["Treat update-check failures as transient and retry once before investigating.","Set HTTPS_PROXY on restricted networks.","Run `npx impeccable update` directly when the check endpoint is flaky."],"tags":["network","update-check","http","version-check"],"backgroundTag":"network-request-failed","analyzedSha":"2bc2879276c1f321a53c4ca99d3371e411329b52","analyzedAt":"2026-09-08T04:51:14.109Z","contentChangedAt":"2026-09-08T04:51:14.109Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}