How to Prepare api.openai.com for IPv6: Dual-Stack DNS, Firewalls, Proxies, Observability, and Rollback

How to Prepare api.openai.com for IPv6: Dual-Stack DNS, Firewalls, Proxies, Observability, and Rollback
How to Prepare api.openai.com for IPv6: Dual-Stack DNS, Firewalls, Proxies, Observability, and Rollback

What changed on September 1, and why this needs an operations plan

OpenAI’s September 1 product release notes and API changelog state a narrow but important connectivity change: connections to api.openai.com can now use IPv6. For teams that call the OpenAI API from application servers, CI runners, worker queues, desktop tools, customer-support systems, data pipelines, or internal developer platforms, this means the endpoint is no longer an IPv4-only destination from the client’s point of view. It does not mean your own network will automatically send OpenAI traffic over IPv6, and it does not remove the need to keep IPv4 egress working.

The safest way to treat this update is as a client-readiness project rather than a code migration. Your application code may continue to call the same documented hostname, use the same API authentication model, and follow the same application-level retry and rate-limit handling patterns. The work is below and around the application: DNS resolvers, outbound firewall rules, egress proxies, TLS inspection devices, VPNs, container networking, service meshes, NAT gateways, log pipelines, alerting, and incident rollback. A client that has never intentionally used IPv6 can still encounter IPv6 connection attempts once a destination becomes dual stack, depending on resolver behavior, operating-system address policy, runtime libraries, and proxy configuration.

Operational boundary: OpenAI announced that connections to api.openai.com can now use IPv6. That statement is not an announcement that IPv4 has been retired, that all clients will choose IPv6, that API keys or pricing have changed, or that IPv6 automatically improves latency, reliability, or security.

The most common mistake after a service adds IPv6 support is assuming the change is either invisible or universally beneficial. In reality, dual-stack networking often exposes old blind spots: DNS filtering appliances that pass A records but mishandle AAAA records, firewalls with mature IPv4 rules but incomplete IPv6 egress controls, proxies that support IPv4 upstreams only, and observability dashboards that aggregate all failures under one hostname without recording the address family. RFC 6589 describes IPv6 transition as a phased operational process because impaired IPv6 paths, volume-dependent defects, monitoring gaps, and rollback design all matter once real production traffic starts using the new family.

The vocabulary: A, AAAA, dual stack, address family, and Happy Eyeballs

An A record is the DNS record type historically used to map a hostname to an IPv4 address. IPv4 addresses are the familiar dotted-quad values such as four decimal octets separated by periods. When a client resolves a hostname and receives an A record, any subsequent direct connection to that address uses the IPv4 address family, subject to the client’s routing table, firewall policy, proxy behavior, and network reachability.

An AAAA record, defined by RFC 3596, is the DNS record type used to map a hostname to an IPv6 address. IPv6 addresses use a different notation and a much larger address space than IPv4. The key operational point is not the notation; it is that AAAA answers can cause clients to attempt a different network path, match different firewall rules, use different proxy support, and produce different telemetry. RFC 3596 added IPv6 DNS address records while retaining existing IPv4 support, so the existence of AAAA records is compatible with continued A-record use.

Dual stack means a client, network, or service can support both IPv4 and IPv6. In a dual-stack path to an API endpoint, a client may resolve both A and AAAA records and then choose one address family for the connection. Dual stack is not the same as “IPv6-only.” A properly planned dual-stack deployment keeps IPv4 available while introducing IPv6 reachability, monitoring, and policy controls. For api.openai.com, this distinction is central: the September 1 notice says IPv6 can be used, not that IPv4 has stopped working.

An address family is the protocol family used by a network address and socket connection, most relevant here as IPv4 versus IPv6. Many application owners log a request destination as only api.openai.com, but network engineers need to know whether a specific connection used the IPv4 family or the IPv6 family. If an outage affects only IPv6, hostname-only logs can make the incident look random because some clients may be successful over IPv4 while others time out or fail over IPv6.

Happy Eyeballs is the informal name for algorithms that let dual-stack clients avoid long user-visible delays when one address family is broken or slow. RFC 8305 specifies Happy Eyeballs version 2. In simplified operational terms, a capable client can issue A and AAAA DNS queries asynchronously, prefer IPv6 according to address-selection policy, interleave IPv6 and IPv4 candidates, stagger connection attempts, and cancel the remaining attempts after one succeeds. This behavior improves user experience, but it can also hide partial failures because a successful IPv4 fallback may mask a broken IPv6 route unless you collect family-specific telemetry.

Term Practical meaning for OpenAI API clients Operational risk if ignored
A record DNS answer that enables IPv4 connection attempts to api.openai.com. Teams may assume existing IPv4 rules cover all traffic and miss new IPv6 policy requirements.
AAAA record DNS answer that enables IPv6 connection attempts, as defined for IPv6 DNS addressing by RFC 3596. Resolvers, filters, or clients may mishandle AAAA answers and create intermittent connection failures.
Dual stack IPv4 and IPv6 can both be available for the same hostname or client environment. Aggregated monitoring can conceal that only one family is failing.
Address family The connection path is IPv4 or IPv6, with separate routing and policy behavior. Firewall, proxy, and observability teams may troubleshoot the wrong layer.
Happy Eyeballs Dual-stack connection strategy specified by RFC 8305 to reduce delays when one family is impaired. Fallback can make broken IPv6 look harmless until traffic volume, geography, or a client update changes selection patterns.

What this does not change in your OpenAI API integration

IPv4 is not removed by the September 1 announcement. Existing clients that resolve and connect to api.openai.com over IPv4 should not be redesigned as if an IPv6-only cutover has occurred. Your rollback plan should preserve the ability to route OpenAI API traffic over IPv4, because dual-stack transition work is specifically about controlling which clients can use which family, observing the outcome, and reversing a change if IPv6-specific failures appear.

Client use of IPv6 is not guaranteed. A host may lack IPv6 connectivity, a resolver may return only A records to that client, a corporate proxy may terminate client connections and make its own upstream choice, an operating system may prefer IPv4 under local address-selection policy, or a Happy Eyeballs implementation may quickly fall back to IPv4. Conversely, a client that was never explicitly configured for IPv6 may begin attempting IPv6 if the operating system, runtime, and network path consider it usable. The correct assumption for production planning is variability, not uniform behavior.

Authentication is unchanged by address family. API keys, project controls, request signing patterns where applicable, authorization headers, and TLS hostname validation remain application-layer concerns tied to the documented API service, not to whether the socket uses IPv4 or IPv6. Do not create a separate credential policy merely because IPv6 is available, and do not weaken credential handling while debugging connectivity. A network migration should never require embedding keys in scripts, proxy exceptions, packet captures, or shared troubleshooting tickets.

