{"record":{"id":"57664e2111873883","repo":"pbakaus/impeccable","slug":"install-failed-e","errorCode":null,"errorMessage":"Install failed: {e}","messagePattern":"Install failed: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/skills/src/commands.rs","lineNumber":705,"sourceCode":"\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 {\n        Ok(v) => v,\n        Err(e) => {\n            util::rm_rf(&bundle_dir);\n            err(io, &format!(\"Install failed: {e}\"));\n            return Err(Flow::Exit(1));\n        }\n    };\n    util::rm_rf(&bundle_dir);\n\n    if written.is_empty() {\n        err(io, &format!(\"Nothing was installed: the bundle had no variants for {}.\", targets.join(\", \")));\n        return Err(Flow::Exit(1));\n    }\n    out(io, &format!(\n        \"Installed impeccable into: {} ({})\",\n        targets.join(\", \"),\n        if scope == Scope::User { \"global\" } else { \"project\" }\n    ));\n    install_engine_binaries(&sys, io, &written);\n    bundle::report_provider_agents(&sys, io, &agent_results);\n    if !hook_targets.is_empty() {\n        out(io, &format!(\"Installed hooks into: {}\", hook_targets.join(\", \")));","sourceCodeStart":687,"sourceCodeEnd":723,"githubUrl":"https://github.com/pbakaus/impeccable/blob/2bc2879276c1f321a53c4ca99d3371e411329b52/crates/skills/src/commands.rs#L687-L723","documentation":"After downloading the bundle, `install` writes the skill variants, agents, and hooks into the target folders. If that install step returns an error, the message 'Install failed: {e}' is printed, the downloaded bundle temp dir is cleaned up with rm_rf, and the process exits 1.","triggerScenarios":"`install` when the write/extract-to-target step fails: unwritable target harness folder, missing bundle files for the requested providers, hook-root creation failure, or any error bubbling out of the install closure.","commonSituations":"Read-only project directories; permission issues in the user home when scope=user; partially corrupted bundle contents; filesystem errors (disk full, path too long); existing conflicting files that cannot be overwritten.","solutions":["Check write permissions on the target folder (e.g. .claude/) and retry.","Free disk space / resolve filesystem errors reported in the inner error `{e}`.","Delete conflicting or partially installed files and rerun install.","Retry the install; the bundle temp dir is cleaned automatically so state is not stale."],"exampleFix":"// before\n$ impeccable install\nInstall failed: Permission denied (os error 13) writing .claude/skills\n// after\n$ chmod -R u+w .claude && impeccable install --providers=.claude","handlingStrategy":"validation","validationCode":"TARGET=.claude\n[ -w \"$TARGET\" ] || { echo \"$TARGET not writable\"; exit 1; }","typeGuard":null,"tryCatchPattern":"impeccable install --providers=.claude || { echo \"install failed: $?\"; exit 1; }","preventionTips":["Verify write permissions on target folders and home dir before installing.","Run install as a user with access to the project directory (not root-created files).","Watch disk usage on machines that install frequently."],"tags":["filesystem","permissions","install","cli"],"backgroundTag":"file-write-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"}