Antigravity Gemini 3.6 Flash tool calls are rendered as plain text
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 19.9k
- Forks
- 2.3k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 30
Description
Description
When using Gemini 3.6 Flash through the Antigravity provider, a tool invocation can be surfaced in the assistant transcript as serialized plain text instead of being dispatched through Jcode's tool system.
The observed output has this shape:
[previous tool call] todo({“...” : ...})
The quotation marks may be typographic rather than valid JSON. In this case, the text is displayed as model output rather than producing a confirmed todo tool result.
This appears related to #518, but the observed symptom here is raw pseudo-tool-call text rather than the thought_signature HTTP 400 error described there.
Expected behavior
- Structured tool calls from Antigravity are dispatched through Jcode's tool registry.
- Tool-call syntax is not rendered as ordinary assistant text.
- Jcode does not execute or trust arbitrary text that resembles a tool call.
- Todo and completion state change only after the corresponding tool returns successfully.
- Malformed or unsupported provider tool events produce a clear compatibility error.
Actual behavior
- A tool call is emitted or displayed as ordinary text.
- The serialized call is not reliably executed by Jcode.
- The transcript can appear to report completed work even when the corresponding tool invocation was not confirmed.
Reproduction
-
Run Jcode with Gemini 3.6 Flash through Antigravity.
-
Enable Jcode tools, including
todo. -
Ask the model to perform a task requiring multiple tool calls.
-
Inspect the transcript after an earlier tool result.
-
Check whether a later call appears as native tool output or as text resembling:
[previous tool call] tool_name({...})
Suggested investigation
- Preserve Antigravity/Gemini native function-call events through the provider boundary.
- Map them to Jcode's provider-neutral tool-call representation.
- Validate tool names, call IDs, and arguments before dispatch.
- Add a dispatcher guard for textual pseudo-calls.
- Add regression tests for sequential calls, malformed JSON, smart quotes, unknown tools, and false completion state.
Environment
- Jcode:
v0.71.1(dd8755f7e) - Provider:
antigravity - Model: Gemini 3.6 Flash
- OS: Linux x86_64
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the Antigravity provider boundary and the provider-neutral tool-call dispatcher, then trace how native Gemini events become transcript output. Add regression coverage for sequential calls, malformed JSON, smart quotes, unknown tools, and false completion state; done means valid calls dispatch only after validation while pseudo-calls produce a clear compatibility error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- ai, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100