Pricing is unchanged by IPv6 connectivity. OpenAI’s September 1 connectivity note does not describe a different API price, billing meter, model capability, or request quota for IPv6 connections. Cost controls should continue to focus on model selection, token usage, caching behavior where documented, tool use, retries, and workload design. If a connectivity defect causes retries or duplicate jobs, that is an application reliability problem to prevent through idempotency and retry budgets, not an IPv6 pricing feature.

IPv6 is not an automatic performance upgrade. Some clients may see a better path over IPv6, some may see no meaningful difference, and some may encounter impaired IPv6 routing, middlebox behavior, or proxy limitations. RFC 8305 exists because either family can fail or degrade. Measure connection setup time, TLS handshake outcomes, request latency, retry counts, and error classes by address family before declaring IPv6 faster or slower for your environment.

IPv6 is also not an automatic security upgrade. NIST SP 800-119 frames secure IPv6 deployment as an infrastructure and security planning exercise involving risk assessment, controls, monitoring, and operational readiness. A poorly governed IPv6 rollout can create bypass paths around IPv4-only egress filters, logging rules, or inspection points. Treat IPv6 firewall policy, proxy policy, asset inventory, and incident response as first-class controls rather than assuming the larger address space or newer protocol version makes the path safer by default.

The production question: who decides whether your request uses IPv4 or IPv6?

The application normally starts with a hostname, not an address. A well-behaved OpenAI API client should continue to use api.openai.com rather than pinning service IP addresses. Pinning IPs can break when providers change routing, capacity, mitigation, or infrastructure, and it bypasses the operational purpose of DNS. Your readiness plan should therefore inspect the chain of decisions between hostname resolution and a completed TLS connection.

DNS resolution is the first decision point. Recursive resolvers, split-horizon DNS, security filters, endpoint agents, and language runtimes can influence whether A records, AAAA records, or both are available to the process. A developer laptop on home Wi-Fi, a Kubernetes pod in a cloud subnet, a self-hosted runner in a data center, and a support tool behind a corporate secure web gateway may see different answers and different connection behavior even when they run the same OpenAI SDK version.

Routing and egress policy are the second decision point. IPv6 requires a usable route from the source environment to the destination, and security teams need IPv6 rules that are as intentional as their IPv4 rules. It is not enough to confirm that a host has an IPv6 address. You need to verify that outbound TCP connections to the API service are permitted through the expected controls, that return traffic is allowed, that deny logs are visible, and that the path does not accidentally bypass a required proxy or inspection layer.

Proxies and service meshes are the third decision point. Some environments connect applications to a local proxy, sidecar, egress gateway, or TLS inspection service rather than allowing direct outbound sockets. In that design, the client-to-proxy leg and the proxy-to-OpenAI leg can use different address families. Your application logs may show a successful request to a local IPv4 proxy while the proxy’s upstream connection to api.openai.com uses IPv6. Troubleshooting must therefore include the device or service that actually opens the upstream connection.

Client connection logic is the fourth decision point. Modern operating systems and libraries can implement address-selection and fallback behavior consistent with the goals of Happy Eyeballs, but behavior varies by runtime, version, configuration, and whether a proxy is involved. If IPv6 fails quickly and IPv4 succeeds, users may notice nothing while logs show only a modest delay. If IPv6 fails slowly and fallback is poorly implemented, requests may time out even though IPv4 would have worked. This is why the rollout plan must test real clients, not only DNS records.

The tutorial scope: prepare, observe, canary, and roll back

This tutorial turns OpenAI’s concise IPv6 notice into a practical readiness sequence for production API consumers. The workflow is intentionally conservative: inventory where OpenAI API traffic originates, identify each DNS resolver and egress path, confirm whether clients can receive and use AAAA answers, validate firewall and proxy controls for IPv6, add address-family telemetry, run controlled canaries, and document rollback steps that do not depend on pinning OpenAI IP addresses.

The first deliverable is an inventory of calling environments. Include application servers, batch workers, serverless functions, container clusters, CI/CD runners, developer workstations that run production maintenance scripts, customer-support automations, observability tools that call the API for tests, and any third-party workflow systems that your organization operates directly. For each environment, record the resolver, outbound proxy, firewall zone, IPv6 routing status, TLS inspection status, owner, and rollback contact. This inventory prevents a successful canary in one subnet from being mistaken for global readiness.

The second deliverable is a test matrix that separates DNS, connectivity, TLS, and application behavior. DNS tests answer whether the client can obtain A and AAAA data. Connectivity tests answer whether TCP can reach the service over each family from that environment. TLS tests answer whether the connection validates the hostname correctly through any proxy or inspection layer. Application tests answer whether authenticated OpenAI API requests complete successfully and whether failures are retried safely. Keeping these layers separate shortens incident response because a DNS failure and an API authentication failure require different owners.

The third deliverable is observability that records the address family selected for real traffic. At minimum, platform teams should be able to distinguish IPv4 successes, IPv6 successes, IPv4 failures, IPv6 failures, fallback events where observable, connection setup latency, TLS failures, HTTP status codes, timeouts, and retry counts. RFC 8305 explicitly warns that connection racing can conceal broken paths; family-specific telemetry is the antidote. Without it, a dual-stack rollout can look healthy until a resolver change, client update, or regional network issue shifts more traffic onto the impaired family.

The final deliverable is a rollback procedure that preserves the documented hostname and changes only your controllable client-side behavior. Depending on your environment, rollback may mean disabling IPv6 egress for a canary subnet, changing resolver policy, adjusting proxy upstream policy, reverting a service-mesh egress rule, or moving a workload back to a known-good network path. The rollback should be tested before broad rollout, assigned to an owner, and written in terms that an incident commander can execute under time pressure.

Build the preflight inventory before you test IPv6 paths

How to Prepare api.openai.com for IPv6: Dual-Stack DNS, Firewalls, Proxies, Observability, and Rollback — architecture and implementation visual

OpenAI’s September 2026 API changelog says that connections to api.openai.com can now use IPv6, but that statement is deliberately narrow: your client still chooses an address family through DNS resolution, operating-system address selection, proxy policy, route reachability, TLS behavior, and application retry logic. Treat the first phase as an inventory exercise, not a DNS celebration, because a successful AAAA lookup does not prove that your production workers, CI jobs, service mesh sidecars, or office VPN users can complete authenticated HTTPS requests over IPv6.

The practical goal of the inventory is to identify every component that can alter resolution, connection selection, source address, TLS Server Name Indication, certificate validation, HTTP headers, retry timing, or telemetry labels for requests to api.openai.com. RFC 3596 defines AAAA records as the DNS mechanism for IPv6 addresses, while RFC 8305 describes Happy Eyeballs v2 behavior that may race IPv4 and IPv6 attempts; those standards mean dual-stack success can hide a broken IPv6 leg unless you test and observe each family separately.

