8000 T116 — Carry dns-steered TLS to the proxy on port 443 by minimal-foundry[bot] · Pull Request #2860 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T116 — Carry dns-steered TLS to the proxy on port 443 - #2860

Merged
norrietaylor merged 13 commits into
mainfrom
agent/2805-carry-dns-steered-tls-to-the-proxy-on-port-443
Nov 3, 2026
Merged

norrietaylor merged 13 commits into
mainfrom
agent/2805-carry-dns-steered-tls-to-the-proxy-on-port-443

Conversation

@minimal-foundry
@minimal-foundry minimal-foundry Bot commented Nov 2, 2026 •
Copy link
Copy Markdown
Contributor

T116 — Carry dns-steered TLS to the proxy on port 443

slice: S16
kind: task
covers: BEP-080
size: L
est: 320 code, 380 tests
executor: agent
difficulty: needs care
model: standard
diagnostics: min box audit <box> shows a request that arrived as direct TLS on port 443 with the SNI authority it was routed to, and a refused one marked off_module; a dns-steered GitHub grant box on a VM host is created, where before it was refused with exit 3 (#2805)
observability: the proxy's existing per-request audit record and its debug line carry the entry form, connect or direct_tls, beside the authority
layers:
- proxy:
- crates/bep/src/proxy.rs: a connection whose first bytes are a TLS ClientHello, not a CONNECT or an absolute-form request, takes its authority from the SNI and enters the same termination, substitution and egress re-check a CONNECT to that authority enters; no SNI, or an SNI outside the module host sets and the registered store authorities, is refused off_module
test: cargo nextest run -p bep direct_tls_on_443_routes_by_sni
test: cargo nextest run -p bep direct_tls_without_admitted_sni_is_refused_off_module
- listener:
- crates/switch/src/bep_host.rs: the proxy's address takes TCP connections on port 443 beside PROXY_PORT, delivered to the proxy with the same box attribution, and the pool counts both ports as one lane
test: cargo nextest run -p switch proxy_address_delivers_port_443_with_box_attribution
- relay:
- crates/boxes/src/core/egress.rs: proxy_lane_admits admits TCP 443 at the proxy's address for a box that declares a credentialed upstream, beside the listener's port, and nothing else; UDP 443 there stays rejected
test: cargo nextest run -p boxes proxy_lane_admits_tls_443_and_listener_port_only
- activation:
- crates/boxes/src/core/bep.rs: the interim refusal DnsWithoutDirectTls and its test go, so dns is admitted wherever the host fact box_zone_resolver is true
test: cargo nextest run -p boxes dns_steering_is_admitted_with_the_resolver_and_no_interim_refusal
produces: none
consumes: none
proof: On a VM host, a box with steering = "dns" and no proxy variables opens TLS to github.com, the proxy routes it by its SNI and substitutes the sealed value, and a ClientHello naming another host is refused and audited off_module.

Background, from the issue as first filed

Under dns steering the box-zone gate answers a credentialed name, such as github.com, with the Box Egress Proxy's address, and HTTPS_PROXY is not set (BEP-012). The client then opens TCP 443 to that address. Today nothing on that path can carry the connection:

  • The relay admits only TCP 8118 at the proxy's address (proxy_lane_admits, crates/boxes/src/core/egress.rs). TCP 443 there is dropped as UncredentialedProxyDestination.
  • The proxy listens only on 8118 (crates/switch/src/bep_host.rs, PROXY_PORT). It accepts only CONNECT or absolute-form http:// requests (crates/bep/src/proxy.rs), and never reads a bare TLS ClientHello.

So dns steering stays refused with exit 3 (BEP-017) even on the VM host. Under the owner's decision of 2026-10-31 on #2797, T113 admits only both there.

To admit dns, the work is:

  1. A listener at the proxy's address on TCP 443 that takes a TLS connection without CONNECT and routes it by SNI.
  2. The matching relay opening, scoped to the same (address, port, protocol) triple and the credentialed-lane declaration (NET-134).
  3. Admitting dns in host_resolves_box_names once both are in place.
  4. A live proof: git clones a private repository over dns steering with no proxy variables in the box.

Epic #1501. Spec: docs/specs/24-spec-box-egress-proxy/24-spec-box-egress-proxy.md (BEP-016, BEP-017, BEP-062, BEP-078).

Refs #2787 (T115)

When this lands, run ./scripts/session-e2e.sh bep_dns_steering_through_the_box_zone_resolver (added by #2829) on a macOS VM host with the live proxy. The store and fail_closed legs must print PASS, and git must print PASS where a GitHub sign-in and E2E_BEP_PRIVATE_REPO are set. T115 (#2787) stays open until that run passes, and is then closed by hand from a comment that links the run.

Proof

In the tests on this branch, a box connection on port 443 that opens with a TLS ClientHello for api.github.com, with no CONNECT and no proxy variables, completes TLS under the interception root. The proxy dials the upstream that the SNI names, and the upstream gets the real credential in place of the sealed value. A ClientHello for example.com, or one with no SNI, is closed with nothing dialed, and the audit log that min box audit reads records it off_module. The switch delivers port 443 at the proxy address with the box's own id, and the relay admits TCP 443 there for a credentialed lane. A dns-steered GitHub grant box on a VM host (own_ip) is now admitted where before it was refused with exit 3. No run on a real VM host took place in this session, so the end-to-end proof with github.com is still owed to just e2e (proof_bep_dns_steering_through_the_box_zone_resolver).

Notes from the agent: Files touched outside the layers, each one a direct result of the task:

  • crates/minimal/src/cmd/box_spec.rs: removed the BepRefusal::DnsWithoutDirectTls match arm. Without this change the crate does not compile after the variant goes. Also updated one stale T116 — Carry dns-steered TLS to the proxy on port 443 #2805 comment.
  • crates/minimal/src/cmd/boxes/create.rs: the test dns_steering_is_admitted_where_the_switch_resolves_boxes asserted the interim refusal text. It now expects dns to be admitted like both. Also updated the stale T116 — Carry dns-steered TLS to the proxy on port 443 #2805 doc comment on host_resolves_box_names.
  • crates/minvmd/src/net/egress_gate.rs (credentialed_box_dropped_at_proxy_address_other_port) and crates/minimald/src/net/switch.rs (compiled_egress_carries_the_credentialed_lane) used TCP 443 at the proxy address as the refused 'other port' for a laned box. They now probe 444. Both tests pass, and so do the minvmd and minimald egress, bep and proxy filters (196 and 177 tests).

Inside the layers:

  • egress.rs: the Kani oracle in kani_proofs restates the lane, so it now admits 443 too. I did not run Kani (lane ci-kani). `sw…[truncated]

Tests

line exit tail
cargo nextest run -p bep direct_tls_on_443_routes_by_sni 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-80ef... Compiling paths v0.0.1 (/workbench/crates/paths) Compiling client-config v0.0.1 (/workbench/crates/client-config) Compiling bep v0.0.1 (/workbench/crates/bep) Finished 'test
cargo nextest run -p bep direct_tls_without_admitted_sni_is_refused_off_module 0 Applying loadouts: default Running task runtime-implement-test-1 in session task-runtime-implement-test-1-bcbc... Finished 'test' profile [unoptimized] target(s) in 0.27s ──────────── Nextest run ID a6be0ea4-44c9-4c88-9503-4b2a4b8b5b9a with nextest profile: default Starting 1 test across 2
cargo nextest run -p switch proxy_address_delivers_port_443_with_box_attribution 0 Applying loadouts: default Running task runtime-implement-test-2 in session task-runtime-implement-test-2-75ad... Compiling switch v0.0.1 (/workbench/crates/switch) Finished 'test' profile [unoptimized] target(s) in 4.35s ──────────── Nextest run ID 4afa95f1-e420-4192-b68d-b1dbbd1d3966 with
cargo nextest run -p boxes proxy_lane_admits_tls_443_and_listener_port_only 0 Applying loadouts: default Running task runtime-implement-test-3 in session task-runtime-implement-test-3-4fb6... Compiling args v0.0.1 (/workbench/crates/args) Compiling ot v0.0.1 (/workbench/crates/ot) Compiling paths v0.0.1 (/workbench/crates/paths) Compiling client-config v0.0.1 (/wo
cargo nextest run -p boxes dns_steering_is_admitted_with_the_resolver_and_no_interim_refusal 0 Applying loadouts: default Running task runtime-implement-test-4 in session task-runtime-implement-test-4-18d9... Finished 'test' profile [unoptimized] target(s) in 0.44s ──────────── Nextest run ID 65a9f72b-6745-44c8-9c03-a44766aa62a1 with nextest profile: default Starting 1 test across 3

Verify

min task run agent-verify exited 101 under rustc 1.99.0, which the repository does not pin (1.99.1 in rust-toolchain.toml); the PR is not a draft on that alone — CI, which honours the pin, is the gate.

uild-cache/cargo-home/build/debug/deps/libserial_test-616c86b3b044ed08.rlib --extern sha2=/work/build-cache/cargo-home/build/debug/deps/libsha2-405f5187d962ed1a.rlib --extern size=/work/build-cache/cargo-home/build/debug/deps/libsize-e57ebc05cac6ccb3.rlib --extern stdlib=/work/build-cache/cargo-home/build/debug/deps/libstdlib-adde19c7d458ae99.rlib --extern switch=/work/build-cache/cargo-home/build/debug/deps/libswitch-9a11b0ea1c9a0e12.rlib --extern sysinfo=/work/build-cache/cargo-home/build/debug/deps/libsysinfo-82e2106fbfb32fa0.rlib --extern tar=/work/build-cache/cargo-home/build/debug/deps/libtar-d8cf8e5bef99c1a6.rlib --extern tempfile=/work/build-cache/cargo-home/build/debug/deps/libtempfile-671c90d0d5c2c496.rlib --extern thiserror=/work/build-cache/cargo-home/build/debug/deps/libthiserror-31ad7b029b93b712.rlib --extern tokio=/work/build-cache/cargo-home/build/debug/deps/libtokio-a9eca338333a2325.rlib --extern tokio_util=/work/build-cache/cargo-home/build/debug/deps/libtokio_util-c623093db2043123.rlib --extern tokio_vsock=/work/build-cache/cargo-home/build/debug/deps/libtokio_vsock-1b22471493ad6549.rlib --extern tracing=/work/build-cache/cargo-home/build/debug/deps/libtracing-be36af57e81cc6b6.rlib --extern tracing_appender=/work/build-cache/cargo-home/build/debug/deps/libtracing_appender-a781743e4fae0de5.rlib --extern tracing_opentelemetry=/work/build-cache/cargo-home/build/debug/deps/libtracing_opentelemetry-75005db83331e3e9.rlib --extern tracing_subscriber=/work/build-cache/cargo-home/build/debug/deps/libtracing_subscriber-ac6841183ad66e15.rlib --extern uuid=/work/build-cache/cargo-home/build/debug/deps/libuuid-19bd2dbddf178337.rlib --extern version=/work/build-cache/cargo-home/build/debug/deps/libversion-ee2066c0d67b2e56.rlib --extern vsock=/work/build-cache/cargo-home/build/debug/deps/libvsock-c2be0d0dc103bb93.rlib --extern vt100=/work/build-cache/cargo-home/build/debug/deps/libvt100-060d3379d50b0dbc.rlib --extern walkdir=/work/build-cache/cargo-home/build/debug/deps/libwalkdir-78bf723f3e841c1f.rlib --extern zstd=/work/build-cache/cargo-home/build/debug/deps/libzstd-b7c20e74c54f6308.rlib -L native=/work/build-cache/cargo-home/build/debug/build/tree-sitter-64b47a9d246aab62/out -L native=/work/build-cache/cargo-home/build/debug/build/tree-sitter-nickel-50eec70fb8e68069/out -L native=/work/build-cache/cargo-home/build/debug/build/zstd-sys-3df630743cf715ff/out -L native=/work/build-cache/cargo-home/build/debug/build/ring-3c60c1595d114743/out -L native=/work/build-cache/cargo-home/build/debug/build/aws-lc-sys-4c33c964f163c571/out -L native=/work/build-cache/cargo-home/build/debug/build/blake3-12a86e91b52050e7/out -L native=/work/build-cache/cargo-home/build/debug/build/blake3-12a86e91b52050e7/out` (exit status: 101)
error: command `/usr/bin/cargo '--color=auto' test --no-run --message-format json-render-diagnostics --package bep --package boxes --package minimal --package minimald --package minvmd --package switch --locked` exited with code 101

Out of scope

These files are outside the task's layers:, so this PR is a draft:

  • crates/minimal/src/cmd/box_spec.rs
  • crates/minimal/src/cmd/boxes/create.rs
  • crates/minimald/src/net/switch.rs
  • crates/minvmd/src/net/egress_gate.rs

Closes #2805

Residuals

A connection whose first byte opens a TLS handshake record takes its
authority from the ClientHello's SNI at the port the box connected to,
and enters the same admission, termination, substitution and egress
re-check as a CONNECT. No SNI, or one outside the admitted set, is
closed and audited off_module. The span carries the entry form.
A dns-steered box opens TLS to the proxy's address on port 443. The lane
predicate admits TCP there beside the listener's port, for a box that
declared a credentialed upstream. UDP 443 at the address stays dropped.
The proxy now takes a dns-steered box's direct TLS on port 443, so the
interim DnsWithoutDirectTls refusal goes. BEP-017 still refuses dns and
both on a host with no box-zone resolver.
The boxes crate no longer has the DnsWithoutDirectTls refusal. Drop its
match arm in min box spec, and expect dns to be admitted like both on
an own_ip box on the VM host.
An idle pool slot holds one listener at PROXY_PORT and one at 443, and
closes the other when it takes a connection. The share counts a box's
connections at both ports as one lane, and the delivery header carries
the port the box dialed, so the proxy routes direct TLS by its SNI.
A credentialed lane now admits TCP 443 at the proxy's address. The gate
and relay tests that probe a refused port there use 444 instead.
@coderabbitai
coderabbitai Bot commented Nov 2, 2026 •
Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d2bb6739-a37e-4f30-a2d8-5917b509e219

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.

@norrietaylor
Copy link
Copy Markdown
Member

/revise Two lanes fail on 06b7cbd. Both come from this change.

  1. kani (job 125631054376): crates/boxes/src/core/egress.rs:4179 fails to compile under the Kani build:
    error[E0425]: cannot find value PROXY_DIRECT_TLS_PORT in this scope. The harness module at line ~3975 does not import it. Add use crate::core::egress::PROXY_DIRECT_TLS_PORT; (or super::PROXY_DIRECT_TLS_PORT) in that module, and check that just kani (or the kani recipe) builds boxes.

  2. e2e (job 125634501103) and test-kvm (job 125633591961): the NET-134 case in scripts/session-e2e.sh (~line 17531-17550) still asserts that a deny-all lane box cannot reach the proxy's address on TCP 443:
    ::error::the deny-all lane box reached the proxy's address at port 443 — the lane opens the proxy's listener, never its address
    BEP-080 and this PR's proxy_lane_admits change open TCP 443 at the proxy's address for a laned box, so that probe now connects. Move that probe to a port the lane still does not open (444, as this PR already did in crates/minimald/src/net/switch.rs and crates/minvmd/src/net/egress_gate.rs). Update its comment and both ::error:: texts to say 444 and that the lane opens the listener's port and 443 only. Keep the host-alias loop (8118, 443) as it is: the host alias is not the proxy's address.

Run ./scripts/session-e2e.sh for the NET-134 case where you can, and the kani build for boxes.

@minimal-foundry
Copy link
Copy Markdown
Contributor Author

That /revise was refused. T115 is blocked by still-open #2805. The plan's order is the point of having one..

Round 1 of 10 was not counted; #2787 carries the same sentence.

@norrietaylor
Copy link
Copy Markdown
Member

The /revise above was refused: the runtime resolved this PR to T115 (#2787), which waits on #2805, the issue this PR closes. Filed as gominimal/agent-runtime#455. The two fixes in that comment are queued for a person to make by hand or with a local worker.

The kani_proofs module names PROXY_DIRECT_TLS_PORT in the lane
harness but did not import it, so the Kani build of boxes failed
with E0425.
BEP-080 opens TCP 443 at the proxy's address to a laned box, so
the NET-134 case's silent-drop probe at 443 now connects. Probe 444,
a port the lane never opens, and say in the errors that the lane
opens the proxy's listener port and TCP 443 only.

The proxy-source case's failure diagnostic also cross-probed 443 as
an unlistened port; move it to 444 for the same reason.
@norrietaylor
norrietaylor marked this pull request as ready for review November 3, 2026 17:02
@norrietaylor
norrietaylor requested a review from a team as a code owner November 3, 2026 17:02
@minimal-foundry
minimal-foundry Bot commented Nov 3, 2026 •
Copy link
Copy Markdown
Contributor Author

Approved: every review thread resolved at d5b3b0a55e3a.

@norrietaylor resolved the last thread, which releases the approval this review had withheld.

Nothing to do.

@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review at 9a133e4 against T116 (#2805) and BEP-080. Arch ruling on this head: CONDITIONS (code conforms, C1 and C2 below).

No blocking defect in the code. I checked these:

  • serve_inner peeks one byte, routes 0x16 to direct_tls, and has a limit on every wait. The SNI is admitted before anything is dialed. No SNI and an outside SNI are both audited off_module. Admitted flows share open_upstream and relay_flow with CONNECT.
  • bep_host screens 443 like 8118, the delivery carries the dialed port, and settle_twins has no leak or double count.
  • proxy_lane_admits adds TCP 443 only. The Kani model matches.
  • DnsWithoutDirectTls is fully gone.
  • The out-of-layer files carry only the removal and the 443→444 test probes.

Arch conditions

  • C1: in the PR body, change ## Closes #2787 too to ## Refs #2787 (T115). The live run of bep_dns_steering_through_the_box_zone_resolver has not happened, and GitHub honours the keyword in a heading.
  • C2: in scripts/session-e2e.sh proof_bep_dns_steering_through_the_box_zone_resolver, remove the dead interim-refusal handling. That is the grep -q 'does not yet take a direct TLS connection' branch and its return 3 (~13985-13988), plus the two bz_status = 3 known_gap branches (~14093, ~14160). Also rewrite the header at 13911-13915, which says KNOWN GAP until #2805.

Low

  1. crates/bep/src/proxy.rs:472-481: the CONNECT path now gets two HEAD_TIMEOUT windows (first-byte read, then read_head), so a slow head holds a slot ~60 s, not 30 s. Use one deadline for both.
  2. proxy.rs:713-723: a no-SNI refusal is audited with authority ":443". min box audit cannot show that no SNI was sent. The test pins ":443".
  3. crates/boxes/src/core/egress.rs:130 PROXY_DIRECT_TLS_PORT and crates/switch/src/bep_host.rs:182 PROXY_TLS_PORT are not tied. Add const _: () = assert!(...) beside the 8118 assert at crates/minvmd/src/net/egress_gate.rs:6377.
  4. The plan's observability line asks for the entry form in the per-request audit record. BEP-039 fixes that record's fields, and the PR puts entry on the span and the debug line, which is correct. The plan line will be amended. No code change is needed here.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — advisory review

Verdict COMMENT — 1 finding, 1 inline.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

Comment thread crates/bep/src/proxy.rs Resolved
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling

The change conforms to Gatehouse §6.10. The proxy takes the authority from the SNI, attribution stays on the switch delivery, and only a box with a declared lane can reach port 443. One gap remains. Line 851 says that the listener ports are the union of the admitted authorities' ports, but this change fixes the port at 443. A dns-steered box with a store authority on another port is steered to the proxy and then dropped. Do C1: file the issue, include the spec amendment for BEP-080, and name the issue in the PR body. The live VM-host proof stays open under #2787.

Ruled at 9a133e4 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.

Comment thread crates/switch/src/bep_host.rs Resolved
Comment thread crates/boxes/src/core/egress.rs Resolved
The proxy now takes a direct TLS connection, so admission no longer
refuses dns steering with a credentialed upstream. Drop the KNOWN GAP
handling of that refusal from the dns-steering case: any admission
refusal there is now a hard failure.
The first-byte peek and the head read each took a fresh HEAD_TIMEOUT
window, so a box could hold a connection open for twice the limit.
Take one deadline when the connection is accepted and use it for both
reads, so HEAD_TIMEOUT is the total time to send the first head.
A ClientHello with no server name was audited with the authority
":443", which reads as a blank host in `min box audit`. Record it as
`(no SNI):443` instead. No DNS name holds a parenthesis or a space, so
no SNI a box sends can produce the same authority. The record keeps
its BEP-039 fields.
boxes::core::egress::PROXY_DIRECT_TLS_PORT and
switch::bep_host::PROXY_TLS_PORT both hold 443 with nothing tying them.
Assert they agree beside the listener-port assert, as minvmd is the one
crate that sees both.
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arch-review: PASS_WITH_CONDITIONS · 1 condition · the full ruling

The compare closes the gaps it touches. One deadline now bounds the head read. A refusal with no SNI is recorded as (no SNI):443. The e2e case fails hard on any refusal. The proxy, relay and listener conform to Gatehouse §6.10 lines 819, 823, 825 and 833. BEP-080 is not defined in spec 24, and BEP-029 does not cover direct TLS. Make the spec edit in C1. The live VM proof stays open on #2787.

Ruled at d5b3b0a against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.

Comment thread crates/bep/src/proxy.rs Resolved
@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — approval withheld

Verdict COMMENT — APPROVE withheld: 4 unresolved threads — minimal-foundry[bot] crates/bep/src/proxy.rs, minimal-arch[bot] crates/switch/src/bep_host.rs:185, minimal-arch[bot] crates/boxes/src/core/egress.rs:130, minimal-arch[bot] crates/bep/src/proxy.rs:692. No findings.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — approved

Verdict APPROVE — every review thread is resolved; @norrietaylor closed the last one. The review of d5b3b0a55e3a withheld this approval on the threads open then. Posted as a comment: the App cannot approve its own pull request; the check and the label carry it.

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Nov 3, 2026
@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed 9a133e4..d5b3b0a against review 5756401304 and the arch conditions. One HEAD_TIMEOUT deadline covers the first byte and the head, with a paused-clock test. A no-SNI refusal is recorded as (no SNI):443 (audit::NO_SNI). The two 443 constants are tied at compile time. The e2e known-gap branches are removed. Residuals #2867, #2857 and #2787 are listed. BEP-080 is defined on main by #2851. All lanes are green.

@norrietaylor
norrietaylor added this pull request to the merge queue Nov 3, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 3, 2026
@norrietaylor
norrietaylor added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 20f242e Nov 3, 2026
36 checks passed
@norrietaylor
norrietaylor deleted the agent/2805-carry-dns-steered-tls-to-the-proxy-on-port-443 branch November 3, 2026 22:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review:approved minimal-review approved the current head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T116 — Carry dns-steered TLS to the proxy on port 443

1 participant

0