diff --git a/ui/src/components/transcript/RunTranscriptView.test.tsx b/ui/src/components/transcript/RunTranscriptView.test.tsx
index 580d7a20..de01b634 100644
--- a/ui/src/components/transcript/RunTranscriptView.test.tsx
+++ b/ui/src/components/transcript/RunTranscriptView.test.tsx
@@ -57,4 +57,28 @@ describe("RunTranscriptView", () => {
expect(html).toContain("
first");
expect(html).toContain("second");
});
+
+ it("hides saved-session resume skip stderr from nice mode normalization", () => {
+ const entries: TranscriptEntry[] = [
+ {
+ kind: "stderr",
+ ts: "2026-03-12T00:00:00.000Z",
+ text: "[paperclip] Skipping saved session resume for task \"PAP-485\" because wake reason is issue_assigned.",
+ },
+ {
+ kind: "assistant",
+ ts: "2026-03-12T00:00:01.000Z",
+ text: "Working on the task.",
+ },
+ ];
+
+ const blocks = normalizeTranscript(entries, false);
+
+ expect(blocks).toHaveLength(1);
+ expect(blocks[0]).toMatchObject({
+ type: "message",
+ role: "assistant",
+ text: "Working on the task.",
+ });
+ });
});
diff --git a/ui/src/components/transcript/RunTranscriptView.tsx b/ui/src/components/transcript/RunTranscriptView.tsx
index 7bc24c97..e64d21d3 100644
--- a/ui/src/components/transcript/RunTranscriptView.tsx
+++ b/ui/src/components/transcript/RunTranscriptView.tsx
@@ -275,6 +275,11 @@ function parseSystemActivity(text: string): { activityId?: string; name: string;
};
}
+function shouldHideNiceModeStderr(text: string): boolean {
+ const normalized = compactWhitespace(text).toLowerCase();
+ return normalized.startsWith("[paperclip] skipping saved session resume");
+}
+
function groupCommandBlocks(blocks: TranscriptBlock[]): TranscriptBlock[] {
const grouped: TranscriptBlock[] = [];
let pending: Array["items"][number]> = [];
@@ -428,6 +433,9 @@ export function normalizeTranscript(entries: TranscriptEntry[], streaming: boole
}
if (entry.kind === "stderr") {
+ if (shouldHideNiceModeStderr(entry.text)) {
+ continue;
+ }
blocks.push({
type: "event",
ts: entry.ts,