Preflight inventory checklist

Layer What to inventory Failure mode to look for Evidence to collect
Recursive resolvers Corporate DNS, cloud VPC resolvers, node-local DNS caches, container DNS, split-horizon DNS, and DNS security gateways used by workloads that call api.openai.com. AAAA answers filtered, stale cached answers, inconsistent resolver behavior between developer laptops and production, or DNS64 synthesis that changes expected behavior. Resolver IP or service name, query path, observed A and AAAA answers, TTLs, DNS64/NAT64 presence, and resolver logs if available.
Egress firewalls Rules for outbound TCP 443 by hostname, FQDN object, category, destination group, IP family, and inspection profile. IPv4 allowed but IPv6 default-denied, FQDN objects populated only with A answers, asymmetric return filtering, or logging that omits IPv6 destination fields. Rule identifier, family coverage, logging mode, hit counters, deny counters, and whether rules follow the hostname rather than pinned service IPs.
Forward proxies Explicit proxy settings in applications, operating systems, build agents, runtime environment variables, PAC files, and outbound proxy appliances. Proxy resolves only IPv4, client bypasses proxy for IPv6, proxy cannot connect to IPv6 destinations, or proxy authentication differs by route. Proxy hostname, proxy version or managed service, CONNECT policy for api.openai.com:443, DNS location, and logs showing upstream address family.
TLS inspection Inspection appliances, endpoint security agents, service mesh TLS origination, enterprise trust stores, and certificate pinning logic in custom clients. SNI not preserved, IPv6 path assigned a different inspection policy, certificate chain rejected, or HTTP/2 negotiation differences introduced by inspection. Certificate issuer observed by the client, SNI value used, ALPN result if logged, inspection bypass or decrypt rule, and trust-store source.
Service meshes and sidecars Envoy, gateway, egress gateway, sidecar, or policy engine behavior for DNS capture, outbound clusters, mTLS origination, and IPv6 listener support. Sidecar accepts the application connection but cannot resolve or dial IPv6, policy matches IPv4 CIDRs only, or metrics aggregate families together. Mesh egress policy, DNS capture setting, upstream cluster address family, sidecar logs, and per-family connection counters.
VPNs and remote access Developer VPN, contractor VPN, split-tunnel rules, device posture agents, and remote desktop environments used for operations and debugging. IPv6 leaks outside the expected tunnel, IPv6 disabled inside the tunnel while DNS returns AAAA, or remote users see behavior unlike production. Route table, DNS server assignment, split-tunnel policy, source-address family, and a documented comparison against an on-network host.
NAT64 and DNS64 IPv6-only networks, mobile-style test networks, cloud IPv6-only subnets, and resolver systems that synthesize AAAA records from A records. False confidence from synthesized records, IPv4-only dependencies hidden behind NAT64, or application libraries that mishandle IPv6 literals and bracket syntax. Whether DNS64 is enabled, NAT64 prefix discovery method used by the platform, and results from native dual-stack versus IPv6-only tests.
Containers and orchestration Kubernetes node networking, pod DNS policy, CNI IPv6 support, egress gateways, NetworkPolicies, container base images, and language runtimes. Host is dual-stack but pods are IPv4-only, DNS works in the node namespace but not in the pod, or application images lack IPv6 support in libraries. Pod-level DNS results, pod-level route table, egress policy, node family support, and runtime-level HTTP client logs.
CI runners and build systems Hosted runners, self-hosted runners, artifact scanners, integration-test jobs, secret-injection steps, and dependency proxies. CI passes through a different egress path than production, IPv6 unsupported in hosted runners, or test jobs expose API keys while debugging connectivity. Runner type, network owner, proxy variables, masked-secret status, family-specific curl output, and whether tests are allowed to make live API calls.
Serverless workloads Runtime networking, VPC connector behavior, private egress gateways, DNS configuration, cold-start libraries, and platform-managed NAT paths. Local tests are dual-stack but serverless runtime egress is IPv4-only, VPC connector blocks IPv6, or telemetry lacks socket-family labels. Provider networking configuration, runtime version, DNS result from inside the function, HTTP client debug logs, and rollback setting.
Observability Logs, metrics, traces, DNS telemetry, firewall events, proxy logs, synthetic checks, and incident dashboards. Happy Eyeballs masks failures by falling back to IPv4, dashboards show total success while IPv6 attempts time out, or source/destination family is not recorded. Labels for address family, hostname, proxy route, DNS latency, connect latency, TLS latency, HTTP status, retry count, and final successful family.

Decision rule: test from every network boundary that can choose a different path

Run the tests from at least one representative host in each path class: a developer workstation on corporate Wi-Fi, a host behind the office VPN, a production compute node, a container or pod, a CI runner, and a serverless function if that platform calls the API. Do not promote a path to “IPv6-ready” because a laptop succeeds; the laptop may use a local resolver, a consumer ISP route, or a different proxy policy than the workload that holds your production API key.

Record each test with the hostname, environment name, resolver used, proxy state, address family forced, command version, timestamp, and result. This evidence is useful during rollback because it separates “OpenAI hostname resolves” from “our production egress gateway allows outbound IPv6 TCP 443 and preserves TLS SNI.”

Example: DNS tests for A and AAAA answers

Use hostname-based DNS checks and avoid pinning OpenAI service IP addresses. The output may include one or more addresses and can change over time; your runbook should validate that both record families are handled by your infrastructure, not copy any returned address into firewall objects or application configuration.

# Example: query the system resolver for IPv4 and IPv6 records.
dig api.openai.com A
dig api.openai.com AAAA

# Example: show the resolver behavior used by common libc-based applications.
getent ahosts api.openai.com

# Example: query a specific corporate resolver when comparing environments.
dig @YOUR_CORPORATE_RESOLVER api.openai.com A
dig @YOUR_CORPORATE_RESOLVER api.openai.com AAAA

If A succeeds but AAAA returns no data from a corporate resolver, the client may remain IPv4-only even though OpenAI supports IPv6. If AAAA appears only on some networks, document whether that is intentional policy, a resolver configuration gap, or a DNS security product filtering IPv6 records. If the network uses DNS64, label those results separately because synthesized AAAA records are not the same observation as native dual-stack resolution.

Example: force IPv4-only and IPv6-only TCP/TLS attempts

Family-specific tests are necessary because RFC 8305-style client behavior can mask one broken path by completing the other path first. Use the hostname in the command so TLS SNI and certificate validation use api.openai.com; do not replace the hostname with an address literal.

