Tool/function calls intermittently emit malformed invocation markup (court / <invoke>) and silently no-op
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Shell
- Sterne
- 11.2k
- Forks
- 1.9k
- Ø Merge
- 14 Std. 16 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
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.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Keine Quelldateien oder Tests werden genannt. Beginne damit, die fehlerhaften Aufrufe in den integrierten PowerShell- und git-Toolpfaden zu reproduzieren, und vergleiche kurze und mehrzeilige Befehle über kurze und lange Sitzungen hinweg. Fertig ist es, wenn eine gültige function-call-Formatierung konsistent ausgegeben wird, Befehle ausgeführt werden und Fehler als Fehler sichtbar werden, statt den Aufruf stillschweigend zu verwerfen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- git, powershell, shell
- Bereich
- cli, developer-experience, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100