diff --git a/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts b/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts index e12ebdcadfe5..70f662ab9dc0 100644 --- a/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts +++ b/src/agents/session-tool-result-guard.tool-result-persist-hook.test.ts @@ -437,6 +437,8 @@ describe("tool_result_persist hook", () => { cwd: "/tmp/".concat("workspace/".repeat(400)), name: "oversized fallback command ".repeat(200), fullOutputPath: "/tmp/".concat("output/".repeat(400)), + spilledChars: 2_000_000, + spillTruncated: true, aggregated: "x".repeat(120_000), tail: "tail ".repeat(800), sessions: Array.from({ length: 10 }, (_, i) => ({ @@ -453,6 +455,8 @@ describe("tool_result_persist hook", () => { expect(details.persistedDetailsTruncated).toBe(true); expect(details.finalDetailsTruncated).toBe(true); expect(details.status?.token).toBe("***"); + expect(details.spilledChars).toBe(2_000_000); + expect(details.spillTruncated).toBe(true); expect(serialized).not.toContain(tokenValue); }); diff --git a/src/agents/session-tool-result-guard.ts b/src/agents/session-tool-result-guard.ts index 723a53a9aafa..e3bf6a728f96 100644 --- a/src/agents/session-tool-result-guard.ts +++ b/src/agents/session-tool-result-guard.ts @@ -344,7 +344,17 @@ function buildPersistedDetailsFallback( } if (src) { fallback.originalDetailKeys = redactedOriginalDetailKeys(src, redactionConfig); - for (const key of ["status", "sessionId", "pid", "exitCode", "exitSignal", "truncated"]) { + for (const key of [ + "status", + "sessionId", + "pid", + "exitCode", + "exitSignal", + "truncated", + "fullOutputPath", + "spilledChars", + "spillTruncated", + ]) { const field = src[key]; if (field !== undefined) { fallback[key] = redactPersistedSummaryField( @@ -470,6 +480,8 @@ function sanitizeToolResultDetailsForPersistence( "totalChars", "truncated", "fullOutputPath", + "spilledChars", + "spillTruncated", "truncation", ]) { const field = src[key];