Tracing for Antigravity records each user turn as a trace. Antigravity is transcript driven: its hooks tell the tracer that something happened, and the model and tool detail is read from the transcript the agent writes for that turn. This page covers the install, what a trace looks like, and the limits worth knowing about.

Install

On macOS or Linux:
On Windows:
The installer prompts for your license key and project name, stores them in ~/.atatus/harness/config.json, and registers two hooks under the top-level atatus-tracing key in ~/.gemini/config/hooks.json.
Antigravity and Gemini CLI share the ~/.gemini directory but read different files. Antigravity reads ~/.gemini/config/hooks.json, and Gemini CLI reads ~/.gemini/settings.json, so the two harnesses can be installed on the same machine without touching each other. Install them separately if you use both.

What gets captured

Antigravity produces a three-level tree. Each model call is its own span, and the tools it requested sit inside it: A turn reads as a sequence of model calls, each with its own work beneath it:
Tokens and cost sit on each LLM call span, not on the turn, so a turn’s spend is the total across its calls rather than a figure on the root. A busy turn commonly holds ten or more calls, because Antigravity prompts the model again after each round of tool calls.
A model response that ran tools but wrote no text is still a span, because the tool calls are its output. A response with no text, no reasoning, and no tool calls produces no span at all.

Where things live

Two hook events are registered: PreInvocation, which fires before each model invocation, and Stop, which fires when the turn finishes and is where the transcript is read and the spans are built. Each hook has a 30 second timeout. Spans are sent straight from the hook process, so there is no separate collector or buffer service to run.

Known limits

Antigravity reports less about itself than most agents do, so a few figures behave differently:
  • Durations are whole seconds. Every timestamp Antigravity records is second granular, so a tool that finished in well under a second reports a zero duration.
  • A turn that leaves a background task running is traced late. Antigravity signals a stop when the agent yields, and backgrounding a tool makes it yield, so the turn is held until it resumes and finishes. Sending your next message releases it. A turn that backgrounds a task and is then abandoned without another message is never traced.
  • Cache write tokens are always zero. Antigravity does not report them. Cache read tokens are included in the prompt token count, as they are for the other agents.
  • A model call with no usable usage data carries no token counts at all. The counts are read from Antigravity’s own conversation store, and when a call’s entry cannot be read the span is reported without token attributes rather than with zeros, so a real call is never shown as one that cost nothing. The span still appears, with its output and its tools intact.
If a model call shows no cost, check whether it shows no tokens either. A call with tokens and no cost is a pricing gap, and a call with neither is Antigravity not reporting usage for it.

User identity for the standalone IDE

Traces carry the signed-in account email as the user ID, so you can filter by person. The tracer reads it from the Antigravity CLI log (~/.gemini/antigravity-cli/cli.log, or the cli-*.log files beside it) and, failing that, from Google account files under ~/.gemini. That covers every CLI session and every VS Code extension session. A developer who uses only the standalone Antigravity IDE and has never signed in to the CLI leaves none of those files behind. Their traces still arrive, but with no user ID, so they do not appear under a user filter.

Uninstall

This removes the atatus-tracing key from ~/.gemini/config/hooks.json and leaves the rest of the file, including any hooks of your own, untouched. See Uninstall for the full-wipe option.