You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When Antigravity auto-approves an invoke_subagent launch, opening its child thread shows only Running invoke_subagent and no transcript. The ACP tool call id is <sessionId>:<n>. The reader took n to be the SQLite steps.idx of the planner step that issued the call. On the Antigravity 1.4.5 runtime that only holds for a launch near the very start of a session.
The runtime's SDK builds the id as make_step_id(trajectory_id, step_index) (google/antigravity/connections/local/event_processor.py). step_index is the harness's index of the step that runs the tool. That index skips planner responses that have neither response text nor thinking.
Reproduced on the real runtime: Antigravity ACP 1.4.5 linux-x64 in auto-approve (yolo) mode, driven against a scripted stand-in for the Gemini API (GOOGLE_GEMINI_BASE_URL). Each parent read a file a few times and then called invoke_subagent. T3's reader returned no children for 3 of 4 real launches on main.
Change
findInvokeRecord now resolves <sessionId>:<n> to the INVOKE_SUBAGENT record whose runtime index is n. That index is the record's idx minus the number of lower planner responses with no text and no thinking. The reader then uses that record.
The reader still returns nothing when it cannot prove the numbering:
a planner below the record is unreadable, oversized or in another format;
the id belongs to another session;
no invoke record sits at that index;
the new planner scan bound is exceeded (2,000 rows / 32 MiB).
The launch-text path for permission prompts uses the same mapping when an auto-approved sibling claims its record.
vp test run apps/server/src/provider/acp/AntigravityChildWork.test.ts: 13 passed.
follows each auto-approved launch id to the step that ran it copies a real 1.4.5 session layout step for step, including the reporter's planner that issues view_file and invoke_subagent together. On main it fails with expected [] to deeply equal [ 'Test Runner' ].
follows a launch id past many earlier launches covers a launch after 200 earlier ones.
declines an auto-approved id when a planner below it is unreadable covers the case where the numbering can't be proven.
needs proof that the call id belongs to the parent's record was rewritten for the real numbering: another session's id, an id that ran another tool, and an id past the end all return nothing.
vp run check:changed: format, lint, knip, typecheck (3 packages) and tests pass.
Runtime transcript (synthetic data from the scripted endpoint). The ACP ids are as the runtime sent them; the native rows are idx:step_type:
two parallel invoke_subagent calls from one planner;
launches after SYSTEM_MESSAGE and error steps;
a launch after session/load in a new runtime process.
All resolved to the right child.
Not checked: real Gemini output (the planner shapes came from the scripted endpoint), runtime releases other than 1.4.5, and macOS or Windows hosts. No render path changed, so there are no captures.
AI-assisted; verified with the tests and tools listed above.
… ran them (reproduces #31297)
The runtime numbers auto-approved tool call ids by the executing step,
skipping planner steps that carry neither text nor thinking. The reader
treats the suffix as the planner's steps.idx, so a later launch in a
session resolves to no children.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An auto-approved launch id `<session>:<n>` numbers the step that ran
invoke_subagent, counting every step except planner responses with
neither text nor thinking. The reader took n as the planner's row idx,
so later launches in a session showed no children. It now walks the
planner and invoke rows in order and resolves n to the invoke record at
that position, for the launch and for sibling claims alike, and declines
when a planner below is unreadable or a scan bound is hit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The step-index scan capped every invoke record below the target, so the
201st launch in a long session showed no children. Those rows carry no
payload in the scan; the planner bounds still limit the work.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Macroscope's review found this PR approvable — Updates Antigravity’s subagent view to locate auto-approved launches using runtime step indexes. The change remains confined to session-scoped, read-only display retrieval with existing transcript-path and size safeguards.
No code changes detected at ecbd4e8. Prior analysis still applies.
You can add or adjust custom eligibility rules. Learn more.
Reviewing files that changed from the base of the PR and between aa83aa7 and ecbd4e8.
You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.
Use the checkbox below for a quick retry:
Trigger review
No actionable comments were generated in the recent review.
Walkthrough
Auto-approved Antigravity task IDs now resolve through runtime step indexes to invoke records. Planner scanning skips responses without text or thinking and stops when data is unreadable or exceeds configured limits. Permission-prompt matching excludes sibling records by resolved invoke-record indexes.
Planner responses without text or thinking are skipped when mapping runtime step indexes to invoke-record indexes. The scan returns no mapping for unreadable planner data or when it exceeds 2,000 rows or 32 MiB. Tests cover skipped and text-bearing planner steps, consecutive launches, 201 launches, and unreadable data.
Auto-approved and sibling record resolution apps/server/src/provider/acp/AntigravityChildWork.ts, apps/server/src/provider/acp/AntigravityChildWork.test.ts
Auto-approved task IDs resolve through the step mapping and a bounded invoke-record lookup. Permission-prompt matching excludes sibling records by resolved invoke-record index. Tests cover parent-session matching and unresolved steps.
pingdotgg/t3code#28629: Adds the child-work reader and the planner-call-ID matching logic that this PR changes.
Suggested labels:bugfix, size:M
Suggested reviewers:t3dotgg, macroscopeapp
Merge Risk: Minimal · previous review aa83a
The child-work matching change is ready to merge after normal checks; no actionable issue was identified.
Pre-merge checks: 4
Check name
Status
Explanation
Title check
The title "fix(server): Antigravity subagent view finds auto-approved launches" follows conventional commit format and names the primary change. The raw summary and objectives show the change maps aut…
Description check
The description covers the problem (auto-approved invoke_subagent launches show no transcript because the ACP call ID suffix was read as steps.idx), the change (findInvokeRecord maps the runtime index…
Linked Issues check
Issue #31297 requires completed auto-approved Antigravity subagent work to appear in the child view. AntigravityChildWork.ts now maps the ACP <sessionId>:<n> suffix to the invoke record at the run…
Out of Scope Changes check
The changes remain within issue #31297. AntigravityChildWork.ts contains the lookup and permission-prompt updates. AntigravityChildWork.test.ts and AntigravityChildWork.testkit.ts add focused fi…
Full details: Title check
Explanation
The title "fix(server): Antigravity subagent view finds auto-approved launches" follows conventional commit format and names the primary change. The raw summary and objectives show the change maps auto-approved tool call IDs to invoke records by runtime step index, so the child view can find launches it previously missed. The title is specific and related to the main change.
Full details: Description check
Explanation
The description covers the problem (auto-approved invoke_subagent launches show no transcript because the ACP call ID suffix was read as steps.idx), the change (findInvokeRecord maps the runtime index to the INVOKE_SUBAGENT record, with bounds and fallbacks), and verification (named focused tests, a check:changed run, and a runtime transcript). It also lists what was not checked. The Scope and approval section links issue #31297 but does not include the maintainer approval comment or explain why a prior discussion is not needed. The template asks for that, so this is a gap. The description also names the model and harness only implicitly, and the template asks for that at the end when an agent was used. The description is mostly complete, so the check passes, with the approval gap noted for the author to address.
Full details: Linked Issues check
Explanation
Issue #31297 requires completed auto-approved Antigravity subagent work to appear in the child view. AntigravityChildWork.ts now maps the ACP <sessionId>:<n> suffix to the invoke record at the runtime step index, while rejecting unproven mappings. The same mapping supports sibling exclusion for launch-text matching. Tests cover skipped planner indexes, later launches, wrong sessions, non-invoke steps, out-of-range indexes, and unreadable planners.
Full details: Out of Scope Changes check
Explanation
The changes remain within issue #31297. AntigravityChildWork.ts contains the lookup and permission-prompt updates. AntigravityChildWork.test.ts and AntigravityChildWork.testkit.ts add focused fixtures and regression coverage for that lookup. No unrelated product area or independent behavior appears in the reviewed diff.
Finishing Touches
Generate docstrings
Commit to this branch
Create a new PR
Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
The automated pipeline stopped on this pull request and will not merge it:
the proof has no capture anyone can open:
Permanent blocker: Antigravity is unavailable on this VM, preventing the required runtime 1.4.5 Google-authenticated, full-access reproduction.
The base showing only Running invoke_subagent was not observed.
The head displaying the completed child's correct role, prompt, and transcript was not observed.
No captures or driver scripts were produced, so no ghdrop upload was attempted and no public evidence URLs are available.
It stays open for a person to finish or close.
This branch has not been deployed
No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bugfixFix PR opened by an issue lead; enters the PR looppr:gate-failedA land gate failedsize:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.
1 participant
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When Antigravity auto-approves an
invoke_subagentlaunch, opening its child thread shows onlyRunning invoke_subagentand no transcript. The ACP tool call id is<sessionId>:<n>. The reader tooknto be the SQLitesteps.idxof the planner step that issued the call. On the Antigravity 1.4.5 runtime that only holds for a launch near the very start of a session.The runtime's SDK builds the id as
make_step_id(trajectory_id, step_index)(google/antigravity/connections/local/event_processor.py).step_indexis the harness's index of the step that runs the tool. That index skips planner responses that have neither response text nor thinking.Reproduced on the real runtime: Antigravity ACP 1.4.5 linux-x64 in auto-approve (
yolo) mode, driven against a scripted stand-in for the Gemini API (GOOGLE_GEMINI_BASE_URL). Each parent read a file a few times and then calledinvoke_subagent. T3's reader returned no children for 3 of 4 real launches onmain.Change
findInvokeRecordnow resolves<sessionId>:<n>to theINVOKE_SUBAGENTrecord whose runtime index isn. That index is the record'sidxminus the number of lower planner responses with no text and no thinking. The reader then uses that record.The reader still returns nothing when it cannot prove the numbering:
The launch-text path for permission prompts uses the same mapping when an auto-approved sibling claims its record.
Scope and approval
Fixes #31297
Verification
vp test run apps/server/src/provider/acp/AntigravityChildWork.test.ts: 13 passed.follows each auto-approved launch id to the step that ran itcopies a real 1.4.5 session layout step for step, including the reporter's planner that issuesview_fileandinvoke_subagenttogether. Onmainit fails withexpected [] to deeply equal [ 'Test Runner' ].follows a launch id past many earlier launchescovers a launch after 200 earlier ones.declines an auto-approved id when a planner below it is unreadablecovers the case where the numbering can't be proven.needs proof that the call id belongs to the parent's recordwas rewritten for the real numbering: another session's id, an id that ran another tool, and an id past the end all return nothing.vp run check:changed: format, lint, knip, typecheck (3 packages) and tests pass.idx:step_type:A separate run on the real runtime also checked:
invoke_subagentcalls from one planner;SYSTEM_MESSAGEand error steps;session/loadin a new runtime process.All resolved to the right child.
AI-assisted; verified with the tests and tools listed above.