Skip to content
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
bhavyaus merged 1 commit into
mainfrom
dev/bhavyau/fix-tool-choice-summarization
Apr 6, 2026
Merged

Fix: only send tool_choice when tools are present in summarization#4988
bhavyaus merged 1 commit into
mainfrom
dev/bhavyau/fix-tool-choice-summarization

Conversation

@bhavyaus
Copy link
Copy Markdown
Contributor

@bhavyaus bhavyaus commented Apr 6, 2026

Fixes: microsoft/vscode#307933
Related: https://github.com/microsoft/vscode-internalbacklog/issues/7331

When tools are empty (e.g. /compact command), normalizeToolSchema returns undefined but tool_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 /compact invocation wastes a Full mode attempt.

Fix

Only set tool_choice: 'none' when normalizedTools is non-empty.

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
Copilot AI review requested due to automatic review settings April 6, 2026 00:13
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 normalizedTools once and only include { tool_choice: 'none', tools } when normalizedTools is non-empty.
  • Avoid sending tool_choice (and tools) 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

Comment thread src/extension/prompts/node/agent/summarizedConversationHistory.tsx
@bhavyaus bhavyaus enabled auto-merge April 6, 2026 00:16
@bhavyaus bhavyaus added this pull request to the merge queue Apr 6, 2026
Merged via the queue into main with commit 692b298 Apr 6, 2026
23 checks passed
@bhavyaus bhavyaus deleted the dev/bhavyau/fix-tool-choice-summarization branch April 6, 2026 01:49
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

/compact fails with 'tools are required when tool choice is specified'

3 participants