github / github/copilot-cli

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

Ouverte
#4,646 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

triage
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
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.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’échec avec /compact sur un modèle personnalisé compatible avec OpenRouter, puis comparez-le à un modèle first-party. Aucun fichier source ni test n’est mentionné dans le rapport ; suivez donc la requête de compactage depuis le point d’entrée /compact et examinez la gestion du choix de l’outil. La tâche sera considérée comme terminée lorsque le compactage manuel et automatique s’effectuera correctement pour les modèles personnalisés, sans l’erreur CAPI.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Domaine
api, cli
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.