{"version":"2.1.246","anchor":"artifact-traffic-can-take-a-direct-tunnel-off-unless-the-hos","canonical_anchor":"artifact-traffic-can-take-a-direct-tunnel-off-unless-the-hos","heading":"Artifact traffic can take a direct tunnel, off unless the host environment names hosts","tier":"soon","area":"Artifacts","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246\/e\/artifact-traffic-can-take-a-direct-tunnel-off-unless-the-hos","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246","markdown":"### Artifact traffic can take a direct tunnel, off unless the host environment names hosts\n\nArtifact traffic can take a direct tunnel when the runner environment names hosts; local runs keep the old route.\n\n**What**\n\nArtifact publish, upload, comment and blob requests now go through a wrapper that first tries a direct tunnel and falls back to the existing gateway route when the tunnel is declined, refused, never opened, or errors. The tunnel is only offered when the environment variable `CCR_AGENT_PROXY_FRAME_HOSTS` is set and parses as a hostname list. Nothing in Claude Code writes that variable; it is supplied by the runner environment, so ordinary local runs keep the old path entirely.\n\n**Details**\n\n- The tunnel route uses a proxy agent with no auth; the fallback route uses the session token against the existing gateway host.\n- Each failure writes a telemetry event recording why the tunnel was not used, and successful relays over the tunnel are flagged as such.\n- The variable is new in this build and sits among the other runner-supplied agent-proxy variables.\n\n**Evidence**\n\n`[frame-tunnel] CCR_AGENT_PROXY_FRAME_HOSTS is malformed; keeping the gateway routes`\n\n- Area: Artifacts\n- Names: `CCR_AGENT_PROXY_FRAME_HOSTS`\n- Tier: Nothing to try yet\n- Useful: 2\/5\n- Signal: 3\/5\n- Present in the build but not switched on"}