# Example: force IPv4 for an HTTPS request and show connection timing details.
curl --ipv4 --verbose --connect-timeout 10 https://api.openai.com/

# Example: force IPv6 for the same hostname and show connection timing details.
curl --ipv6 --verbose --connect-timeout 10 https://api.openai.com/

For these unauthenticated tests, the operational success criterion is not a particular application payload. The useful evidence is whether DNS resolution completes, a TCP connection is established on port 443, TLS verification succeeds for the hostname, and an HTTP response is returned without a family-specific timeout or policy denial. Store the HTTP status and headers if your logging policy allows it, but do not treat an authentication-related response as a connectivity failure by itself.

Example: TLS and SNI verification without hardcoding service IPs

TLS inspection, forward proxies, and service meshes often behave differently by destination family or egress route, so verify the certificate path and SNI behavior with tools that show the handshake. The key detail is the -servername api.openai.com option, which sends SNI for the hostname; omitting it can produce a misleading failure that does not match how HTTPS clients operate.

# Example: inspect the TLS handshake using SNI for the documented hostname.
openssl s_client -connect api.openai.com:443 -servername api.openai.com -verify_return_error

# Example: compare IPv4 and IPv6 from curl while preserving hostname verification.
curl --ipv4 --verbose https://api.openai.com/
curl --ipv6 --verbose https://api.openai.com/

If the IPv4 command shows one certificate issuer and the IPv6 command shows another, check whether an inspection device or endpoint agent is intercepting only one path. If the IPv6 path fails certificate validation, do not disable verification in the application as a workaround; fix the trust-store, SNI, proxy, or inspection policy so the production client continues to validate TLS correctly.

Example: authenticated HTTP test using the real hostname

After unauthenticated connectivity works, test an authenticated OpenAI API request from a controlled environment using a short-lived or approved test credential stored through your normal secret mechanism. The command below is an example; adapt the API path, headers, and request body to an operation your organization already permits for diagnostics, and keep secrets out of shell history, CI logs, tickets, and screenshots.

# Example: authenticated HTTPS request using the documented hostname.
# Store OPENAI_API_KEY in your approved secret manager or masked environment.
curl --ipv6 --verbose https://api.openai.com/v1/models \
  -H "Authorization: Bearer ${OPENAI_API_KEY}"

# Example: compare the same request over IPv4 from the same host.
curl --ipv4 --verbose https://api.openai.com/v1/models \
  -H "Authorization: Bearer ${OPENAI_API_KEY}"

Use the same host for the IPv4 and IPv6 comparison so differences point to address-family routing rather than unrelated environment drift. If the IPv6 request reaches TLS but receives an authorization error, investigate credentials separately; if it never reaches TLS, investigate DNS, routing, firewall, proxy, or mesh policy before changing application code.

Example: run the test inside the actual application runtime

Command-line tests are necessary but insufficient because production applications may use different HTTP libraries, proxy variables, DNS caches, timeout budgets, connection pools, and retry policies. Add a small diagnostic path or one-off job in the same runtime that your application uses, and log the hostname, resolved family if the library exposes it, connect duration, TLS duration, HTTP status, retry count, and final exception class.

# Example: Python diagnostic using the standard library to inspect resolution.
import socket
import ssl
import time
import urllib.request

host = "api.openai.com"
print("Resolution results:")
for item in socket.getaddrinfo(host, 443, type=socket.SOCK_STREAM):
    family = "IPv6" if item[0] == socket.AF_INET6 else "IPv4"
    print(family, item[4][0])

request = urllib.request.Request(
    f"https://{host}/v1/models",
    headers={"Authorization": f"Bearer {__import__('os').environ['OPENAI_API_KEY']}"},
)

start = time.time()
try:
    with urllib.request.urlopen(request, timeout=15) as response:
        print("HTTP status:", response.status)
except Exception as exc:
    print("Request failed:", type(exc).__name__, str(exc))
finally:
    print("Elapsed seconds:", round(time.time() - start, 3))

This example intentionally avoids selecting a returned address and instead calls the hostname, because production clients should continue to depend on DNS and TLS hostname validation. If your runtime supports forcing the address family through a documented option, run separate IPv4 and IPv6 diagnostics; if it does not, use lower-level socket tracing, proxy logs, or firewall logs to determine which family won the connection race.

Example: container and Kubernetes checks

When the workload runs in a container, execute DNS and HTTPS tests inside the same image or pod security context whenever possible. A node may have IPv6 routes while the pod network, CNI, sidecar, or egress gateway does not, and testing only from the node can miss the policy that the application actually encounters.

# Example: run DNS checks from an existing Kubernetes pod.
kubectl exec -it YOUR_POD_NAME -- sh -c 'getent ahosts api.openai.com || true'

# Example: run family-specific HTTPS checks from a pod that already has curl installed.
kubectl exec -it YOUR_POD_NAME -- sh -c 'curl --ipv4 --verbose --connect-timeout 10 https://api.openai.com/'
kubectl exec -it YOUR_POD_NAME -- sh -c 'curl --ipv6 --verbose --connect-timeout 10 https://api.openai.com/'

If your cluster injects a sidecar, compare application-container results with sidecar or egress-gateway metrics rather than assuming the pod dials the destination directly. In service-mesh environments, a successful app-to-sidecar connection can still hide an upstream IPv6 failure between the sidecar and the external service.

Example: CI runner and serverless diagnostics

CI and serverless environments often use managed networking that differs from production servers, so test them only if those environments call the OpenAI API directly. Keep diagnostic output minimal because these systems commonly persist logs longer and expose them to broader engineering groups than production observability tools.

# Example: CI step that records DNS and redacts secrets by not printing them.
dig api.openai.com A
dig api.openai.com AAAA
curl --ipv4 --silent --show-error --connect-timeout 10 https://api.openai.com/ --output /dev/null --write-out 'ipv4_http_code=%{http_code} time_connect=%{time_connect}\n'
curl --ipv6 --silent --show-error --connect-timeout 10 https://api.openai.com/ --output /dev/null --write-out 'ipv6_http_code=%{http_code} time_connect=%{time_connect}\n'

For serverless, prefer a temporary diagnostic function or a guarded administrative invocation that runs from the same VPC connector, subnet, identity, and environment variables as the real workload. If the platform does not expose address-family details, correlate timestamped invocation logs with DNS resolver, firewall, proxy, or gateway logs that do record IPv4 versus IPv6.

Observability fields to add before canary traffic

