github / github/copilot-sdk

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

オープン
#357 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug sdk/dotnet
主要言語
Java
スター
10.5k
フォーク
1.5k
平均マージ
1日 11時間
マージ済み PR(30日)
128

説明

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

---

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。