Skip to content

fix: dump the outbound request for audit when debug is on (2.4.2) - #71

Merged
JoshRob297 merged 1 commit into
mainfrom
feat/request-audit
Oct 31, 2026
Merged

JoshRob297 merged 1 commit into
mainfrom
feat/request-audit

Conversation

@JoshRob297

Copy link
Copy Markdown
Owner

Cierra el hueco que obligo a instrumentar el plugin a mano para diagnosticar el bloqueo de Claude 5.5.

Problema

Con debug: true, la ruta v2 no registraba la peticion saliente: los archivos antigravity-logs/antigravity-debug-*.log quedaban vacios. Para ver el body final habia que parchear src/v2/adapter.ts temporalmente.

Cambio

  • writeRequestAudit() en plugin/debug.ts: con debug activo escribe antigravity-logs/last-request.json con createdAt, url, model, headerKeys y el body completo. Solo nombres de cabecera, nunca valores: el token bearer no llega al archivo.
  • Llamada desde el hook http.request de v2/adapter.ts, antes de reemplazar event.request.
  • buildRequestAudit() exportado como funcion pura para poder testear la forma sin tocar el disco.

Uso

OPENCODE_ANTIGRAVITY_DEBUG=1 opencode run --standalone --model google/antigravity-gemini-3.8-flash "OK"
antigravity-preflight --capture ~/.config/opencode/antigravity-logs/last-request.json

Salida real en esta maquina tras el cambio:

SOURCE                                         BYTES  HITS
systemInstruction[0]                            1959     0
systemInstruction[1]                             114     0
systemInstruction[2]                           27938     0
systemInstruction[3]                             238     0
contents[0]:user                                   2     0
contents[0]:user                                1503     0
tools                                           7539     2
TOTAL                                          39293     2

Los 2 hits restantes son la descripcion del subagente pentest dentro de tools; medido, no bloquea por si sola.

Verificacion

  • npx tsc --noEmit limpio.
  • npx vitest run: 42 archivos, 1150 tests (+3: forma del documento, escritura sin valores de cabecera, no-op con debug apagado).
  • npm run build y dist/ regenerado en el mismo commit.
  • Prueba en vivo del dump y del scanner --capture contra el archivo generado.

The v2 path never logged the request it sent, so debug produced an empty log and
the only way to inspect the final body was patching the plugin. Each request now
overwrites antigravity-logs/last-request.json with URL, model id, header names and
the full body; antigravity-preflight --capture reads that file and reports what
reaches the model, part by part.
@github-actions

Copy link
Copy Markdown

Automated verification

Check Result
typecheck success
tests success
build + dist success
branch clean
typecheck

> opencode-antigravity-auth@2.4.2 typecheck
> tsc --noEmit

tests

> opencode-antigravity-auth@2.4.2 test
> vitest run


