diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index 8de6797989..b91eebd06c 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -454,6 +454,7 @@ dependencies = [
"tracing",
"ureq",
"uuid",
+ "windows-sys 0.61.2",
"zip",
]
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index a28190cd1f..c7a704fd50 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -70,6 +70,12 @@ tokio-tungstenite = { version = "0.24", default-features = false, features = ["c
[target.'cfg(windows)'.dependencies]
zip = { version = "2", default-features = false, features = ["deflate"], optional = true }
+windows-sys = { version = "0.61", default-features = false, features = [
+ "Win32_Foundation",
+ "Win32_System_Diagnostics_ToolHelp",
+ "Win32_System_JobObjects",
+ "Win32_System_Threading",
+] }
[dev-dependencies]
rusqlite = { version = "0.35", features = ["bundled"] }
@@ -105,6 +111,13 @@ required-features = ["test-support"]
test = false
bench = false
+[[bin]]
+name = "copilot-host-crash-fixture"
+path = "tests/fixtures/host_crash_fixture.rs"
+required-features = ["test-support"]
+test = false
+bench = false
+
[build-dependencies]
base64 = "0.22"
dirs = "5"
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index 1c20fd1837..32d44ddc0f 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -33,6 +33,7 @@ pub mod hooks;
mod jsonrpc;
/// Permission-policy helpers that produce a [`handler::PermissionHandler`].
pub mod permission;
+mod process_tree;
/// BYOK bearer-token provider callbacks.
pub mod provider_token;
mod provider_token_dispatch;
@@ -1066,6 +1067,7 @@ impl std::fmt::Debug for Client {
struct ClientInner {
child: parking_lot::Mutex