Skip to content

Classify headless Antigravity native-tool denials#569

Open
wwind123 wants to merge 2 commits into
mainfrom
issue-568-scoped-antigravity-tools
Open

Classify headless Antigravity native-tool denials#569
wwind123 wants to merge 2 commits into
mainfrom
issue-568-scoped-antigravity-tools

Conversation

@wwind123

Copy link
Copy Markdown
Owner

Fixes #568

Summary

  • classify headless Antigravity read_file, write_file, and command permission denials by denied native tool
  • emit an actionable suggestion that preserves strict permissions and points to the assigned-checkout policy
  • retain the real agy 1.1.3 capability-probe evidence documenting why no recursive production read grant is shipped

Verification

  • python3 -m pytest tests/test_antigravity.py tests/test_protocol.py tests/test_orchestrator_issue.py — 367 passed
  • focused native-denial tests — 4 passed
  • full python3 -m pytest started but the environment terminated the run during the long suite before a summary

Blocker

The installed CLI auto-denies native reads under strict mode. read_file(<checkout>) is exact-target only and trusted workspace settings do not grant recursive nested reads. The approved plan requires stopping rather than guessing a wildcard or broad permission, so the remaining production settings injection awaits an Antigravity-supported recursive-read mechanism or explicit human approval of an alternative.

@wwind123

Copy link
Copy Markdown
Owner Author

Implemented the safe portion of issue #568 and opened PR #569.

The real agy 1.1.3 probe reproduced the headless native-tool denial. Every safe candidate tested failed to provide recursive nested reads under strict mode, so no guessed wildcard or unrestricted permission grant was shipped. Denials for read_file, write_file, and command are now categorized by tool with actionable diagnostics instead of becoming empty-response.

Tests: python3 -m pytest tests/test_antigravity.py tests/test_protocol.py tests/test_orchestrator_issue.py — 367 passed; focused native-denial tests — 4 passed; python3 -m pytest — started but the environment terminated the long run during tests/test_orchestrator_issue.py without a summary.

Human requirements

  • Requirement 1: Addressed where safely possible by preserving strict reviewer/repair policies, adding categorized native-tool denial diagnostics, and documenting the real CLI probe. The production recursive-read overlay could not be safely implemented because agy 1.1.3 rejected every verified candidate; the approved plan requires human escalation rather than guessing a permission rule.

Please approve an Antigravity-supported recursive checkout-scoped native-read mechanism, or provide an alternative permission shape, before production settings injection is added.

-- OpenAI Codex: gpt-5.6-luna

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Approved

The failure-classification piece of the approved plan (step 4) is implemented cleanly and tested: _native_permission_denial_tool/_failure_category correctly categorize headless read_file/write_file/command denials as native-tool-denied- instead of empty-response, ordering is correct relative to other classifiers, and the change is fed from result.raw_output at the right phases. Per the plan's own escalation clause, docs/local_agent_loop.md documents a real agy --print probe (v1.1.3) that found no candidate mechanism (permissions.allow variants or trustedWorkspaces/allowNonWorkspaceAccess) grants a checkout-scoped recursive native read while still denying native writes, so src/coding_review_agent_loop/agents/antigravity.py was correctly left unchanged rather than shipping a guessed permission rule. However, that means signed Requirement 1's core acceptance criteria are still unmet: a headless Antigravity reviewer still cannot use native read_file within its assigned checkout, and no tests exist for permission injection, settings restoration, or concurrent reviewer/repair sessions (there is nothing to test, since no injection was added). The plan explicitly requires returning to the signed human requirement discussion in this situation rather than treating the classification-only PR as resolving the issue, so this needs an explicit human decision (accept the reduced scope, or approve an alternative mechanism) before Requirement 1 can be marked resolved.

-- Anthropic Claude: claude-sonnet-5

@wwind123

Copy link
Copy Markdown
Owner Author

Coder follow-up

The signed requirement has been explicitly evaluated and remains safely blocked pending an Antigravity-supported scoped native-read mechanism; the PR retains strict read-only shell permissions and actionable native-tool-denial diagnostics.

Addressed items

  • item-1: Blocking issue from Orchestrator, round 1: Reviewer(s) Claude approved without acknowledging the signed human requirements. Coder must addre...
    • Resolution: This response explicitly records the signed Requirement 1 disposition for reviewer follow-up. The documented real agy 1.1.3 probe rejected all tested checkout-scoped recursive read candidates, including trustedWorkspaces, while retaining write denials. Shipping an inferred allow rule or bypass would violate the signed requirement's non-destructive policy.

Remaining items

  • None.

Tests run

  • python3 -m pytest tests/test_antigravity.py tests/test_agent_loop.py -k 'antigravity or native_tool or permission_denial' (50 passed)
  • python3 -m pytest -q (1546 passed)

Human requirements

  • Requirement 1: blocked — docs/local_agent_loop.md records the 2026-07-15 real agy 1.1.3 probe: exact, glob, and trusted-workspace candidates all auto-denied nested native read_file; native writes inside and outside the checkout remained denied. The current PR preserves strict reviewer/repair separation and classifies denied read_file, write_file, and command requests rather than returning empty-response. A human-approved Antigravity-supported scoped-read mechanism is required before native reads can be enabled safely.

-- OpenAI Codex: gpt-5.6-terra

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

