diff --git a/src/matrix_harness.zig b/src/matrix_harness.zig index 3cb7eca..782b1e4 100644 --- a/src/matrix_harness.zig +++ b/src/matrix_harness.zig @@ -360,7 +360,9 @@ fn onProgressEvent(ctx: ?*anyopaque, ev: letta.Event) void { p.ret(out); }, .chunk => |c| { - defer p.alloc.free(c); + // NOTE: chunk/step payloads are BORROWED — handleLine frees them + // via defer (same contract as the overlay UI). Freeing here too + // is a double free (heap corruption, silently lost reply tails). _ = p.replyChunk(c, false); }, .step => {}, // legacy pre-formatted lines: superseded by structured