diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index b16976047f..63cc6dd801 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -728,14 +728,19 @@ export namespace SessionPrompt { system.push(STRUCTURED_OUTPUT_SYSTEM_PROMPT) } - // altimate_change start - trace system prompt - Tracer.active?.logSpan({ - name: "system-prompt", - startTime: Date.now(), - endTime: Date.now(), - input: { agent: agent.name, step }, - output: { parts: system.length, content: system.join("\n\n") }, - }) + // altimate_change start - trace system prompt once per loop() call. + // The system prompt is functionally identical across steps within a single + // loop() invocation (same agent, same environment). Agent switches re-enter + // loop() with step reset to 0, so each agent's prompt is traced separately. + if (step === 1) { + Tracer.active?.logSpan({ + name: "system-prompt", + startTime: Date.now(), + endTime: Date.now(), + input: { agent: agent.name, step }, + output: { parts: system.length, content: system.join("\n\n") }, + }) + } // altimate_change end const result = await processor.process({