Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#4,914 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Sôi nổi
Công nghệ
shell
Lĩnh vực
cli

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.

Ngôn ngữ chính
Shell
Star
11.2k
Fork
1.9k
Merge trung bình
14 giờ 16 phút
Pull request đã merge (30 ngày)
6

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của github/copilot-cli

Tất cả issue của github/copilot-cli

Issue tương tự

Thêm issue về Shell/Bash

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.