github / github/copilot-sdk

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

Abierto
#357 1 comentario 0 reacciones 0 asignados Ver en GitHub
bug sdk/dotnet
Lenguaje dominante
Java
Estrellas
10.5k
Forks
1.5k
Merge medio
1 d 11 h
PR fusionados (30 d)
127

Descripción

### 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**:

```csharp
public class MessageOptions
{
public string Prompt { get; set; }
public List? 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**.

---

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.