Add observability before increasing traffic so the first canary does not become the first measurement exercise. At minimum, separate DNS lookup failures, TCP connect failures, TLS failures, HTTP response statuses, application timeouts, and retry exhaustion; grouping all failures as “OpenAI API error” will send responders to the wrong layer during an IPv6 incident.

  • Address-family outcome: record whether the final successful connection used IPv4 or IPv6 when the client, proxy, mesh, or gateway exposes that field.
  • DNS metrics: record resolver used, lookup duration, and whether A, AAAA, or both were returned, without storing service IPs as configuration.
  • Connection metrics: record connect latency, timeout count, reset count, and refused count by family where available.
  • TLS metrics: record handshake duration, validation failures, SNI hostname, and inspection policy identifier if your security tooling provides it.
  • HTTP metrics: record status class, request path category, retry count, and final exception type, while keeping authorization tokens and payload content out of logs.
  • Proxy and firewall events: retain allow and deny logs for outbound api.openai.com traffic on TCP 443, with IPv4 and IPv6 counters visible on the same dashboard.

Operational warning: Happy Eyeballs can make customer-facing requests look healthy while IPv6 attempts are timing out in the background and IPv4 is winning the race. RFC 8305 improves user experience, but it does not replace family-specific monitoring, because the fallback path can conceal partial deployment failures until volume, geography, or policy changes expose them.

Pass, fail, and defer criteria for this phase

Mark a path as pass only when DNS returns the expected record families for that environment, IPv4-only and IPv6-only HTTPS attempts have known outcomes, TLS verification succeeds with SNI for the hostname, the real runtime can make an approved request, and observability can distinguish address-family behavior. Mark it as fail when IPv6 attempts time out, route outside approved egress, bypass inspection unexpectedly, break certificate validation, or disappear from logs.

Use defer for environments where the network owner intentionally remains IPv4-only, the platform does not yet support IPv6 egress for that workload, or the application cannot safely run live diagnostics. A deferred path is not a blocker to all dual-stack preparation, but it must be documented so later canaries do not assume universal IPv6 readiness across resolvers, proxies, VPNs, containers, CI, and serverless workloads.

Canary dual-stack traffic and observe what Happy Eyeballs is masking

How to Prepare api.openai.com for IPv6: Dual-Stack DNS, Firewalls, Proxies, Observability, and Rollback — workflow, governance, and decision visual

OpenAI’s September 2026 changelog says connections to api.openai.com can now use IPv6, but the operational question is not “does a AAAA record exist?”; it is “which address family did each production request actually use, how long did each stage take, and what happened when the first family failed?” A safe canary treats IPv6 as a transport-path change across DNS, routing, firewalls, proxies, TLS, retries, and application outcomes, not as a model, authentication, or pricing change.

RFC 8305, commonly known as Happy Eyeballs v2, is designed to keep dual-stack applications responsive when one address family is slower or broken. A modern client does not usually resolve a hostname, wait for every DNS answer, and then try one address at a time in a fixed order. Instead, it can issue A and AAAA DNS queries asynchronously, build a candidate list from whatever answers arrive, prefer IPv6 according to local address-selection policy, interleave IPv6 and IPv4 candidates, and start connection attempts with a short stagger so the user is not forced to wait for a bad path to time out.

The key operational consequence is that Happy Eyeballs can make a broken IPv6 path look like a healthy application. If an IPv6 SYN is blackholed, a client may quickly attempt IPv4 and complete the request successfully. Your aggregate HTTP success rate may remain high while IPv6-specific connection timeouts, TLS failures, proxy denials, or resets are happening underneath. RFC 8305 explicitly exists to reduce user-visible delay in these mixed conditions; it is not a substitute for family-specific telemetry.

Asynchronous A and AAAA resolution also means DNS latency has to be measured per family. If AAAA answers arrive late, the application may connect over IPv4 even though IPv6 would have worked. If A answers are delayed, the client may appear to have “preferred” IPv6 when it simply received IPv6 candidates first. Record the query start time, answer time, response code, answer count, resolver identity or egress resolver tier, and whether the answer was consumed by the connection scheduler. This distinguishes resolver behavior from routing behavior.

Staggered connection attempts make connect latency more complex than a single stopwatch around the request. A request can have an IPv6 attempt that starts first and fails, an IPv4 attempt that starts shortly afterward and succeeds, and an application-level latency that looks acceptable. Instrument each connection attempt with address family, candidate ordinal, start time, end time, outcome, local interface or network zone where available, proxy route, error class, and whether it was canceled because another attempt won. Without that detail, successful IPv4 fallback can hide a failing IPv6 rollout until traffic shifts enough to expose the defect.

Instrumentation fields to add before the canary

The most useful telemetry schema separates DNS, TCP, TLS, proxy, retry, and final request outcome. Do not collapse all failures into a generic “network error,” because rollback decisions depend on knowing whether IPv6 is failing at name resolution, route reachability, middlebox policy, certificate validation, TLS inspection, or application retries. The following example is a proposed event shape for a client, sidecar, proxy, or egress gateway; adapt field names to your logging and tracing stack.

{
  "service": "checkout-api-worker",
  "destination_host": "api.openai.com",
  "dns": {
    "resolver_zone": "prod-egress-resolver-a",
    "a_query_ms": 18,
    "aaaa_query_ms": 22,
    "a_answer_count": 2,
    "aaaa_answer_count": 2,
    "a_rcode": "NOERROR",
    "aaaa_rcode": "NOERROR"
  },
  "connection_attempts": [
    {
      "family": "IPv6",
      "candidate_index": 0,
      "started_ms_after_request": 24,
      "connect_ms": 310,
      "outcome": "timeout",
      "error_class": "tcp_connect_timeout",
      "proxy_decision": "direct_or_allowed"
    },
    {
      "family": "IPv4",
      "candidate_index": 1,
      "started_ms_after_request": 274,
      "connect_ms": 38,
      "outcome": "connected",
      "error_class": null,
      "proxy_decision": "direct_or_allowed"
    }
  ],
  "tls": {
    "sni": "api.openai.com",
    "negotiated": true,
    "handshake_ms": 44,
    "failure_class": null
  },
  "http": {
    "attempt_number": 1,
    "final_family": "IPv4",
    "status_class": "2xx",
    "request_outcome": "success",
    "total_ms": 421
  },
  "retry": {
    "application_retry_count": 0,
    "transport_retry_count": 1,
    "retry_reason": "happy_eyeballs_ipv6_timeout"
  }
}

For DNS, record both the presence and timing of AAAA records defined by RFC 3596. A “no IPv6 traffic observed” result is ambiguous unless you know whether the client received AAAA answers, whether the resolver suppressed them, whether the proxy ignored them, or whether the client library was configured to prefer IPv4. In enterprise networks, split-horizon DNS, VPN DNS, container DNS, and CI runner DNS can each produce different behavior for the same hostname.

