Skip to content

network: direct egress reaches relays configured by literal address - #53

Merged
rlrs merged 1 commit into
mainfrom
fix/literal-relay-direct-egress
Oct 31, 2026
Merged

rlrs merged 1 commit into
mainfrom
fix/literal-relay-direct-egress

Conversation

@rlrs

@rlrs rlrs commented Oct 31, 2026

Copy link
Copy Markdown
Owner

Open-network (direct-egress) sandboxes reach a relay through bridge_forward, which marks the relay's flows so they get past the private-destination denies. A relay configured by literal IP got no bridge rules at all ("its virtual address is that address"), so its flows were never marked and 10.0.0.0/8 DROP took them.

Hetzner configures its relays by IP because it has no private DNS. Every eval harness in an open-network sandbox there timed out connecting to the model relay (swebench-verified, terminal-bench-2, openthoughts-tblite, senior-swe-bench).

  • Literal relays now get a bridge_forward mark rule. They need no translation.
  • The test that pinned the old behaviour now asserts the mark rule.

Prod is already worked around with sandbox.direct_network_allow_tcp. Once this ships in a worker bundle, that setting can go.

🤖 Generated with Claude Code

A relay named by IP got no bridge rules, so its flows never carried the
relay forward mark and the private-destination denies dropped them: an
open-network sandbox could not reach a literal relay at all. Hetzner names
its relays by IP (no private DNS), so evals there timed out connecting to
the model relay. Mark those flows too; no translation is needed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rlrs
rlrs merged commit bd446b2 into main Oct 31, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant