anomalyco / anomalyco/opencode

[Bug] opencode-go provider silently returns empty response / hangs on machines with broken IPv6 connectivity

Open
#40,095 1 comment 0 reactions 1 assignee View on GitHub

@fwang is already working on this.

Since Aug 1, 2026.

Dominant language
TypeScript
Stars
209k
Forks
27.5k
PR merge metrics
PR metrics pending

Description

Description

opencode 1.18.11 中使用内置 opencode-go provider(OpenCode Zen Go,https://opencode.ai/zen/go/v1)时:

  • TUI 发送消息后无任何输出、无报错,会话一直无响应
  • opencode run --model opencode-go/deepseek-v4-flash "hi" → 只打印 > build · deepseek-v4-flash 头,exit 0,无内容输出
  • 同机器上内置 deepseek provider 正常工作

Environment

  • opencode 1.18.11(官方二进制,SHA 已验证)
  • Debian 12 / Ubuntu,x86_64
  • Network: machine has an IPv6 address, but the IPv6 route to Cloudflare (opencode.ai) is broken (IPv6 direct connection fails)

Debug findings

  1. Direct curl / node fetch calls to https://opencode.ai/zen/go/v1/chat/completionsall work fine (curl has happy-eyeballs and falls back to IPv4)
  2. Request capture confirms opencode sends correct params (model, key)
  3. Key difference found: opencode's bundled bun fetch resolves the DNS to IPv6 and connects over IPv6, but on this machine IPv6 to Cloudflare is unreachable → connection established but stream data never arrives → empty output / hang
  4. The same opencode works perfectly on another machine without IPv6 (phone Termux environment)

Verification
After disabling IPv6 system-wide (net.ipv6.conf.all.disable_ipv6=1), native opencode-go immediately works again — all models reply correctly.

Root cause
opencode's bundled runtime (bun fetch) has no happy-eyeballs / IPv4 fallback: when IPv6 is unavailable, it waits forever instead of falling back to IPv4.

Suggested fix
Implement happy-eyeballs (RFC 6555) dual-stack fallback in the bundled runtime: if the IPv6 connection fails or stalls, automatically fall back to IPv4 instead of waiting indefinitely.

Plugins

none

OpenCode version

1.18.11

Steps to reproduce
  1. Configure opencode-go provider in auth.json with a valid API key
  2. Ensure the machine has an IPv6 address but broken IPv6 connectivity to Cloudflare (e.g. home broadband with unreachable IPv6 route)
  3. Run opencode run --model opencode-go/deepseek-v4-flash "hi" → prints only the > build header, exits 0 with no output
  4. Control: opencode run --model deepseek/deepseek-v4-flash "hi" works fine
Screenshot and/or share link

No response

Operating System

debian12

Terminal

bash

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.