{"record":{"id":"af227d82f6b997dd","repo":"jdx/mise","slug":"bootstrap-from-repository-failed-with-status","errorCode":null,"errorMessage":"bootstrap from repository failed with {status}","messagePattern":"bootstrap from repository failed with (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/bootstrap.rs","lineNumber":1993,"sourceCode":"\n                if let Some(file_name) = crate::env::MISE_GLOBAL_CONFIG_FILE\n                    .as_deref()\n                    .and_then(Path::file_name)\n                {\n                    command.env(\"MISE_GLOBAL_CONFIG_FILE\", checkout.join(file_name));\n                }\n            }\n        }\n\n        let mut trusted = std::env::split_paths(\n            &std::env::var_os(\"MISE_TRUSTED_CONFIG_PATHS\").unwrap_or_default(),\n        )\n        .collect::<Vec<_>>();\n        trusted.push(checkout);\n        command.env(\"MISE_TRUSTED_CONFIG_PATHS\", std::env::join_paths(trusted)?);\n        let status = command.status()?;\n        if !status.success() {\n            bail!(\"bootstrap from repository failed with {status}\");\n        }\n        Ok(())\n    }\n\n    async fn run_hooks(\n        &self,\n        config: &Config,\n        hooks: &[hooks::BootstrapHook],\n        phase: BootstrapHookPhase,\n    ) -> Result<()> {\n        // Recorded before the hooks run: a hook that fails may still have\n        // changed the machine.\n        run_bootstrap_hooks(config, hooks, phase, self.dry_run).await\n    }\n\n    fn skip_parts(&self) -> HashSet<BootstrapPart> {\n        if self.only.is_empty() {\n            self.skip.iter().copied().collect()","sourceCodeStart":1975,"sourceCodeEnd":2011,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/cli/bootstrap.rs#L1975-L2011","documentation":"mise's `mise bootstrap` command re-executes itself (or another bootstrap binary) as a child process to run repository hooks with a prepared environment. This error is thrown when that spawned child process exits with a non-zero status code, meaning the inner bootstrap run failed. It propagates the child's exit status into the parent's error message.","triggerScenarios":"Running `mise bootstrap` from a checkout: `command.status()` returns a non-success ExitStatus from the re-invoked bootstrap process, so `bail!` fires in the bootstrap-from-repository path.","commonSituations":"The inner mise run hits a trust error, a failing hook script, a bad config file, or any of the usual bootstrap failures — the parent just surfaces the exit code. Also occurs when git/hooks fail inside the child (e.g. untrusted checkout paths).","solutions":["Rerun the bootstrap command directly (without the wrapper) to see the real underlying error from the child process","Check that the checkout directory is trusted (`mise trust <path>`) since MISE_TRUSTED_CONFIG_PATHS is set to include it","Inspect hook scripts and repo config for failures that would make the child exit non-zero","Set MISE_DEBUG=1 to see the child's full output"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"mise bootstrap --dry-run # or run the inner bootstrap step directly first","typeGuard":null,"tryCatchPattern":"match result { Err(e) if e.contains(\"bootstrap from repository failed\") => inspect child logs, Ok(_) => continue }","preventionTips":["Trust the checkout directory before bootstrapping","Test hooks locally before adding them to the repo","Run bootstrap with MISE_DEBUG=1 to capture child output"],"tags":["cli","process","bootstrap","subprocess"],"backgroundTag":"git-command-failed","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}