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
In network-isolation / topology mode, when a workflow also brings up Tailscale, the api-proxy's egress CONNECT to api.githubcopilot.com:443 fails at Squid with 503 TCP_TUNNEL:HIER_NONE. The request never leaves the sandbox, so the Copilot engine reports Failed to get response from the AI model; retried 5 times … Last error: 503 Service Unavailable and the agent job fails.
The same workflow works on the older host-access stack, and a non-Tailscale workflow works in the same isolation mode — so it's the isolation-mode × Tailscale combination, not the Copilot API, the model, or the request.
Where observed
Workflow:github/copilot-code-review → datadog-alert-triage (Copilot engine, claude-opus-4.8). It brings up Tailscale via github/setup-tailscale to reach 5 Splunk *.ts.net MCP servers, plus Datadog/Sentry/Kusto/GitHub MCP.
Reproduced on gh-aw v0.82.15, v0.83.1, v0.83.4 (api-proxy 0.27.37 → 0.27.42, Copilot CLI 1.0.71 → 1.0.75). Works on main's stack (gh-aw v0.81.6, api-proxy 0.27.11, host-access mode).
Evidence
Squid access log — failing run (api-proxy 0.27.37): every CONNECT to the Copilot API fails:
api-proxy OTEL span (failing): GET /models → http.response.status_code: 503 (the proxy just propagates the Squid CONNECT failure; the fatal one is the chat request).
no — github/copilot-metricsproject-triage, claude-opus-4.8, succeeds daily
✅
isolation/topology (0.27.37–0.27.42)
yes — our workflow
❌ 503 HIER_NONE
This rules out: the Copilot API (never receives the request), the model / retirement (isModelNotSupportedError=false; opus-4.8 serves fine elsewhere), request size (the CONNECT fails before any payload), and repo/token (works on host-access with identical secrets). The only differentiator is isolation-mode + Tailscale.
Suspected root cause
In isolation/topology mode the agent + api-proxy egress traverses Squid with no host route (per #6657). When Tailscale comes up it rewrites routing/DNS; in the isolated topology this appears to black-hole the route/resolution to api.githubcopilot.com, so Squid has no forwarding path for the CONNECT and returns HIER_NONE. In host-access mode the host route sidestepped the collision. (HIER_NONE is a forward/resolve failure, distinct from an ACL TCP_DENIED.) Maintainers can confirm the exact interaction — e.g. whether Tailscale is capturing the default route or the Azure DNS (168.63.129.16) path used by Squid.
Blocks upgrading github/copilot-code-review's opus-based FR/alert-triage fleet past the current host-access stack — every newer stack tested 503s. Any Tailscale-using workflow in isolation mode is likely affected.
Possible mitigations to validate
Exclude allowlisted external egress domains (e.g. *.githubcopilot.com) from Tailscale's route table / DNS interception when isolation mode is active.
Bring Tailscale up so it doesn't capture the default route / DNS resolver Squid uses for egress.
Problem
In network-isolation / topology mode, when a workflow also brings up Tailscale, the api-proxy's egress
CONNECTtoapi.githubcopilot.com:443fails at Squid with503 TCP_TUNNEL:HIER_NONE. The request never leaves the sandbox, so the Copilot engine reportsFailed to get response from the AI model; retried 5 times … Last error: 503 Service Unavailableand theagentjob fails.The same workflow works on the older host-access stack, and a non-Tailscale workflow works in the same isolation mode — so it's the isolation-mode × Tailscale combination, not the Copilot API, the model, or the request.
Where observed
github/copilot-code-review→datadog-alert-triage(Copilot engine,claude-opus-4.8). It brings up Tailscale viagithub/setup-tailscaleto reach 5 Splunk*.ts.netMCP servers, plus Datadog/Sentry/Kusto/GitHub MCP.v0.82.15,v0.83.1,v0.83.4(api-proxy0.27.37→0.27.42, Copilot CLI1.0.71→1.0.75). Works onmain's stack (gh-awv0.81.6, api-proxy0.27.11, host-access mode).Evidence
Squid access log — failing run (api-proxy 0.27.37): every CONNECT to the Copilot API fails:
→ 56/56 CONNECTs =
503.Same workflow, working run (api-proxy 0.27.11, host-access): 42/42 CONNECTs =
200.Resolved firewall config diff (
audit/awf-resolved-config.json):networkIsolationtruefalseenableHostAccessfalsetrueapi-proxy OTEL span (failing):
GET /models→http.response.status_code: 503(the proxy just propagates the Squid CONNECT failure; the fatal one is the chat request).Copilot harness classification:
failureClass=partial_execution,isModelNotSupportedError=false,isCAPIQuotaExceededError=false,isAuthError=false.Environment: Squid 6.14;
nameserver 168.63.129.16(Azure DNS).Run IDs (
github/copilot-code-reviewActions):304016441333039796830430390759136,3039422905530393390874,30402440480Isolation matrix (what rules causation in/out)
api.githubcopilot.comegress200github/copilot-metricsproject-triage,claude-opus-4.8, succeeds daily503 HIER_NONEThis rules out: the Copilot API (never receives the request), the model / retirement (
isModelNotSupportedError=false; opus-4.8 serves fine elsewhere), request size (the CONNECT fails before any payload), and repo/token (works on host-access with identical secrets). The only differentiator is isolation-mode + Tailscale.Suspected root cause
In isolation/topology mode the agent + api-proxy egress traverses Squid with no host route (per #6657). When Tailscale comes up it rewrites routing/DNS; in the isolated topology this appears to black-hole the route/resolution to
api.githubcopilot.com, so Squid has no forwarding path for the CONNECT and returnsHIER_NONE. In host-access mode the host route sidestepped the collision. (HIER_NONEis a forward/resolve failure, distinct from an ACLTCP_DENIED.) Maintainers can confirm the exact interaction — e.g. whether Tailscale is capturing the default route or the Azure DNS (168.63.129.16) path used by Squid.Related
topologyAttachhosts (internal MCP gateway blocked). Likely a sibling gap in topology-mode egress/ACL handling.Impact
Blocks upgrading
github/copilot-code-review's opus-based FR/alert-triage fleet past the current host-access stack — every newer stack tested503s. Any Tailscale-using workflow in isolation mode is likely affected.Possible mitigations to validate
*.githubcopilot.com) from Tailscale's route table / DNS interception when isolation mode is active.Filed after an end-to-end investigation; happy to share full firewall log artifacts or run a controlled Tailscale-removed repro on request.