pbakaus/impeccable · error

Could not check for updates: {e}

Error message

Could not check for updates: {e}

What it means

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.

Source

Thrown at crates/skills/src/commands.rs:169

        let bundle_dir = bundle::download_and_extract_bundle(&sys)?;
        // JS: agentScope 'user' for a home-rooted checkout (d2a9efb9), so
        // check() judges agent freshness against the user agent dirs.
        let agent_scope = if sys.is_home_dir(&root) { Some(Scope::User) } else { None };
        let up_to_date = bundle::is_up_to_date(&sys, &root, &providers, &bundle_dir, None, agent_scope)?;
        util::rm_rf(&bundle_dir);
        Ok(up_to_date)
    })();
    match result {
        Ok(true) => {
            let v = sys.get_skills_version(&root, None);
            out(io, &format!("Skills are up to date{}.", version_suffix(&v)));
        }
        Ok(false) => {
            out(io, "Updates available.");
            out(io, "Run `npx impeccable update` to update.");
        }
        Err(e) => {
            err(io, &format!("Could not check for updates: {e}"));
            return Err(Flow::Exit(1));
        }
    }
    Ok(())
}

fn version_suffix(v: &Option<String>) -> String {
    match v {
        Some(v) => format!(" (v{v})"),
        None => String::new(),
    }
}

fn to_version_suffix(v: &Option<String>) -> String {
    match v {
        Some(v) => format!(" to v{v}"),
        None => String::new(),
    }

View on GitHub (pinned to 2bc2879276)

Solutions

  1. Verify network access and retry `impeccable skills check` — transient failures resolve on retry.
  2. Check proxy settings (HTTPS_PROXY) if on a restricted network.
  3. Test the endpoint manually with curl to see the raw failure.
  4. Skip the check and update directly: `npx impeccable update` (still needs network), or pin/ignore version checks when offline.

Example fix

// before
$ impeccable skills check
Could not check for updates: error sending request
// after (proxy configured)
$ export HTTPS_PROXY=http://proxy:8080 && impeccable skills check
You are up to date.
Defensive patterns

Strategy: retry

Validate before calling

curl -fsS -o /dev/null -w '%{http_code}' https://impeccable.style/ && echo ' reachable' || echo 'unreachable'

Try / catch

try {
  const res = await fetch(updateEndpoint);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
} catch (e) {
  // transient network issue: retry with backoff or proceed without the check
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of pbakaus/impeccable@2bc2879276 (2026-09-08). Data as JSON: /api/errors/4b578d4e88cf8ed8. Report an issue: GitHub.