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
{{ message }}
Repository navigation
agy-proxy: bridge drops tool schemas — the workhorse-primary agy leg cannot execute tools and masks it as success (Codex P1 on #2200, now on main) #2270
The agy bridge drops tool schemas: bin/agy-proxy.mjs formats only body.messages, never forwards the caller's offered tool schemas, and emits only content with finish_reason: 'stop' — so OpenCode can never receive structured tool calls through this leg, and because the responses look successful, no failover triggers. Tool-dependent workhorse jobs routed here silently cannot complete. Codex flagged this as a P1 on PR #2200 (the Gemini-burn PR, which added agy to the workhorse primary pool, sending roughly half of primary selections through this bridge). PR #2200 has since merged (2026-10-29), so this defect is on main today.
Require tool-call support before adding agy to the primary pool
For workhorse tasks that need the caller's tools, this new leg routes roughly half of primary selections through a text-only bridge. bin/agy-proxy.mjs formats only body.messages (lines 865–867), never forwards the offered tool schemas, and emits only content with finish_reason: 'stop' (lines 1022–1028 and 1054–1060), so OpenCode cannot receive structured tool calls. These responses appear successful rather than triggering failover, leaving tool-dependent jobs unable to complete their work. Add tool-call translation to the bridge or keep this provider out of the primary pool until it supports it.
Finding: #2200 (comment) (filed against .opencode/opencode.jsonc line 6626, PR #2200)
Fix direction (as Codex prescribed)
Either add tool-call translation to bin/agy-proxy.mjs (forward tool schemas; translate model tool calls into OpenAI tool_calls with a truthful finish_reason), or keep this provider out of the workhorse primary pool until it supports it. Note #865 (closed) fixed the same defect class for the sibling antigravity-ls-proxy; this issue is the agy-proxy bridge specifically.
Source
Codex review-value audit 2026-10-29 (research_notes/codex-review-value-20261029/findings.md §2, best catch #5): classified REAL-CATCH; PR #2200 merged 2026-10-29 with the finding unacted, so the defect is on main. Verification: defect confirmed present on main 2026-10-29.
Acceptance criteria
The agy bridge forwards the caller's offered tool schemas and emits structured tool calls OpenCode can execute — or agy is removed from the workhorse primary pool until it does
A tool-dependent workhorse job routed through the agy leg completes with real tool calls (evidence linked), and a text-only response can no longer masquerade as success for a tool-requiring request
The masking is gone: when the bridge cannot honour tools, the response fails over instead of returning finish_reason 'stop' content
Related: PR #2200 (merged — added agy to the workhorse primary pool; Codex P1 finding r4410496158 quoted in the body)
Notes: Filed from the Codex P1 on PR #2200, which merged 2026-10-29, so the defect is on main: bin/agy-proxy.mjs formats only body.messages (lines 865–867), never forwards tool schemas, and emits only content with finish_reason 'stop' (lines 1022–1028, 1054–1060) — roughly half of workhorse-primary selections route through a leg that cannot execute tools and looks successful doing it. Already labelled kind/bug, priority/high, effort/m by the filer; this pass appends acceptance criteria and marks enriched.
Risks: Silent incapacity is worse than failure: jobs burn their full budget producing plausible text instead of failing over to a capable leg.
Suggested approach: Either implement tool-call translation in the bridge (schema forwarding + structured emission), or pull agy from the primary pool until that lands — the pool change is the xs stopgap, the translation is the fix.
🤖 Agent note · filed
Agent: fleet monitor (repo-fleet-monitor)
Session / ID: repo-fleet-monitor run 2026-10-30T02:12Z (2026-10-29 21:12 CDT)
Found via: monitor reconciliation
Task: Duty 2 intake enrichment — labels normalized and meta/enriched applied; acceptance criteria appended to the body only where no acceptance section existed (original body preserved verbatim above it). Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found in this pass's search.
Expectation: see the effort label; done = the acceptance criteria are met.
Verdict (2026-11-02, task 3425): resolved via the removal branch — no code change needed
Codex's prescription was translation OR removal from the primary pool. Removal happened (Drew's pool edits + the 2026-10-30 Antigravity retirement). Verified at HEAD + deployed state on amd:
agy out of the primary pool:workhorse-primary targets are now exactly openai-plan/gpt-6-luna#xhigh + muse-direct/muse-spark-1.3-contributor#xhigh (.opencode/opencode.jsonc:4106+). The antigravity-agy/gemini-4-argon leg added by TEMPORARY: workhorse primary adds Antigravity Gemini 4 Argon to the burn round-robin (#2173) #2200 is gone (traced through the 10-29→11-02 seat comments; no Antigravity leg remains in primary).
Masking impossible: provider antigravity-agy sits in disabled_providers (opencode.jsonc:158-159; "a provider is ON unless listed"); no enabled seat references it. bin/agy-proxy.mjs remains in-repo as history, uninvoked — no unit (removed with the retirement), and :18743 has no localhost listener, so no traffic can reach the bridge. A tool-requiring request can no longer be answered with fake-success content from this leg.
Sibling door retired too:antigravity-ls-proxy likewise removed; single Antigravity door is antigravity-direct on :18751 (active, serving).
Cosmetic leftovers (NOT this defect — no traffic impact, noted for whoever touches those files): home/openclaw/default.nix:101 still lists agy-proxy.service in openclaw-gateway's After= (ordering-only, benign), and the stale proxy-supervisor comment above it; home/common/default.nix:1645+ still ships agy-proxy/antigravity-ls-proxy CLI shims around the retired bridges.
Closing as already-done via removal. Reopen if agy is ever re-seated in a primary pool without tool-call translation.
🤖 Agent note · done
Agent: queue worker (repo-worker-code), openchamber scheduled lane c29174f1
Session / ID: task 3425
Found via: queue claim + HEAD config audit + live laptop probe
Activity
developing-today commentedon Oct 29, 2026
CODE-1133
dezren39 commentedon Oct 30, 2026
Intake review
Related: PR #2200 (merged — added agy to the workhorse primary pool; Codex P1 finding r4410496158 quoted in the body)
Notes: Filed from the Codex P1 on PR #2200, which merged 2026-10-29, so the defect is on main:
bin/agy-proxy.mjsformats onlybody.messages(lines 865–867), never forwards tool schemas, and emits only content with finish_reason 'stop' (lines 1022–1028, 1054–1060) — roughly half of workhorse-primary selections route through a leg that cannot execute tools and looks successful doing it. Already labelled kind/bug, priority/high, effort/m by the filer; this pass appends acceptance criteria and marks enriched.Risks: Silent incapacity is worse than failure: jobs burn their full budget producing plausible text instead of failing over to a capable leg.
Suggested approach: Either implement tool-call translation in the bridge (schema forwarding + structured emission), or pull agy from the primary pool until that lands — the pool change is the xs stopgap, the translation is the fix.
🤖 Agent note · filed
meta/enrichedapplied; acceptance criteria appended to the body only where no acceptance section existed (original body preserved verbatim above it). Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found in this pass's search.dezren39 commentedon Nov 2, 2026
Verdict (2026-11-02, task 3425): resolved via the removal branch — no code change needed
Codex's prescription was translation OR removal from the primary pool. Removal happened (Drew's pool edits + the 2026-10-30 Antigravity retirement). Verified at HEAD + deployed state on amd:
workhorse-primarytargets are now exactlyopenai-plan/gpt-6-luna#xhigh+muse-direct/muse-spark-1.3-contributor#xhigh(.opencode/opencode.jsonc:4106+). Theantigravity-agy/gemini-4-argonleg added by TEMPORARY: workhorse primary adds Antigravity Gemini 4 Argon to the burn round-robin (#2173) #2200 is gone (traced through the 10-29→11-02 seat comments; no Antigravity leg remains in primary).antigravity-agysits indisabled_providers(opencode.jsonc:158-159; "a provider is ON unless listed"); no enabled seat references it.bin/agy-proxy.mjsremains in-repo as history, uninvoked — no unit (removed with the retirement), and :18743 has no localhost listener, so no traffic can reach the bridge. A tool-requiring request can no longer be answered with fake-success content from this leg.antigravity-ls-proxylikewise removed; single Antigravity door isantigravity-directon :18751 (active, serving).Cosmetic leftovers (NOT this defect — no traffic impact, noted for whoever touches those files):
home/openclaw/default.nix:101still listsagy-proxy.serviceinopenclaw-gateway'sAfter=(ordering-only, benign), and the stale proxy-supervisor comment above it;home/common/default.nix:1645+still shipsagy-proxy/antigravity-ls-proxyCLI shims around the retired bridges.Closing as already-done via removal. Reopen if agy is ever re-seated in a primary pool without tool-call translation.
🤖 Agent note · done