diff --git a/open-sse/services/combo.ts b/open-sse/services/combo.ts index 8dc2e99668..a8963b1a4d 100644 --- a/open-sse/services/combo.ts +++ b/open-sse/services/combo.ts @@ -472,7 +472,7 @@ export async function handleComboChat({ // SDKs close the connection on finish_reason, so anything sent after // that marker is silently dropped. if (!res.body) return res; - const tagContent = `\n${modelStr}\n`; + const tagContent = `\\n${modelStr}\\n`; const encoder = new TextEncoder(); const decoder = new TextDecoder(); let tagInjected = false; diff --git a/open-sse/translator/helpers/responsesApiHelper.ts b/open-sse/translator/helpers/responsesApiHelper.ts index 0d65111ebf..01967f6fd0 100644 --- a/open-sse/translator/helpers/responsesApiHelper.ts +++ b/open-sse/translator/helpers/responsesApiHelper.ts @@ -93,10 +93,11 @@ export function convertResponsesApiFormat(body) { } // Cleanup Responses API specific fields + // Note: prompt_cache_key is intentionally preserved — it is used by Codex and other + // providers as a cache-affinity signal. Stripping it breaks prompt caching (#517). delete result.input; delete result.instructions; delete result.include; - delete result.prompt_cache_key; delete result.store; delete result.reasoning; diff --git a/open-sse/translator/request/openai-responses.ts b/open-sse/translator/request/openai-responses.ts index 239c547562..11fcbe86aa 100644 --- a/open-sse/translator/request/openai-responses.ts +++ b/open-sse/translator/request/openai-responses.ts @@ -227,10 +227,11 @@ export function openaiResponsesToOpenAIRequest( }); // Cleanup Responses API specific fields + // Note: prompt_cache_key is intentionally preserved — it is used by Codex and other + // providers as a cache-affinity signal. Stripping it breaks prompt caching (#517). delete result.input; delete result.instructions; delete result.include; - delete result.prompt_cache_key; delete result.store; delete result.reasoning;