github / github/copilot-sdk

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

Đang mở
#357 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug sdk/dotnet
Ngôn ngữ chính
Java
Star
10.5k
Fork
1.5k
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
128

Mô tả

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

---

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.