{"record":{"id":"8ca91c46f24e6b6d","repo":"pbakaus/impeccable","slug":"download-failed-e","errorCode":null,"errorMessage":"Download failed: {e}","messagePattern":"Download failed: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/skills/src/commands.rs","lineNumber":683,"sourceCode":"                err(io, &format!(\"Install check failed: {e}\"));\n                Err(Flow::Exit(1))\n            }\n        };\n    }\n\n    if targets.is_empty() {\n        err(io, \"Could not determine a target harness folder.\");\n        err(io, \"Pass one explicitly, e.g. --providers=.claude,.cursor\");\n        return Err(Flow::Exit(1));\n    }\n\n    let want_hooks = install_hooks && decide_hook_install(&mut prompt, io, &hook_root, &targets, yes)?;\n\n    out(io, \"\\nDownloading impeccable skills...\");\n    let bundle_dir = match bundle::download_and_extract_bundle(&sys) {\n        Ok(d) => d,\n        Err(e) => {\n            err(io, &format!(\"Download failed: {e}\"));\n            return Err(Flow::Exit(1));\n        }\n    };\n\n    sys.migrate_unprefix_impeccable(&install_root, scope_opt);\n\n    let outcome: Result<(Vec<String>, Vec<bundle::AgentResult>, Vec<&'static str>), String> = (|| {\n        let written = bundle::copy_provider_skills(&sys, &bundle_dir, &install_root, &targets, scope_opt)?;\n        let agents = bundle::copy_provider_agents(&sys, &bundle_dir, &install_root, &targets, scope_opt)?;\n        bundle::copy_provider_commands(&sys, &bundle_dir, &install_root, &targets, scope_opt);\n        let hooks = if want_hooks {\n            copy_provider_hooks(&sys, &bundle_dir, &hook_root, &targets, force, Some(&install_root))?\n        } else {\n            Vec::new()\n        };\n        Ok((written, agents, hooks))\n    })();\n    let (written, agent_results, hook_targets) = match outcome {","sourceCodeStart":665,"sourceCodeEnd":701,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/skills/src/commands.rs#L665-L701","documentation":"During `install`, the tool downloads the skills bundle (`bundle::download_and_extract_bundle`). Any network, HTTP, or extraction failure is surfaced as 'Download failed: {e}' and install exits 1. The temp bundle directory is not retained on failure.","triggerScenarios":"`install` when the bundle download fails: no internet connection, DNS failure, GitHub/release-host 4xx/5xx response, proxy blocking the request, or the downloaded archive failing to extract (corrupt/partial download, disk full).","commonSituations":"Offline or corporate-proxy environments; the release asset URL changed or the release was removed; transient network blips; antivirus or disk-permission issues blocking extraction.","solutions":["Check network connectivity and any proxy settings, then rerun install.","Retry later if the release host is temporarily down (429/5xx).","Verify the pinned bundle URL/release still exists; update the CLI if the release moved.","Check free disk space and write permissions in the temp directory."],"exampleFix":"// before (offline machine)\nimpeccable install  # Download failed: error sending request\n// after\n# restore connectivity or configure proxy, then\nimpeccable install --providers=.claude","handlingStrategy":"retry","validationCode":"curl -fsSI https://github.com >/dev/null || { echo \"no network\"; exit 1; }","typeGuard":null,"tryCatchPattern":"for i in 1 2 3; do impeccable install --providers=.claude && break; sleep $((i*5)); done","preventionTips":["Check connectivity/proxy settings before running install in CI.","Pin and verify the CLI version matches a still-published release.","Ensure adequate temp disk space on install machines."],"tags":["network","download","install","cli"],"backgroundTag":"http-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"}