For TCP or QUIC-like transport abstractions exposed by a runtime, record connect start, connect success, timeout, refusal, unreachable errors, and resets by family. A reset immediately after connect can indicate a middlebox, proxy, or policy decision rather than a simple route failure. A timeout pattern concentrated on IPv6 can indicate missing egress firewall rules, broken return routing, path MTU issues, or a proxy that accepts IPv4 but not IPv6.

For TLS, record handshake latency and failure class without logging secrets or request bodies. The field that matters most for this migration is whether the client used the documented hostname as SNI and verified the certificate for api.openai.com. Do not pin OpenAI service IP addresses to force a family, because service addressing can change and the documented integration point is the hostname. If your organization uses TLS inspection, confirm that the inspection path is explicitly validated for IPv6 rather than assuming the IPv4 policy applies.

For proxies and service meshes, log the decision that selected direct egress, an HTTP proxy, a SOCKS proxy, a sidecar cluster, or a gateway route. Many production incidents occur because the application is dual-stack but the proxy path is not, or because the proxy resolves the hostname on behalf of the client in a different network context. If the proxy performs DNS resolution, application-side A and AAAA logs will not prove what the proxy actually attempted.

For retries, separate Happy Eyeballs transport fallback from application retry logic. A request may have one application attempt, two connection attempts, and zero HTTP retries. Another request may connect over IPv6, fail during TLS, retry the entire request, and later succeed over IPv4. These are different failure modes with different user impact and different rollback triggers.

Build a canary that can prove IPv6 is healthy, not merely survivable

A useful canary has a treatment group that is eligible to use IPv6, a control group that preserves the previous production behavior, and a common measurement layer that classifies every request by final address family and fallback history. The control group should continue to use the documented hostname; if your previous production path was IPv4-only because of resolver, proxy, or egress policy, keep that policy as the baseline rather than hardcoding OpenAI IP addresses.

Choose canary populations that represent real network boundaries instead of only low-risk users. A single office network, one Kubernetes cluster, or one CI runner pool can pass while another fails because IPv6 readiness depends on local routing, firewalls, resolvers, NAT64/DNS64 behavior, VPNs, endpoint security, and proxy policy. RFC 6589 emphasizes phased transition and operational maturity because volume-dependent defects often appear only after traffic diversifies.

Phase Population Primary question Minimum evidence before expanding Rollback trigger example
Phase 0: observe only Existing production traffic Can you classify DNS, connection, TLS, proxy, retry, and outcome by family? At least one full business cycle of complete telemetry from the major runtime and egress paths. Defer rollout if more than a small residual share of requests lack final-family or failure-class fields.
Phase 1: synthetic probes Monitoring agents in each network boundary Do A and AAAA resolution, TCP connect, and TLS verification work from each boundary? IPv4-only, IPv6-eligible, and ordinary dual-stack tests complete with hostname-based TLS validation. Rollback or block expansion for any boundary with repeated IPv6 connect timeouts or TLS failures.
Phase 2: low-volume application canary Non-critical workers or a small percentage of production requests Does real application traffic succeed without excessive fallback? Comparable success rate, latency distribution, retry rate, and error mix versus control. Rollback if IPv6-attempted traffic shows sustained excess transport failures versus control.
Phase 3: representative expansion Multiple regions, clusters, offices, CI pools, and proxy routes Do defects emerge at operational volume or in less common paths? No family-specific hot spots in dashboards, traces, or incident tickets. Freeze or rollback the affected segment if failures cluster by proxy, resolver, or route.
Phase 4: default dual stack All approved production paths Can dual-stack remain the normal state with IPv4 retained as fallback? Documented ownership, runbooks, dashboards, and rollback switches remain current. Revert a segment if error budget burn is materially higher than the IPv4-preserved baseline.

The table uses “rollback trigger example” deliberately: these are recommended operating thresholds, not OpenAI-published service thresholds. Calibrate the numbers to your own API SLOs, request volume, and customer impact. A high-volume platform can detect a 0.2 percentage-point transport regression quickly; a low-volume internal tool may need longer observation windows and synthetic probes to avoid overreacting to noise.

Recommended decision thresholds for production expansion

Use paired metrics that compare the treatment group against the control group over the same time window. A practical starting rule is to expand only when final HTTP success rate, non-HTTP transport failure rate, TLS failure rate, application retry count, and p95 total request latency are statistically and operationally close to control. Do not approve expansion solely because the average latency improved; a small number of IPv6 blackholes can be hidden by fast IPv4 fallback and still cause tail-latency or retry amplification.

  • DNS readiness threshold: Defer expansion if a canary boundary cannot consistently receive both A and AAAA answers where dual-stack use is expected, or if AAAA latency is persistently high enough that clients rarely consider IPv6 candidates.
  • Connection threshold: Roll back the affected segment if IPv6 connect timeouts, unreachable errors, or resets remain materially above IPv4 control after excluding known maintenance and local network changes.
  • TLS threshold: Stop expansion immediately if certificate validation, SNI, or TLS-inspection failures appear only on IPv6 paths, because application retries can turn those into intermittent production failures.
  • Proxy threshold: Freeze rollout if proxy logs show denied, unroutable, or downgraded IPv6 decisions for api.openai.com, even when application success remains acceptable through fallback.
  • Retry threshold: Roll back if the treatment group needs more transport or application retries than control to reach the same success rate, because retry amplification can increase latency and consume client-side capacity.
  • Outcome threshold: Treat HTTP outcomes separately from transport outcomes; a model or API-level error is not evidence of IPv6 failure unless it correlates with family-specific connection behavior.

A strong canary dashboard should show four views side by side: all traffic, IPv4-final traffic, IPv6-final traffic, and IPv6-attempted-but-IPv4-final traffic. The fourth view is the one most teams miss. It identifies the requests where Happy Eyeballs protected the user experience while revealing that IPv6 did not actually work well enough to carry the request.

Segment dashboards by application runtime, library, proxy route, cloud region, office network, VPN state, Kubernetes cluster, CI runner type, and resolver tier. If one service uses a runtime that serializes DNS queries while another uses asynchronous A/AAAA resolution, the same OpenAI hostname can produce different family selection and different latency. Treat client library behavior as part of the migration inventory, not as an implementation detail below the operations team’s concern.

NIST SP 800-119 frames IPv6 deployment as a planned infrastructure and security change, which means the canary should include security controls before volume increases. Confirm that egress allow rules, deny rules, logging, IDS or firewall inspection, proxy authentication, TLS inspection policy where used, and incident triage all classify IPv6 traffic correctly. A dual-stack client with IPv4-only security monitoring is not production-ready.

Rollback without pinning service IPs

The rollback design should be ready before the first canary request. The safest rollback usually restores the previous resolver, proxy, address-family preference, or egress policy while continuing to use api.openai.com as the target hostname. Avoid emergency runbooks that paste fixed service IP addresses into application configuration, because that bypasses normal DNS-based service management and can break when the provider changes addressing.

