diff --git a/src/agent/tools/memory.rs b/src/agent/tools/memory.rs index 9abc712..5c673cb 100644 --- a/src/agent/tools/memory.rs +++ b/src/agent/tools/memory.rs @@ -245,11 +245,13 @@ fn output(args: &serde_json::Value) -> Result { anyhow::bail!("invalid output key: {}", key); } let value = get_str(args, "value")?; - let dir = std::env::var("POC_AGENT_OUTPUT_DIR") - .map_err(|_| anyhow::anyhow!("no output directory set"))?; - let path = std::path::Path::new(&dir).join(key); - std::fs::write(&path, value) - .with_context(|| format!("writing output {}", path.display()))?; + // Write to disk if output dir is set (subprocess agents), + // otherwise just return success (forked agents extract from AST) + if let Ok(dir) = std::env::var("POC_AGENT_OUTPUT_DIR") { + let path = std::path::Path::new(&dir).join(&key); + std::fs::write(&path, &value) + .with_context(|| format!("writing output {}", path.display()))?; + } Ok(format!("{}: {}", key, value)) }