github / github/copilot-cli

Canvas open_canvas arguments corrupted by CLI — JSON-RPC serialization bug

Offen
#4,721 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

area:mcp area:tools
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

Describe the bug

The CLI corrupts JSON-RPC arguments when dispatching tool calls to canvas extensions. The model's parsed arguments are concatenated with a trailing }{} suffix, causing malformed JSON. For open_canvas, the truncation happens mid-value producing "Unexpected end of JSON input" errors. The extension never receives any request.

This is reproducible in every session, not just with canvas extensions — list_canvas_capabilities, extensions_manage, and other tools also receive corrupted arguments.

Affected version

GitHub Copilot CLI 1.0.82

Steps to reproduce the behavior

  1. Install any canvas extension (e.g., session-md-reader) in ~/.copilot/extensions/
  2. Start a session and ask Copilot to open the canvas, or trigger any tool call that passes arguments with nested JSON (e.g., open_canvas)
  3. Observe the tool call fails with "Unexpected end of JSON input" and wasSyntaxError: true

Live reproduction in this session (CLI v1.0.82):

# open_canvas — arguments truncated mid-value:
The arguments for the tool call 'open_canvas' were not valid JSON.
Arguments: {"canvasId": "session-md-reader", "input": .
JSON parse error: Unexpected end of JSON input

# list_canvas_capabilities — trailing }{} appended:
The arguments for the tool call 'list_canvas_capabilities' were not valid JSON.
Arguments: {"canvasId": "session-md-reader"}{}.
JSON parse error: Unexpected non-whitespace character after JSON at position 33

# edit — trailing }{} appended:
The arguments for the tool call 'edit' were not valid JSON.
Arguments: {}{}.
JSON parse error: Unexpected non-whitespace character after JSON at position 2

# extensions_manage — trailing }{} appended:
The arguments for the tool call 'extensions_manage' were not valid JSON.
Arguments: {"operation": "inspect", "name": "session-md-reader"}{}.
JSON parse error: Unexpected non-whitespace character after JSON at position 53

Session events log evidence (session 96897afc-a61a-4dc0-8438-12630294f8bd):

Turn Tool Result
0 open_canvas success: false, "Unexpected end of JSON input", wasSyntaxError: true
1 open_canvas (retry) Same error
2 list_canvas_capabilities ✅ Success (no complex arguments needed)
3 open_canvas (with extra param) Same error

The toolRequests in the assistant message shows "arguments":{} even though the model correctly outputs <parameter=input>{"sessionUuid": ...} in markdown. The CLI's markdown-to-JSON parser fails to extract the parameter values.

Expected behavior

Tool call arguments should be correctly serialized to valid JSON and dispatched to the extension via JSON-RPC. The extension should receive the full arguments object (e.g., {"canvasId": "session-md-reader", "instanceId": "session-md-reader-96897afc", "input": {"sessionUuid": "..."}}).

Additional context

  • Extension logs: The extension shows only === ready === — it never receives any requests because the CLI fails before dispatching.
  • Extension health: The extension is correctly implemented (valid inputSchema, requestCanvasRenderer: true, proper open handler returning {url, title, status}). Verified by /extensions manage showing it as running.
  • Reproducibility: 100% reproducible. The bug affects all tools that pass arguments, not just canvas tools.
  • Model used: mimo-v2.5 (tool calls output in markdown <tool_call> format)
  • OS: Windows 11 (x86_64), PowerShell 7
  • Terminal: Windows Terminal

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den Fehler mit verschachtelten JSON-Tool-Argumenten zu reproduzieren, und verfolge den Markdown-zu-JSON-Parser der CLI durch die Konstruktion von toolRequests und den JSON-RPC-Dispatch. Vergleiche die geparsten Argumente mit der Markdown-Ausgabe des Modells und überprüfe, dass open_canvas, edit und extensions_manage die Extension mit genau einem vollständigen gültigen JSON-Objekt erreichen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
json, markdown, shell
Bereich
api, cli
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.