Define rollback scopes in advance: one application, one cluster, one proxy route, one office/VPN population, one CI pool, or the entire organization. Family-specific defects are often local, so a global rollback can create unnecessary churn. Conversely, TLS-inspection or central proxy defects may require organization-wide rollback because every application shares the same egress decision point.

  1. Freeze expansion: Stop adding new canary population as soon as family-specific transport, TLS, or proxy failures exceed the agreed threshold.
  2. Preserve evidence: Save representative traces showing DNS timing, connection attempts, TLS outcome, proxy decision, retries, and final request result.
  3. Rollback the smallest affected scope: Restore the prior address-family policy, resolver behavior, or proxy route for the failing segment while keeping the hostname unchanged.
  4. Verify recovery: Confirm that request success, retry rate, and tail latency return to control levels and that fallback-related errors stop accumulating.
  5. Identify the failed layer: Assign ownership to DNS, network, firewall, proxy, TLS inspection, platform runtime, or application team based on the evidence.
  6. Resume only after a targeted fix: Re-enter the canary at the previous safe phase rather than jumping directly back to broad dual-stack traffic.

The rollback should not be judged only by HTTP success rate. If success recovers but retry counts remain elevated, some clients may still be attempting a broken path before falling back. If latency recovers but TLS failures continue, a subset of traffic may still traverse an unapproved inspection path. A clean rollback returns transport attempts, final family distribution, retry counts, and request outcomes to their baseline ranges.

Runbook questions for the canary review

Before moving from one phase to the next, hold a short review that asks operationally specific questions. Did every expected network boundary observe AAAA answers? Did any resolver suppress or delay AAAA answers? Which clients used IPv6 as the final family? Which clients attempted IPv6 but completed over IPv4? Did proxy decisions differ by family? Did TLS failures cluster around inspection paths? Did retries increase even when final success was stable?

The final approval question is whether IPv6 is carrying real traffic cleanly, not whether the application survived dual-stack exposure. Happy Eyeballs is valuable because it protects users from many broken-path delays, but that same protection can hide defects until a routing change, resolver change, proxy update, or traffic surge makes fallback less effective. A standards-grounded canary makes the hidden family-specific behavior visible before dual stack becomes the default.

Production hardening: firewalls, proxies, TLS inspection, and connection pools

OpenAI’s September 2026 notice says connections to api.openai.com can now use IPv6; it does not say IPv4 is removed, that enterprise paths are already ready, or that clients should pin OpenAI service addresses. Treat production enablement as a controlled egress-policy change: the application should continue to address the OpenAI API by hostname, while DNS, proxy, firewall, and runtime layers become capable of resolving and reaching both A and AAAA answers.

For egress firewalls, create or validate rules that permit outbound HTTPS to api.openai.com over both IPv4 and IPv6 where the firewall product supports FQDN, SNI, or URL-category policy. The least-privilege target is not “allow all IPv6 outbound,” and it is not a static list of OpenAI IP addresses; it is the same hostname-based destination policy you already use for IPv4, extended to the IPv6 address family and logged with enough detail to distinguish the selected family.

If your firewall can only express IPv6 rules as CIDR objects and cannot enforce a hostname policy, do not invent or scrape OpenAI address ranges as a workaround. Use a forward proxy, secure web gateway, service mesh egress gateway, or cloud egress control that can authorize by hostname and preserve auditability. This is especially important because DNS answers for managed services can change, and pinning service IPs makes incident response harder when the provider changes routing or capacity.

For forward proxies and secure web gateways, test three separate behaviors before production expansion: whether the proxy resolves AAAA records, whether it can open IPv6 upstream connections, and whether it logs the upstream address family. Many outages appear as “the application cannot reach the API,” but the actual fault is a proxy that accepts an IPv4 client connection and then fails only when its own upstream resolver or routing stack chooses IPv6.

Certificate inspection requires a deliberate security decision. If your organization decrypts outbound TLS for policy enforcement, verify that the inspection device supports IPv6 upstream sessions, validates the server certificate for the hostname, handles SNI consistently, and reissues certificates only through your approved enterprise trust chain. If inspection is not required for this API path, document the bypass as a narrowly scoped hostname exception rather than a broad IPv6 exemption.

TLS inspection can also change the evidence available during an incident. A direct client failure may show certificate validation errors, while an intercepted path may show proxy-generated certificates, proxy policy blocks, or upstream handshake failures hidden from the application. Capture both client-side and proxy-side logs during canary because a successful TCP connection does not prove the end-to-end TLS path, SNI handling, HTTP authentication, and response processing are all healthy.

Connection pools deserve special attention because dual-stack behavior is often decided only when a connection is created. A long-lived HTTP pool may continue using IPv4 after IPv6 is enabled, or it may concentrate traffic on IPv6 after a restart even though previous tests looked balanced. During canary, intentionally recycle a small number of workers or pods so you observe new DNS resolution, Happy Eyeballs selection, TLS negotiation, authentication, and request retries under realistic pool creation conditions.

Recommended deployment order for production networks

Use a sequence that makes rollback and diagnosis possible. First, deploy observability fields and dashboards that separate IPv4 from IPv6, because RFC 8305’s Happy Eyeballs v2 behavior can mask a broken family by quickly succeeding over the other. Second, update egress controls in a non-routing-changing way, such as adding IPv6-capable hostname rules while leaving existing IPv4 policy intact.

Third, test dedicated non-production callers from every materially different path: corporate network, cloud VPC or VNet, Kubernetes nodes, CI runners, support tooling, VPN segments, and any proxy tier that makes its own DNS decisions. Fourth, run a small production canary that exercises normal authentication and request shapes without increasing concurrency, changing model selection, or altering retry policy at the same time. Fifth, expand by traffic source rather than by calendar percentage when different sources use different DNS resolvers, NAT, proxies, or cloud egress.

Do not combine IPv6 enablement with unrelated network migrations, rate-limit tuning, model changes, SDK upgrades, or proxy replacement unless the business risk requires it. If a failure occurs, a clean change boundary lets the on-call engineer decide whether the incident is DNS, route reachability, proxy policy, TLS inspection, application pooling, retry behavior, or an upstream service problem.

Production checklist before broad enablement

