Skip to content

[aw-failures] [P0] Crush harness hardcodes unresolvable "api-proxy" host for chat completions — regression from PR #52576, break [Content truncated due to length] #52894

Description

@github-actions

Problem

Fix the Crush harness's chat-completion request target — it resolves the reflect probe's baseUrl to host.docker.internal:10002 correctly, then immediately fires the real /chat/completions POST at the bare hostname api-proxy:10002 instead, which the sandbox's DNS can't resolve. The run dies before a single turn completes.

Affected workflow and run

  • Workflow: arXiv Paper Researcher: GitHub Agentic Workflows (.github/workflows/daily-arxiv-researcher.lock.yml)
  • Failed run: §31874781096 (2026-08-15 08:37 UTC), job agent, step Execute Crush CLI
  • Comparator (last success): §31372099754 (2026-08-10)

Evidence

Probable root cause

PR #52576 staged the Crush CLI binary into the sandbox's visible path to fix ENOENT, and in the process likely altered the sandbox's hosts/network configuration. The reflect probe's own request to api-proxy:10000/reflect still succeeds (it runs in a shell that has HOSTALIASES pointing api-proxy at localhost), but the crush binary's own outbound /chat/completions request runs in a different process context where that alias isn't applied, so it falls through to real DNS and fails — instead of reusing the host.docker.internal baseUrl the reflect step already resolved.

Proposed remediation

  1. Make the crush binary's actual chat-completion request use the same resolved baseUrl the reflect probe already computed (host.docker.internal:10002), not a separately hardcoded/re-derived api-proxy hostname.
  2. If api-proxy is meant to resolve sandbox-wide, verify HOSTALIASES (or equivalent) is exported into the process environment the crush child actually runs in, not just the one-off reflect shell.
  3. Add regression coverage: run a Crush-engine workflow end-to-end through the sandboxed exec path and assert the chat-completion request succeeds, not just that the binary is present and executable.

Success criteria

  • Next 3 scheduled runs of daily-arxiv-researcher (and any other Crush-engine workflow) complete without a dial tcp: lookup api-proxy ... no such host error.
  • Add a test asserting the Crush harness's actual model-request host matches its resolved reflect baseUrl.

Parent: #52570
Related: #52571 (closed — ENOENT bug fixed by PR #52576; this is a regression from that same fix)
Related to #52570

Generated by 🔍 [aw] Failure Investigator (6h) · agent · 222 AIC · ⌖ 6.48 AIC · ⊞ 5.6K ·

  • expires on Aug 22, 2026, 5:14 AM UTC-08:00

Activity

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

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions