Tool/function calls intermittently emit malformed invocation markup (court / <invoke>) and silently no-op
まだ誰も着手していません。
- 主要言語
- 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
powershelltool 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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
ソースファイルやテストは指定されていません。まず、組み込みの PowerShell および git のツールパスで不正な形式の呼び出しを再現し、短いセッションと長いセッションにわたって短いコマンドと複数行のコマンドを比較します。完了条件は、有効な function-call 形式が一貫して出力され、コマンドが実行され、失敗時に呼び出しが黙って破棄されるのではなくエラーが表面化することです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- git, powershell, shell
- 領域
- cli, developer-experience, tooling
- issue の種類
- バグ
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100