From 99d6df155d3df9ef424b0f2a22f40d14b2ba0208 Mon Sep 17 00:00:00 2001 From: Frank Lin Date: Sun, 28 Jun 2026 23:37:50 +1000 Subject: [PATCH] THrow when transcript exceeds a certain size --- .../ClaudeCodeBehaviour/ClaudeCodeCliRunner.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/Calamari.AiAgent/ClaudeCodeBehaviour/ClaudeCodeCliRunner.cs b/source/Calamari.AiAgent/ClaudeCodeBehaviour/ClaudeCodeCliRunner.cs index 97f2ae8aa..e5b77f4ab 100644 --- a/source/Calamari.AiAgent/ClaudeCodeBehaviour/ClaudeCodeCliRunner.cs +++ b/source/Calamari.AiAgent/ClaudeCodeBehaviour/ClaudeCodeCliRunner.cs @@ -60,6 +60,8 @@ public async Task RunAsync(ClaudeCommandArgsBuilder argsBuilder, if (File.Exists(verboseLogPath)) { + ThrowIfTranscriptTooBig(verboseLogPath); + log.WriteServiceMessage(new ServiceMessage(ClaudeCodeServiceMessages.Transcript.Name, new Dictionary() { {ClaudeCodeServiceMessages.Transcript.TranscriptAttribute, await File.ReadAllTextAsync(verboseLogPath, cancellationToken)}, @@ -71,6 +73,14 @@ public async Task RunAsync(ClaudeCommandArgsBuilder argsBuilder, return responseBuilder.ToString(); } + static void ThrowIfTranscriptTooBig(string verboseLogPath) + { + const long maxTranscriptSize = 1L * 1024 * 1024 * 1024; + var transcriptSize = new FileInfo(verboseLogPath).Length; + if (transcriptSize > maxTranscriptSize) + throw new InvalidOperationException($"Claude agent transcript log is too large ({transcriptSize:N0} bytes). The 1 GB limit was exceeded."); + } + async Task ProcessError(Process process) { var buffer = new char[1024];