github / github/copilot-cli

Tool/function calls intermittently emit malformed invocation markup (court / <invoke>) and silently no-op

オープン
#4,706 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

area:tools
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

This issue was generated by the GitHub Copilot CLI agent itself (Claude Opus 4.8), not written by a human. The human user may add further details later.

Environment

  • Copilot CLI version: 1.0.82
  • Model: Claude Opus 4.8 (claude-opus-4.8)
  • OS: Windows
  • Shell: PowerShell

Summary
During a long interactive session, a significant fraction of the agent's tool calls are emitted in a malformed format — the message contains a stray literal token (court) followed by <invoke name="..."> markup instead of a properly-formed function call. When this happens the tool does not execute; no command runs and no output is produced. Retrying the identical call usually succeeds on the 2nd–4th attempt.

Impact

  • Frequent wasted turns: the user repeatedly has to prompt "your tool call failed / is malformed, redo it."
  • Severe slowdown of multi-step workflows (e.g. git history surgery, build/test loops) where nearly every step needed 1–3 retries.
  • Erodes trust; in this session the user considered the agent effectively broken.

Observed pattern

  • Prevalence increases as the session/context grows large (this session was very long, with extensive tool use).
  • Especially frequent on powershell tool calls that use here-strings/multi-line scripts, though it also affects simple calls.
  • The malformed output looks like a leaked internal call wrapper rather than a valid tool invocation.

Expected
Every tool invocation is emitted in the correct function-call format and executes reliably, regardless of session length.

Actual
Calls intermittently render as literal court + <invoke …> text and are dropped (no execution, no error surfaced to the tool layer).

Workarounds tried

  • Re-issuing the same call in the exact correct format (works, but only after failed attempts).
  • Keeping call blocks minimal / avoiding here-strings reduces but does not eliminate it.

Notes
No custom tools involved in the failures; occurs with built-in powershell/git operations. Repro is nondeterministic but recurrent within a single long session.


Text below is added by @MortenBoysen, the human operator.

As an example of a session where this happens, below I have pasted in the part of the session where Copilot CLI had to submit this bug report:

Let me write the body to a temp file (avoids quoting issues), then create the issue with the  bug  label.

Create copilot-cli-bug.md +33

Shell Create the bug report issue with bug label 2 lines…
Set-Location C:\git\repo $body = "C:\Users\Morten Boysen\AppData\Local\Temp\copilot-cli-bug.md" gh issue create --repo github/copilot-cli --title…

Thought for 1s

The  bug  label doesn't exist there. Let me check what labels are available.

court

Set-Location C:\git\repo
gh label list --repo github/copilot-cli --limit 40 2>&1 | Select-Object -First 40
List available labels in target repo


> tool call failed again

court

Set-Location C:\git\repo
gh label list --repo github/copilot-cli --limit 40 2>&1 | Select-Object -First 40
List available labels in target repo

> tool call failed again 

court

Set-Location C:\git\repo; gh label list --repo github/copilot-cli --limit 40 2>&1 | Select-Object -First 40
List available labels in target repo

> tool call failed again

$ Shell List available labels in target repo 31 lines…
Set-Location C:\git\repo; gh label list --repo github/copilot-cli --limit 40 2>&1 | Select-Object -First 40

Thought for 3s

No  bug  label exists. Best-matching labels are  area:tools  ("...tool call behavior") and  area:context-memory  (prevalence grows with context size). Submitting with those.

court

Set-Location C:\git\repo
$body = "C:\Users\Morten Boysen\AppData\Local\Temp\copilot-cli-bug.md"
gh issue create --repo github/copilot-cli --title "Tool/function calls intermittently emit malformed invocation markup (court / ) and silently no-op" --body-file $body --label "area:tools" --label "area:context-memory" 2>&1
Create the bug report with area labels

> tool call failed again

court

Set-Location C:\git\repo
$body = "C:\Users\Morten Boysen\AppData\Local\Temp\copilot-cli-bug.md"
gh issue create --repo github/copilot-cli --title "Tool/function calls intermittently emit malformed invocation markup (court / ) and silently no-op" --body-file $body --label "area:tools" --label "area:context-memory" 2>&1
Create the bug report with area labels

> tool call failed again

$ Shell Create the bug report with area labels 2 lines…
Set-Location C:\git\repo $body = "C:\Users\Morten Boysen\AppData\Local\Temp\copilot-cli-bug.md" gh issue create --repo github/copilot-cli --title…

Submitted successfully.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ソースファイルやテストは指定されていません。まず、組み込みの PowerShell および git のツールパスで不正な形式の呼び出しを再現し、短いセッションと長いセッションにわたって短いコマンドと複数行のコマンドを比較します。完了条件は、有効な function-call 形式が一貫して出力され、コマンドが実行され、失敗時に呼び出しが黙って破棄されるのではなくエラーが表面化することです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
git, powershell, shell
領域
cli, developer-experience, tooling
issue の種類
バグ
難易度
5/5
見積もり時間
1週間以上
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。