diff --git a/src/shared/providers/definitions/models/openai-responses.test.ts b/src/shared/providers/definitions/models/openai-responses.test.ts index 3a68d66019..276539f641 100644 --- a/src/shared/providers/definitions/models/openai-responses.test.ts +++ b/src/shared/providers/definitions/models/openai-responses.test.ts @@ -55,10 +55,11 @@ function createModel(overrides: Partial { - it('forces store=false for stateless responses while preserving user OpenAI provider options', () => { + it('forces store=false and uses the stable session ID as the prompt cache key for stateless responses', () => { const openaiResponses = createModel({ forceStatelessResponses: true }) const settings = openaiResponses.exposeCallSettings({ + sessionId: 'session-123', providerOptions: { openai: { reasoningEffort: 'high', @@ -69,6 +70,19 @@ describe('OpenAIResponses call settings', () => { expect(settings.providerOptions).toEqual({ openai: { reasoningEffort: 'high', + promptCacheKey: 'session-123', + store: false, + }, + }) + }) + + it('does not inject an empty prompt cache key when a stateless request has no session ID', () => { + const openaiResponses = createModel({ forceStatelessResponses: true }) + + const settings = openaiResponses.exposeCallSettings() + + expect(settings.providerOptions).toEqual({ + openai: { store: false, }, }) diff --git a/src/shared/providers/definitions/models/openai-responses.ts b/src/shared/providers/definitions/models/openai-responses.ts index 41cbf5c2a1..8c6a8d84c9 100644 --- a/src/shared/providers/definitions/models/openai-responses.ts +++ b/src/shared/providers/definitions/models/openai-responses.ts @@ -42,6 +42,7 @@ export default class OpenAIResponses extends AbstractAISDKModel { protected getCallSettings(options: CallChatCompletionOptions) { const openaiProviderOptions = options.providerOptions?.openai + const promptCacheKey = this.options.forceStatelessResponses ? options.sessionId : undefined return { temperature: this.options.temperature, @@ -54,6 +55,7 @@ export default class OpenAIResponses extends AbstractAISDKModel { openai: { ...openaiProviderOptions, ...(this.options.forceStatelessResponses ? { store: false } : {}), + ...(promptCacheKey ? { promptCacheKey } : {}), }, } : undefined,