This PR faithfully implements the approved plan's escalation path: the documented real-CLI probe (docs/local_agent_loop.md) found no verified checkout-scoped recursive read mechanism, so production Antigravity settings injection (agents/antigravity.py) was correctly left unchanged instead of shipping a guessed permission rule, and the independent piece (native-tool-denial classification in orchestrator.py, with tests) is implemented cleanly and does not regress existing failure-category classification. However, signed Requirement 1's core acceptance criteria are still unmet: a headless Antigravity reviewer still cannot use native read_file within its assigned checkout, and there is no test coverage for permission injection, settings restoration, or concurrent reviewer/repair sessions, because that work depends on the blocked mechanism. Per the plan's own step 1/7 contingency, this now needs to return to the signed human requirement discussion for an approved alternative before it can be considered resolved.

Blocking issues

  • Signed Requirement 1 is not fully resolved: 'A headless Antigravity reviewer can inspect files using native read_file within its assigned checkout' and 'Tests cover permission injection, restoration of the user settings file, and concurrent agent-loop sessions' remain unmet. src/coding_review_agent_loop/agents/antigravity.py is untouched by this PR (git diff main...HEAD confirms only orchestrator.py, tests/test_agent_loop.py, and docs/local_agent_loop.md changed), so the reviewer's native read_file requests will still be auto-denied in headless mode exactly as in the original bug report. This is a legitimate outcome of the approved plan's contingency (the documented real-CLI probe found every candidate mechanism -- literal-dir, /**, /* permissions.allow forms, and trustedWorkspaces/allowNonWorkspaceAccess -- denies the required nested read), and shipping a guessed rule would be worse. But per plan step 1/7, the correct next action is to return to the signed human requirement discussion for an approved alternative (or explicit acceptance of reduced scope), which has not yet happened in this PR. Recommend surfacing this decision point to the human (wwind123) rather than merging a PR that leaves the reported bug unfixed.

Prior unresolved item dispositions

  • [item-1] Blocking issue from Orchestrator, round 1: Reviewer(s) Claude approved without acknowledging the signed human requirements. Coder must addre... -> resolved

-- Anthropic Claude: claude-sonnet-5

@wwind123

Copy link
Copy Markdown
Owner Author

Coder follow-up

The PR now classifies headless native-tool denials, but the required checkout-scoped native read cannot be safely implemented with the Antigravity CLI mechanisms verified in the documented real-CLI probe.

Addressed items

  • None.

Remaining items

  • item-2: Blocking issue from Anthropic Claude: claude-sonnet-5, round 2: Signed Requirement 1 is not fully resolved: 'A headless Antigravity reviewer can inspect files us...
    • Reason: Requirement 1 remains blocked: the documented agy 1.1.3 probe denied nested native read_file for literal-directory, /**, /, read_file(), and trustedWorkspaces/allowNonWorkspaceAccess candidates. The approved plan requires escalation rather than shipping an inferred glob, broad permission, or dangerous flag; no newer signed human alternative was present in the issue discussion.

Tests run

  • python -m pytest tests/test_agent_loop.py -k 'headless_native_permission_denials or unrelated_blank_output' (not run: python executable unavailable)
  • python3 -m pytest tests/test_agent_loop.py -k 'headless_native_permission_denials or unrelated_blank_output' (4 passed)

Human requirements

  • Requirement 1: blocked — The diagnostic categorization is implemented and focused tests pass, but src/coding_review_agent_loop/agents/antigravity.py cannot receive a safe production native-read overlay until a supported mechanism is approved. The recorded real-CLI probe in docs/local_agent_loop.md shows every tested strict scoped candidate fails the acceptance criterion.

-- OpenAI Codex: gpt-5.6-terra

@wwind123

Copy link
Copy Markdown
Owner Author

Review verdict: Blocking

No code has changed since the prior review round (HEAD is still 4921997, and git diff main...HEAD is byte-identical: only orchestrator.py's native-tool-denial classification, its tests, and the probe documentation in docs/local_agent_loop.md). That work is sound and well-tested on its own, but signed Requirement 1's core criteria remain unmet: agents/antigravity.py is untouched, so a headless Antigravity reviewer still cannot use native read_file within its assigned checkout, and there is no test coverage for permission injection, settings restoration, or concurrent reviewer/repair sessions. The documented real-CLI probe found no verified checkout-scoped recursive-read mechanism, so per the approved plan's own step 1/7 contingency, this needs a human decision on an alternative (or explicit acceptance of reduced scope) before it can be merged as resolving issue #568. That decision has not been posted since my previous review flagged it.

Blocking issues

  • Signed Requirement 1 is still unresolved: 'A headless Antigravity reviewer can inspect files using native read_file within its assigned checkout' and 'Tests cover permission injection, restoration of the user settings file, and concurrent agent-loop sessions' are unmet. src/coding_review_agent_loop/agents/antigravity.py remains unchanged (confirmed via git diff main...HEAD, identical to the previous round), so reviewer native read_file requests are still auto-denied in headless mode exactly as in the original bug report. This is the correct outcome of the approved plan's contingency given the probe found no safe mechanism, and shipping a guessed rule would be worse -- but per plan step 1/7 the next required step is returning to the signed human requirement discussion for an approved alternative (or explicit sign-off on reduced scope limited to the failure-classification improvement). No such human decision has been posted yet, so this cannot be approved as-is.

Prior unresolved item dispositions

  • [item-2] Blocking issue from Anthropic Claude: claude-sonnet-5, round 2: Signed Requirement 1 is not fully resolved: 'A headless Antigravity reviewer can inspect files us... -> still blocking

-- Anthropic Claude: claude-sonnet-5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow scoped native Antigravity file tools in headless reviewer runs

1 participant