�[1m�[30m�[46m RUN �[49m�[39m�[22m �[36mv5.0.5 �[39m�[90m/home/runner/work/opencode-antigravity-auth/opencode-antigravity-auth�[39m

 �[32m✓�[39m src/plugin/transform/gemini.test.ts �[2m(�[22m�[2m130 tests�[22m�[2m)�[22m�[32m 36�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/accounts.test.ts �[2m(�[22m�[2m110 tests�[22m�[2m)�[22m�[32m 73�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/request-helpers.test.ts �[2m(�[22m�[2m152 tests�[22m�[2m)�[22m�[32m 67�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/claude.test.ts �[2m(�[22m�[2m67 tests�[22m�[2m)�[22m�[32m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/quota.test.ts �[2m(�[22m�[2m23 tests�[22m�[2m)�[22m�[32m 52�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/request.test.ts �[2m(�[22m�[2m110 tests�[22m�[2m)�[22m�[32m 82�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/rotation.test.ts �[2m(�[22m�[2m59 tests�[22m�[2m)�[22m�[32m 43�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/cross-model-sanitizer.test.ts �[2m(�[22m�[2m28 tests�[22m�[2m)�[22m�[32m 8�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/transform/model-resolver.test.ts �[2m(�[22m�[2m55 tests�[22m�[2m)�[22m�[32m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/updater.test.ts �[2m(�[22m�[2m18 tests�[22m�[2m)�[22m�[32m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/storage.test.ts �[2m(�[22m�[2m22 tests�[22m�[2m)�[22m�[32m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/cross-model-integration.test.ts �[2m(�[22m�[2m14 tests�[22m�[2m)�[22m�[32m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/stores/signature-store.test.ts �[2m(�[22m�[2m30 tests�[22m�[2m)�[22m�[32m 9�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/persist-account-pool.test.ts �[2m(�[22m�[2m38 tests�[22m�[2m | �[22m�[90m25 todo�[39m�[2m)�[22m�[32m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/thinking-recovery.test.ts �[2m(�[22m�[2m29 tests�[22m�[2m)�[22m�[32m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/model-discovery.test.ts �[2m(�[22m�[2m44 tests�[22m�[2m)�[22m�[32m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/cache.test.ts �[2m(�[22m�[2m25 tests�[22m�[2m)�[22m�[32m 18�[2mms�[22m�[39m
 �[32m✓�[39m src/hooks/auto-update-checker/index.test.ts �[2m(�[22m�[2m11 tests�[22m�[2m)�[22m�[32m 17�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/antigravity-first-fallback.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/v2/adapter.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[32m 31�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/version.test.ts �[2m(�[22m�[2m15 tests�[22m�[2m)�[22m�[32m 47�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/recovery.test.ts �[2m(�[22m�[2m30 tests�[22m�[2m)�[22m�[32m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/model-entitlements.test.ts �[2m(�[22m�[2m9 tests�[22m�[2m)�[22m�[32m 5�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/auth.test.ts �[2m(�[22m�[2m19 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/hooks/auto-update-checker/checker.test.ts �[2m(�[22m�[2m12 tests�[22m�[2m)�[22m�[32m 30�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/refresh-queue.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 7�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/debug.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[32m 16�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/quota-fallback.test.ts �[2m(�[22m�[2m10 tests�[22m�[2m)�[22m�[32m 156�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/search.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[32m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/errors.test.ts �[2m(�[22m�[2m16 tests�[22m�[2m)�[22m�[32m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/safety.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/ui/auth-menu.test.ts �[2m(�[22m�[2m12 tests�[22m�[2m)�[22m�[32m 23�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/model-specific-quota.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 8�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/logging-utils.test.ts �[2m(�[22m�[2m7 tests�[22m�[2m)�[22m�[32m 26�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/core/streaming/safety-shield.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 10�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/historical-pruning.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 5�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/ui/ansi.test.ts �[2m(�[22m�[2m13 tests�[22m�[2m)�[22m�[32m 5�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/token.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 26�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/models.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 4�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/logger.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[32m 11�[2mms�[22m�[39m
 �[32m✓�[39m src/plugin/config/schema.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 8�[2mms�[22m�[39m
 �[32m✓�[39m src/constants.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[32m 4�[2mms�[22m�[39m

�[2m Test Files �[22m �[1m�[32m42 passed�[39m�[22m�[90m (42)�[39m
�[2m      Tests �[22m �[1m�[32m1150 passed�[39m�[22m�[2m | �[22m�[90m25 todo�[39m�[90m (1175)�[39m
�[2m   Start at �[22m 05:26:21
�[2m   Duration �[22m 2.93s�[2m (import 40%, transform 31%, tests 23%, worker 6%)�[22m

�[2m    Isolate �[22m �[33m42 workers spawned�[39m�[2m · ~92ms startup each (spawn + environment, per file)�[22m
�[2m            �[22m �[2mat least ~1.19s faster with �[22m�[33misolate: false�[39m�[2m — reuses workers across files instead of one per file�[22m

build

> opencode-antigravity-auth@2.4.2 build
> tsc -p tsconfig.build.json

@JoshRob297
JoshRob297 marked this pull request as ready for review October 31, 2026 05:33
@JoshRob297
JoshRob297 merged commit dba7ff7 into main Oct 31, 2026
1 check passed
@JoshRob297
JoshRob297 deleted the feat/request-audit branch October 31, 2026 05:33
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.

1 participant