{"record":{"id":"5707e7d1fbb2b696","repo":"BigPizzaV3/CodexPlusPlus","slug":"gitmissing","errorCode":"GitMissing","errorMessage":"Cannot run remote git over SSH: {error}","messagePattern":"Cannot run remote git over SSH: (.+?)","errorType":"exception","errorClass":"UpstreamWorktreeError","httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/upstream_worktree/remote.rs","lineNumber":103,"sourceCode":"    RemoteGitCommand {\n        destination: ssh_destination(target),\n        port: target.port,\n        command: remote_command,\n    }\n}\n\nfn spawn_remote_git(command_spec: &RemoteGitCommand) -> Result<GitOutput, std::io::Error> {\n    let mut command = Command::new(\"ssh\");\n    command.arg(\"-o\").arg(\"BatchMode=yes\");\n    command.arg(\"-o\").arg(\"ConnectTimeout=8\");\n    if let Some(port) = command_spec.port {\n        command.arg(\"-p\").arg(port.to_string());\n    }\n    command\n        .arg(&command_spec.destination)\n        .arg(&command_spec.command);\n    let output = command.output().map_err(|error| {\n        std::io::Error::new(\n            error.kind(),\n            format!(\"Cannot run remote git over SSH: {error}\"),\n        )\n    })?;\n    Ok(GitOutput {\n        status_success: output.status.success(),\n        stdout: String::from_utf8_lossy(&output.stdout).trim().to_string(),\n        stderr: String::from_utf8_lossy(&output.stderr).trim().to_string(),\n    })\n}\n\nfn remote_git(project: &UpstreamRemoteProject, args: &[&str]) -> UpstreamWorktreeResult<GitOutput> {\n    let target = resolve_ssh_target_for_host_id(&project.host_id, None).map_err(|error| {\n        UpstreamWorktreeError::new(UpstreamWorktreeCode::GitMissing, error.to_string())\n    })?;\n    let command_spec = remote_git_command(project, &target, args);\n    let output = spawn_remote_git(&command_spec).map_err(|error| {\n        UpstreamWorktreeError::new(UpstreamWorktreeCode::GitMissing, error.to_string())","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/fb3ebd9a82383aedd8d098aa9ae3aef9426d13a4/crates/codex-plus-core/src/upstream_worktree/remote.rs#L85-L121","documentation":"Raised in spawn_remote_git when the `ssh` process used to run git on the remote worktree host fails to spawn or execute (e.g. ssh missing from PATH or I/O error starting it), so remote_git/remote_shell cannot run remote git commands.","triggerScenarios":"Thrown at crates/codex-plus-core/src/upstream_worktree/remote.rs:103 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install the OpenSSH client or add ssh to PATH","Verify SSH keys/agent auth and the host's port","Test `ssh <host> git --version` manually to reproduce"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fb3ebd9a82383aedd8d098aa9ae3aef9426d13a4","analyzedAt":"2026-08-17T11:35:12.031Z","contentChangedAt":"2026-08-17T11:35:12.031Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}