Responses API should support native `previous_response_id` chaining
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- api, backend-api-design, cli
Research direction
Start by tracing the Responses API request path and the SDK's PreviousResponseId protocol field, then compare tool continuations, later user turns, and resumed sessions. Done means supported providers use retained response IDs with incremental input, preserve required settings, fall back to full history when chaining fails, and keep context and tool behavior correct.
Written by the indexing model from the issue text.
Description
Summary
When using the Copilot SDK/CLI with the Responses API, every model round reconstructs and sends the complete conversation history. The runtime does not send previous_response_id and sets store: false.
This substantially increases request tokens for long-running and resumed sessions.
Versions tested
GitHub.Copilot.SDK1.0.5 with Copilot CLI 1.0.73GitHub.Copilot.SDK1.0.9-preview.1 with Copilot CLI 1.0.74- Azure AI Foundry OpenAI-compatible provider
wireApi: responses
The preview SDK references CLI 1.0.76-5, but that package was not available for testing.
Observed behavior
A privacy-safe request probe showed:
- Initial request: 1 input item
- Tool continuation: 3 input items
- Next user turn: 5 input items
- Resumed session in a new process: 7 input items
No request included previous_response_id. The runtime also emitted store: false.
In a real long-running session, this resulted in approximately 26K–28K reported input tokens per request, including tool continuations.
Expected behavior
After the initial Responses request:
- Set
store: true, or otherwise use provider-supported response retention. - Capture the terminal response ID.
- Send subsequent model rounds with:
previous_response_id- only newly added input items
- Preserve instructions, tools, and request settings as required by the Responses API.
- Fall back to full history if the provider rejects or cannot resolve the response ID.
This should apply to both tool-result continuations and subsequent user turns.
Workaround validation
We implemented an experimental request handler that:
- changes
store: falsetostore: true, - captures IDs from terminal SSE response events,
- adds
previous_response_id, - replaces reconstructed history with incremental input,
- falls back to full history when chaining cannot be verified.
Live validation reduced:
- a tool continuation from 60 input items to 1,
- a subsequent user turn from 66 input items to 1.
Conversation context and tool behavior remained correct.
The handler also had to account for non-semantic differences when the CLI reconstructed response items:
- regenerated top-level response item
id, - omitted assistant-message
phase, - omitted output-text
logprobs.
Semantic content and tool call_id values were still compared exactly.
Request
Could native Responses API chaining be added to the Copilot CLI/runtime and exposed or enabled through the SDK?
It would also be useful to clarify:
- whether the SDK’s
PreviousResponseIdprotocol field is currently used by any provider path, - how response IDs should persist across SDK session resumes or process restarts,
- whether token telemetry can report the actual rewritten wire input rather than reconstructed local history.
- Dominant language
- Java
- Stars
- 10.5k
- Forks
- 1.5k
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 133
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from github/copilot-sdk
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
github/copilot-sdk#2709 · 1 comment ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
github/copilot-sdk#2673 ·
-
bug testing
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
github/copilot-sdk#2628 ·
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
github/copilot-sdk#2627 · 1 comment ·
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
github/copilot-sdk#2493 ·
All issues in github/copilot-sdk
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
area/frontend
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100