Skip to content

Responses API retries reference non-persisted items (store=false) with no way to enable store in .NET SDK #357

@MMiooiMM

Description

@MMiooiMM

Summary

When using GitHub.Copilot.SDK for .NET (v0.1.21) with WireApi = "responses", the SDK may retry or continue a session using response item IDs (e.g. rs_...) even though the underlying request is sent with store=false.

Because the .NET SDK does not expose any way to set store=true, this results in unrecoverable 400 errors:

CAPIError: 400 Item with id 'rs_...' not found.
Items are not persisted when `store` is set to false.
Try again with `store` set to true, or remove this item from your input.

At the moment, there is no way for a .NET SDK user to resolve this, even though the error message explicitly instructs to set store=true.


Environment

  • GitHub.Copilot.SDK: 0.1.21
  • .NET: net8.0
  • Provider: Azure OpenAI
  • Wire API: responses
  • Model: gpt-5.2-codex
  • ReasoningEffort: xhigh

Root Cause

  • The Responses API requires store=true if response items are later referenced (e.g. via retry or continuation).
  • The .NET SDK MessageOptions does not expose a Store property:
public class MessageOptions
{
    public string Prompt { get; set; }
    public List<UserMessageDataAttachmentsItem>? Attachments { get; set; }
    public string? Mode { get; set; }
}
  • As a result, all requests are effectively sent with store=false.
  • The SDK/runtime still retries or chains requests using response item IDs (rs_...), which cannot be resolved.

This creates a hard failure with no user-level workaround.


Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions