Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Gemini continuation and /compact fail with "Tool name is required" on mixed-model history

Abierto
#4,914 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Necesita aclaración
Estado de actividad
Activo
Stack tecnológico
shell
Área
cli

Línea de trabajo

No source files or tests are named. Start by tracing cross-model history normalization and the Gemini request adaptation, including how custom.name is handled during normal requests and /compact. Done means supported model switching, resume, rewind, and compaction no longer fail on historical apply_patch calls, with a regression test covering the mixed-model history.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

triage
Describe the bug

A long-lived, mixed-model Copilot CLI session fails to continue with Gemini:

400 Tool name is required for Gemini requests
{"message":"Tool name is required for Gemini requests","code":"invalid_tool_call_format"}

Multiple normal prompts fail before any new tool executes. Manual /compact also fails with the same error, so compaction does not provide recovery in this session.

The captured failed compaction request provides a useful triage lead: its history contains three GPT-originated type: "custom" / custom.name: "apply_patch" calls among ordinary function calls. All tool results have matching, preceding calls with nonempty names when both call types are accounted for. This is not evidence of a missing tool name in the persisted call itself.

Suspected area: cross-model history normalization / Gemini request adaptation. This is a hypothesis, not a confirmed root cause or an assertion that two independent bugs exist.

Affected version
  • Copilot CLI 1.0.86, verified from the running process's loaded .../1.0.86/prebuilds/darwin-arm64/runtime.node.
  • Session originally created under 1.0.83 and subsequently resumed across updates; the version that introduced the failure is unknown.
  • Model at failure: gemini-3.8-flash.
  • Earlier turns used gpt-6-astra, including built-in apply_patch.
  • macOS 26.7, Apple Silicon (arm64), tmux.
Steps to reproduce the behavior

Observed workflow, not yet a clean-room/minimal reproducer:

  1. Continue a long-lived session that has used both GPT and Gemini, with previous compactions and tool calls.
  2. GPT turns in that history use built-in apply_patch, persisted as custom tool calls.
  3. Continue later with Gemini. Conversation-only rewinds and process resume/restart occurred before the reported failures. Their causal role has not been isolated; switching models alone is not claimed to reproduce this.
  4. Submit a normal follow-up prompt. It fails with invalid_tool_call_format.
  5. Retry later: the same error recurs.
  6. Run /compact: it also fails, with session.compaction_complete.success: false and error: "host-rethrow: 400 Tool name is required for Gemini requests".

The real environment includes user hooks, plugins, and MCP servers. These have not been eliminated in a fresh configuration. This report does not establish reproducibility in a stock installation.

Expected behavior

A session created through supported model switching, tool use, resume, and rewind should remain usable. Historical custom tool calls should be translated into a supported representation when replayed to another provider, or the CLI should provide an actionable compatibility/recovery error without silently discarding history.

Additional context
Captured request metadata

For the failed manual compaction, model.model_call_failure records:

{
  "model": "gemini-3.8-flash",
  "status": 400,
  "api_endpoint": "/chat/completions",
  "transport": "http",
  "failure_kind": "api",
  "badRequestKind": "structured_error",
  "errorCode": "invalid_tool_call_format"
}

Parsing that event's JSON-encoded requestMessages locally:

Check Result
Messages 506
Assistant tool calls 258
Function calls with nonempty function.name 255
Custom calls with nonempty custom.name 3, all apply_patch
Tool-result messages 258
Results without a matching preceding named call 0

The three custom calls are at zero-based message indices 85, 107, and 115; their matching results immediately follow. All 258 result messages omit a standalone name; each has a tool_call_id that resolves to its preceding call. This alone is not asserted to be invalid in the OpenAI-shaped intermediate format.

Synthetic structural illustration only (not an executed reproducer; IDs, input, and output replaced):

[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [{
      "id": "custom_call_example",
      "type": "custom",
      "custom": {
        "name": "apply_patch",
        "input": "<synthetic patch placeholder>"
      }
    }]
  },
  {
    "role": "tool",
    "tool_call_id": "custom_call_example",
    "content": "<synthetic result placeholder>"
  }
]

Please check whether the Gemini adapter handles custom.name, rather than assuming every historical call has function.name. The captured request does not establish which field the server rejected; it is not a capture of the final native Gemini payload.

Trace correlation
UTC time, 2026-09-19 Operation Request ID Service request ID
21:44:48 Normal prompt: HTTP 400 7B0D:345026:2C3E730:36BEE94:6AAF024C 138e7b2d-aebe-4123-97f2-8b61e81f383e
22:07:00 Later normal prompt: HTTP 400 7F6E:178245:2FFDC9D:3C2C1FB:6AAF077F 4b9439d5-7085-490b-8815-a43414f9cea4
22:07:20 Manual compaction: HTTP 400 4DFE:3B6359:2FDC2F9:3C0B645:6AAF0797 90eafc3c-9e21-4633-a126-9f3bfc45a047
Important limits / ruled-out inference
  • Some persisted event parentId links are dangling, but following those links alone incorrectly suggested an orphaned image-view result. The actual captured request contains both image-view calls, their names, and their results. Therefore, an orphan caused by rewind is not established.
  • Successful later Gemini turns exist after the original custom-tool turns. This is not established as an immediate model-switch failure; resume/replay or runtime-version differences may matter.
  • No controlled retry with only the custom calls normalized has been performed. No successful model-switch workaround is claimed.
  • The live session was inspected read-only. No repair, event deletion, or history rewrite was performed for this investigation.
  • No original conversation, image, patch contents, filesystem paths, or configuration is attached. Only structural findings and request-correlation metadata are included.

Related but not established as duplicates: broader Gemini 400 report and older tool-use/result corruption report.

Lenguaje dominante
Shell
Estrellas
11.2k
Forks
1.9k
Merge medio
14 h 16 min
PR fusionados (30 d)
6

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github/copilot-cli

Todos los issues de github/copilot-cli

Issues similares

Más issues de Shell/Bash

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.