Compaction fails with "CAPIError: 400 Tool choice must be auto" on custom models
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Shell
- Estrellas
- 11.2k
- Forks
- 1.9k
- Merge medio
- 14 h 16 min
- PR fusionados (30 d)
- 6
Descripción
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
- Register a custom model via an OpenRouter-compatible provider (e.g.
~z-ai/glm-latest) - Start a session on that model and work until auto-compaction triggers (or run
/compactmanually) - Observe:
Compaction failed. CAPIError: 400 Tool choice must be auto - 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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza reproduciendo el fallo con /compact en un modelo personalizado compatible con OpenRouter y, después, compáralo con un modelo de primera parte. En el informe no se menciona ningún archivo de código fuente ni ninguna prueba, así que sigue la solicitud de compactación desde el punto de entrada /compact e inspecciona el manejo de la selección de herramientas. Se considerará terminado cuando tanto la compactación manual como la automática se completen correctamente para modelos personalizados sin el error de CAPI.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Área
- api, cli
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100