github / github/copilot-cli

Compaction fails with "CAPIError: 400 Tool choice must be auto" on custom models

Open
#4,646 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

triage
Dominant language
Shell
Stars
11.2k
Forks
1.9k
Avg merge
14h 16m
Merged PRs (30d)
6

Description

Describe the bug

Session compaction (manual /compact and automatic compaction at the context threshold) fails with:

Compaction failed. CAPIError: 400 Tool choice must be auto

whenever the session is running a custom model (e.g. ~z-ai/glm-latest registered through a custom OpenRouter-compatible provider). The compaction summary request appears to force a tool call, and CAPI rejects non-auto tool choice for custom models, so compaction can never succeed on them.

Switching the same session to a first-party model (e.g. GPT-5.6 Luna or Claude Sonnet 4.6) and running /compact succeeds, confirming the failure is tied to the custom model's tool-choice capability, not the session contents.

Affected version

GitHub Copilot CLI 1.0.80 (also confirmed still present in the 1.0.81-14 prerelease)

Steps to reproduce the behavior
  1. Register a custom model via an OpenRouter-compatible provider (e.g. ~z-ai/glm-latest)
  2. Start a session on that model and work until auto-compaction triggers (or run /compact manually)
  3. Observe: Compaction failed. CAPIError: 400 Tool choice must be auto
  4. Switch the session to a first-party model and run /compact — it succeeds
Expected behavior

Compaction should succeed on custom models, e.g. by falling back to tool_choice: auto with a prompt-based summary when the selected model does not support forced tool choice.

Additional context
  • Reproducible across multiple sessions and repositories whenever the session model is a custom one; first-party models (GPT/Claude/Gemini) compact fine.
  • After the failed compaction the session keeps growing and eventually hits context/size failures, since auto-compaction can never complete on custom models.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with /compact on a custom OpenRouter-compatible model, then compare it with a first-party model. No source file or test is named in the report, so trace the compaction request from the /compact entry point and inspect the tool-choice handling. Done means both manual and automatic compaction complete successfully for custom models without the CAPI error.

Written by the indexing model from the issue text.

Assessment

Domain
api, cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.