From 6dc300fcf82a20d3ef58380e2a1b435a23ae2524 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Mon, 9 Mar 2026 17:07:16 -0400 Subject: [PATCH] poc-hook: call memory-search internally on UserPromptSubmit Spawn memory-search --hook as a subprocess, piping the hook input JSON through stdin and printing its stdout. This ensures memory context injection goes through the same hook whose output Claude Code reliably persists, fixing the issue where memory-search as a separate hook had its output silently dropped. Co-Authored-By: ProofOfConcept --- poc-memory/src/bin/poc-hook.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/poc-memory/src/bin/poc-hook.rs b/poc-memory/src/bin/poc-hook.rs index 2308eb9..52cfa58 100644 --- a/poc-memory/src/bin/poc-hook.rs +++ b/poc-memory/src/bin/poc-hook.rs @@ -151,6 +151,28 @@ fn main() { "UserPromptSubmit" => { signal_user(); check_notifications(); + + // Run memory-search, passing through the hook input it needs + if let Ok(output) = Command::new("memory-search") + .arg("--hook") + .stdin(std::process::Stdio::piped()) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::null()) + .spawn() + .and_then(|mut child| { + if let Some(ref mut stdin) = child.stdin { + use std::io::Write; + let _ = stdin.write_all(input.as_bytes()); + } + child.wait_with_output() + }) + { + let text = String::from_utf8_lossy(&output.stdout); + if !text.is_empty() { + print!("{text}"); + } + } + if let Some(ref t) = transcript { check_context(t, false); }