{"record":{"id":"5517751d7a09f46f","repo":"Hmbown/CodeWhale","slug":"dsh-exited-with-status-code","errorCode":null,"errorMessage":"dsh exited with status {code}","messagePattern":"dsh exited with status (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/tui/src/integrations/cli.rs","lineNumber":379,"sourceCode":"                record.overlay_path.display(),\n                record.overlay_sha256\n            );\n            Ok(())\n        }\n        DshIntegrationCommand::Launch {\n            profile,\n            dry_run,\n            args,\n        } => {\n            let (_paths, report) = status_report(config, workspace, false)?;\n            let spec = dsh::launch_spec(&report, profile.as_deref(), &args, workspace)?;\n            println!(\"{RELATIONSHIP_LABEL}: {}\", spec.display());\n            if dry_run {\n                return Ok(());\n            }\n            let code = dsh::spawn_launch(&spec)?;\n            if code != 0 {\n                anyhow::bail!(\"dsh exited with status {code}\");\n            }\n            Ok(())\n        }\n        DshIntegrationCommand::Disable => {\n            let paths = DshPaths::from_process()?;\n            let record = dsh::set_disabled(&paths, true)?;\n            println!(\n                \"disabled: overlay kept at {}; launches refused\",\n                record.overlay_path.display()\n            );\n            Ok(())\n        }\n        DshIntegrationCommand::Enable => {\n            let paths = DshPaths::from_process()?;\n            let record = dsh::set_disabled(&paths, false)?;\n            println!(\"enabled: {}\", record.overlay_path.display());\n            Ok(())\n        }","sourceCodeStart":361,"sourceCodeEnd":397,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/73e0f67d83c59909b571efdfc88c4bc28c309cb1/crates/tui/src/integrations/cli.rs#L361-L397","documentation":"Thrown by `run_dsh` when the spawned `dsh` process (via `dsh::spawn_launch`) terminates with a non-zero exit code. The integration surfaces the child's status as an error rather than swallowing a failed harness launch.","triggerScenarios":"`spawn_launch` returns a non-zero exit status from the dsh binary during a launch-triggering subcommand (and dry_run is false).","commonSituations":"The dsh CLI crashed or rejected its configuration at startup; the plugin bundle is broken or incompatible; the overlay points at a missing binary; npm-installed dsh fails at runtime.","solutions":["Run `dsh status` / re-run the command to inspect the underlying dsh error output","Reinstall or update dsh (`npm i -g @deepseek-ai/dsh`) if the binary is broken","Run `dsh update` to regenerate a possibly stale overlay, then retry"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// preflight: confirm dsh runs\nlet status = std::process::Command::new(\"dsh\").arg(\"--version\").status()?;\nif !status.success() { /* fix dsh install before launching */ }","typeGuard":null,"tryCatchPattern":"match spawn_launch(&spec) {\n    Ok(0) => /* ok */,\n    Ok(code) => /* inspect dsh stderr/logs for exit status {code} */,\n    Err(e) => return Err(e.into()),\n}","preventionTips":["Capture dsh stderr when launching so the real failure is visible","Keep dsh and the overlay in sync via `dsh update` after config changes","Test `dsh` standalone before invoking through the Codewhale integration"],"tags":["cli","process","exit-code","integration"],"backgroundTag":"command-not-found","analyzedSha":"73e0f67d83c59909b571efdfc88c4bc28c309cb1","analyzedAt":"2026-09-22T01:30:00.501Z","contentChangedAt":"2026-09-22T01:30:00.501Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}