Area Production check Required evidence Rollback-ready condition
DNS Resolvers used by production callers can query A and AAAA records for api.openai.com. Resolver logs or test output from each network boundary, with timestamp and resolver identity. You can temporarily prefer IPv4 or block IPv6 for the affected path without changing application code.
Firewall Outbound HTTPS policy covers the hostname for both address families using the narrowest supported control. Rule identifiers, change ticket, sample allow logs for IPv4 and IPv6 attempts. The IPv6-specific policy can be disabled without removing the existing IPv4 allow path.
Proxy Forward proxy or secure web gateway can resolve and connect upstream over IPv6. Proxy access logs showing hostname, status, upstream family, and failure reason where available. Proxy policy can de-prefer IPv6 upstream for this hostname or route callers to the previous proxy pool.
TLS Direct or inspected TLS validates the hostname and does not break SNI-dependent routing. Handshake test output and, for inspection, the approved enterprise certificate-chain evidence. Inspection exception or previous TLS path is documented, approved, and reversible.
Runtime Application clients create new connections successfully after pool recycle. Metrics for connection attempts, connect latency, TLS failures, HTTP status, and selected family. Workers can be restarted with IPv4-preferred settings or routed through a known-good egress path.
Operations On-call runbook distinguishes DNS, TCP, TLS, HTTP, authentication, and retry symptoms. Runbook link, escalation contacts, and a completed canary review note. Rollback owner and approval path are named for business hours and after-hours incidents.

On-call runbook: diagnose by layer, not by symptom name

The first on-call decision is whether the incident is family-specific. Compare IPv4-forced and IPv6-forced synthetic checks from the same location, then compare those results with real application logs. If IPv6 fails but IPv4 succeeds, avoid broad application changes; focus on resolver behavior, route reachability, firewall policy, proxy upstream handling, or TLS inspection for the IPv6 path.

Recommended incident note fields:
- start time and affected caller group
- whether failures occur on IPv4, IPv6, or both
- DNS resolver used by affected callers
- proxy or egress gateway involved
- TLS mode: direct, inspected, or mixed
- application connection-pool restart status
- HTTP status or transport error observed
- rollback action taken, if any
- evidence preserved for vendor escalation

Keep API authentication separate from network diagnosis. IPv6 support does not change OpenAI API authentication, pricing, or application authorization semantics. A 401 or authorization-related application error should not be classified as an IPv6 routing failure unless you also have evidence of address-family-specific transport errors, proxy denials, or TLS failures.

Observed failure Likely layer Fast diagnostic Immediate action
AAAA resolves, but IPv6 TCP connection times out. Routing, firewall, cloud egress, or upstream proxy path. Run the same TCP/TLS test from another segment and compare firewall denies or route tables. De-prefer or block IPv6 only for the affected egress path while preserving IPv4.
Proxy returns a policy block only when upstream uses IPv6. Proxy or secure web gateway rule coverage. Check whether hostname allow rules were applied to IPv6 destinations and whether logs include SNI. Extend the existing least-privilege hostname policy to IPv6; do not add broad outbound IPv6.
TLS certificate errors appear after enabling IPv6. Inspection, trust store, SNI, or proxy certificate generation. Compare direct and inspected paths, then inspect the certificate chain presented to the client. Restore the prior TLS path or apply a scoped inspection fix for the hostname.
Canary succeeds, but production fails after restart. Connection pooling or runtime resolver differences. Compare client library/runtime versions, DNS configuration, and pool creation events. Roll back the restarted pool or route that workload through the known-good egress gateway.
Latency shifts but error rate remains normal. Path selection, Happy Eyeballs timing, or network geography. Separate connect time, TLS time, time to first byte, and selected address family. Observe before changing retry policy; RFC 8305 behavior may be selecting a working fallback.
Both IPv4 and IPv6 fail with the same HTTP status. Application, authentication, request formation, quota, or upstream service response. Compare with a known-good request and verify headers, credentials, and application changes. Do not roll back IPv6 as the primary fix unless network evidence contradicts the HTTP evidence.

Rollback evidence and vendor escalation packets

A rollback should be reversible, narrow, and evidence-preserving. Preferred rollback patterns include de-preferring IPv6 for the affected proxy pool, disabling a newly added IPv6 firewall rule, routing callers back to a known-good egress gateway, or temporarily configuring the affected runtime to prefer IPv4 where that is an approved operational control. Avoid deleting all IPv6 capability from the environment unless the blast radius is understood and approved.

Record the rollback as an engineering observation, not merely a status update. The useful evidence is the before-and-after comparison: selected address family, resolver answer, TCP outcome, TLS result, proxy decision, HTTP status, error rate, and user-visible impact. If rollback restores service, preserve at least one failing sample from before rollback so network, proxy, cloud, or provider teams can investigate without asking production to re-break.

Prepare different escalation packets for different vendors. A proxy vendor needs policy identifiers, proxy version, upstream resolution behavior, SNI evidence, and access-log samples. A cloud or network provider needs source subnet, destination family, timestamps, route-table or security-policy identifiers, and packet-loss or timeout evidence. OpenAI-facing escalation should identify that the client used api.openai.com, include timestamps, request identifiers if available from responses or logs, address family observed by the client or proxy, and the smallest reproducible symptom description; do not send secrets, API keys, or unnecessary customer content.

Operational rule: if the only proof is “Happy Eyeballs eventually succeeded,” the network is not fully validated. RFC 8305 improves user experience by racing or staggering connection attempts, but that same behavior can conceal an impaired IPv6 path until connection pools recycle, proxy behavior changes, or traffic volume increases.

Post-rollout review and steady-state ownership

After broad enablement, run a post-rollout review within the same change window or the next business cycle. Compare canary assumptions with production evidence: which callers actually used IPv6, whether any proxy tier remained IPv4-only upstream, whether TLS inspection behaved consistently, and whether dashboards made family-specific failures visible without manual log digging.

Update asset inventory and ownership records so future teams know which layer controls address-family preference for api.openai.com. The owner may be the application platform team, network egress team, enterprise proxy team, security operations team, or cloud foundation team; ambiguity here causes slow incidents because each group can plausibly say the API client is “not their layer.”

Finally, add IPv6 checks to routine production readiness for new services that call the OpenAI API. NIST SP 800-119 frames IPv6 deployment as an infrastructure and security change requiring planning and controls, and RFC 6589 emphasizes progressive deployment, monitoring, operational maturity, and rollback. The practical conclusion is simple: dual stack is not a one-time DNS test, but a standing production capability that must remain observable, least-privilege, and reversible.

Access 40,000+ AI Prompts for ChatGPT, Claude & Codex — Free!

Subscribe to get instant access to our complete Notion Prompt Library — the largest curated collection of prompts for ChatGPT, Claude, OpenAI Codex, and other leading AI models. Optimized for real-world workflows across coding, research, content creation, and business.

Get Free Access Now →

Useful Links

Get Free Access to 40,000+ AI Prompts for ChatGPT, Claude & Codex

Subscribe for instant access to the largest curated Notion Prompt Library for AI workflows.

More on this