This repository was archived by the owner on May 20, 2026. It is now read-only.
Fix: only send tool_choice when tools are present in summarization#4988
Merged
Conversation
When tools are empty (e.g. /compact command), normalizeToolSchema returns undefined but tool_choice: 'none' was still sent, causing a 400 error on all model APIs: 'tools are required when tool choice is specified'. Now only sets tool_choice when normalizedTools is non-empty. Fixes microsoft/vscode#307933
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes summarization requests in agent history compaction (/compact) by ensuring tool_choice is only sent when tool schemas are actually included, avoiding 400s from model APIs that require tools whenever tool_choice is specified.
Changes:
- Compute
normalizedToolsonce and only include{ tool_choice: 'none', tools }whennormalizedToolsis non-empty. - Avoid sending
tool_choice(andtools) for summarization requests when tools are absent (e.g./compact).
Show a summary per file
| File | Description |
|---|---|
| src/extension/prompts/node/agent/summarizedConversationHistory.tsx | Gates summarization tool_choice/tools request options on non-empty normalized tool schemas to prevent API 400 errors. |
Copilot's findings
- Files reviewed: 1/1 changed files
- Comments generated: 1
justschen
approved these changes
Apr 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes: microsoft/vscode#307933
Related: https://github.com/microsoft/vscode-internalbacklog/issues/7331
When tools are empty (e.g.
/compactcommand),normalizeToolSchemareturnsundefinedbuttool_choice: 'none'was still sent in the summarization LLM request. This causes a 400 error on all model APIs: "tools are required when tool choice is specified".Full mode fails → falls back to Simple mode. Every
/compactinvocation wastes a Full mode attempt.Fix
Only set
tool_choice: 'none'whennormalizedToolsis non-empty.