- New
google_searchtool for web search - Implements Google Search grounding as a callable tool that the model can invoke explicitly- Makes separate API calls with only
{ googleSearch: {} }tool, avoiding Gemini API limitation where grounding tools cannot be combined with function declarations - Returns formatted markdown with search results, sources with URLs, and search queries used
- Supports optional URL analysis via
urlContextwhen URLs are provided - Configurable thinking mode (deep vs fast) for search operations
- Uses
gemini-3-flashmodel for fast, cost-effective search operations
- Makes separate API calls with only
- Upgraded to Zod v4 and adjusted schema generation for compatibility
- Deprecated
web_searchconfig - Theweb_search.default_modeandweb_search.grounding_thresholdconfig options are now deprecated. Google Search is now implemented as a dedicated tool rather than automatic grounding injection
-
keep_thinking=truenow works without debug mode - Fixed Claude multi-turn conversations failing with "Failed to process error response" whenkeep_thinking=trueafter tool calls, unless debug mode was enabled- Root cause:
filterContentArraytrusted any signature >= 50 chars for last assistant messages, but Claude returns its own signatures that Antigravity doesn't recognize - Fix: Now verifies signatures against our cache via
isOurCachedSignature()before passing through. Foreign/missing signatures get replaced withSKIP_THOUGHT_SIGNATUREsentinel - Why debug worked: Debug mode injects synthetic thinking with no signature, triggering sentinel injection correctly
- Root cause:
-
Fixed tool calls failing for tools with no parameters - Tools like
hive_plan_read,hive_status, andhive_feature_listthat have no required parameters would fail with Zod validation errorstate.input: expected record, received undefined- Root cause: When Claude calls a tool with no parameters, it returns
functionCallwithout anargsfield. The response transformation only processed parts wherefunctionCall.argswas defined, leavingargsasundefined - Fix: Changed condition to handle all
functionCallparts, defaultingargsto{}when missing, ensuring opencode'sstate.inputalways receives a valid record
- Root cause: When Claude calls a tool with no parameters, it returns
-
Auth headers aligned with official Gemini CLI - Updated authentication headers to match the official Antigravity/Gemini CLI behavior, reducing "account ineligible" errors and potential bans (#178)
GEMINI_CLI_HEADERS["User-Agent"]:9.15.1→10.3.0GEMINI_CLI_HEADERS["X-Goog-Api-Client"]:gl-node/22.17.0→gl-node/22.18.0ANTIGRAVITY_HEADERS["User-Agent"]: Updated to full Chrome/Electron user agent string- Token exchange now includes
Accept,Accept-Encoding,User-Agent,X-Goog-Api-Clientheaders - Userinfo fetch now includes
User-Agent,X-Goog-Api-Clientheaders fetchProjectIDnow uses centralized constants instead of hardcoded strings
-
quiet_modenow properly suppresses all toast notifications - Fixedquiet_mode: trueinantigravity.jsonnot suppressing "Status dialog dismissed" and other toast notifications (#207)- Root cause: The
showToasthelper function didn't checkquietMode, and only some call sites had manual!quietMode &&guards - Fix: Moved
quietModecheck insideshowToasthelper so all toasts are automatically suppressed whenquiet_mode: true
- Root cause: The
- Removed automatic
googleSearchinjection - Previously attempted to inject{ googleSearch: {} }into all Gemini requests, which never worked due to API limitations. Now uses the explicit tool approach instead
See releases for previous versions.