{"version":"2.1.265","anchor":"new-relay-unavailable-statuslatch-state-for-artifact-sync","canonical_anchor":"new-relay-unavailable-statuslatch-state-for-artifact-sync","heading":"Artifact sync now reads sandbox network-egress state from relay responses","tier":"internal","area":"Artifacts","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.265\/e\/new-relay-unavailable-statuslatch-state-for-artifact-sync","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.265","markdown":"### Artifact sync now reads sandbox network-egress state from relay responses\n\nArtifact sync now reads an x-ccr-sandbox-egress header from relay responses and caches per-artifact sandbox network-egress status\n\n**What**\n\n- Artifact sync's status-reason handling gains a new `relay_unavailable` state (with a corresponding \"latched\" variant), alongside the existing `no_originator`\/`subscribe_forbidden` states.\n\n- A new `x-ccr-sandbox-egress` response header is now read from relay routes, with recognized values `disabled`, `restricted`, or `unrestricted`. The value is recorded per artifact (by slug) with a 10-minute freshness window, and is read back to decide whether sandbox network access should be reported as disabled for that artifact.\n\n**Why**\n\nThis lets Claude Code reflect the actual, current sandbox network-egress restrictions for an artifact based on what the relay reports, and gives a clearer signal (`relay_unavailable`) when the relay itself can't be reached.\n\n- Area: Artifacts\n- Names: `x-ccr-sandbox-egress`\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}