Claude Code báo "Request timed out": API_TIMEOUT_MS và cách khắc phục proxy
Wokey Team · 2026-09-24
Trả lời ngắn: Request timed out nghĩa là Claude Code không nhận được phản hồi từ API trước thời hạn, mặc định là 10 phút (API_TIMEOUT_MS=600000). Khi đi qua gateway, nguyên nhân thường không phải mô hình chậm. Phổ biến hơn là có thứ gì đó ở giữa giữ lại phản hồi streaming, hoặc cắt các kết nối im lặng quá lâu. Đó có thể là proxy cục bộ, mạng công ty hoặc chính gateway. Trước tiên hãy dùng curl kiểm tra luồng dữ liệu có đến từng phần không, rồi mới quyết định có tăng timeout hay không.
Bạn đang gặp thông báo nào
| Thông báo | Ý nghĩa |
|---|---|
Waiting for API response · will retry in … · check your network dưới biểu tượng đang tải |
Không có dữ liệu trong 20 giây. Claude Code vẫn đang chờ; đây chưa phải lỗi |
Retrying in Ns · attempt x/y |
Cơ chế tự động thử lại đang chạy, mặc định tối đa 10 lần |
Request timed out |
Không có phản hồi trong khoảng API_TIMEOUT_MS |
API Error: No response from API (waited …, then … on the retry) |
Hai lần thử trôi qua mà không nhận được byte đầu tiên của phản hồi |
| HTTP 504 với nội dung JSON của Wokey | Wokey hết thời gian chờ upstream |
| HTTP 408 | Nội dung yêu cầu được tải lên quá chậm, nên gateway ngừng chờ |
Bốn thông báo đầu đến từ chính Claude Code; hai thông báo cuối đến từ máy chủ.
Các lỗi timeout của Wokey
Mọi lỗi timeout của Wokey đều là 504 theo định dạng lỗi chuẩn. code cho bạn biết yêu cầu bị kẹt ở đâu:
code |
Ý nghĩa |
|---|---|
upstream_gateway_timeout |
Gateway của chính upstream bị timeout trước khi tạo ra bất kỳ đầu ra nào |
official_exit_first_byte_timeout |
Upstream chưa bao giờ bắt đầu trả lời, tính cả thời gian thử lại trên các tuyến khác |
provider_timeout |
Kết nối đến upstream bị ngắt hoặc timeout mà không có kết quả |
Ví dụ:
{"error":{"code":"upstream_gateway_timeout","message":"Upstream gateway timed out before producing a response.","type":"invalid_request_error"}}
Nếu timeout xảy ra sau khi phản hồi đã bắt đầu stream, nó sẽ đến dưới dạng sự kiện error trong luồng thay vì HTTP 504.
Khi lâu không có đầu ra, chẳng hạn trong lúc mô hình suy nghĩ lâu, Wokey định kỳ ghi một comment SSE vào luồng để giữ kết nối:
: wokey-transport-keepalive-v1
Client bỏ qua các dòng comment. Nếu bạn thấy dòng này khi thử bằng curl, kết nối vẫn sống và mô hình vẫn đang làm việc.
Các bước khắc phục
1. Dùng curl kiểm tra luồng dữ liệu có đến từng phần không.
curl -N https://api.wokey.ai/v1/messages \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":300,"stream":true,"messages":[{"role":"user","content":"Count from 1 to 60"}]}'
-N tắt bộ đệm của chính curl.
- Các dòng
event:vàdata:lần lượt cuộn qua khi đến: toàn bộ đường truyền đều ổn. - Mọi thứ hiện ra cùng lúc sau một khoảng chờ dài: có thứ gì đó ở giữa đang đệm phản hồi, và Claude Code dễ bị timeout trên đường truyền đó.
2. Kiểm tra proxy cục bộ. Claude Code tuân theo HTTPS_PROXY và thiết lập proxy của hệ thống. Chế độ TUN, proxy theo quy tắc và gateway của công ty đều có thể đệm phản hồi streaming hoặc cắt kết nối nhàn rỗi. Nếu mạng của bạn truy cập trực tiếp được api.wokey.ai, hãy loại tên miền đó khỏi proxy và thử lại. Nếu bắt buộc phải dùng proxy, hãy so sánh với một node khác.
3. Tăng timeout. Khi đường truyền đã ổn và các yêu cầu thực sự dài, hãy tăng giới hạn trong khối env của ~/.claude/settings.json:
{
"env": {
"API_TIMEOUT_MS": "1200000"
}
}
API_TIMEOUT_MSlà timeout cho mỗi yêu cầu, tính bằng mili giây. Mặc định là 600000 (10 phút).- Nếu một proxy trong mạng của bạn giữ phản hồi cho đến khi hoàn tất, thông báo lỗi của Claude Code gợi ý tăng thêm
CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS. - Việc phát hiện luồng bị đứng giữa chừng do
CLAUDE_STREAM_IDLE_TIMEOUT_MSđiều khiển. Giá trị dưới 5 phút sẽ được nâng lên 5 phút, và tối đa là 30 phút.
4. Thu gọn ngữ cảnh. Ngữ cảnh càng lớn thì tải lên càng chậm và token đầu tiên càng đến muộn. Chạy /compact để cô đọng phiên, hoặc bắt đầu phiên mới.
5. Nếu bạn gặp 408. Lỗi 408 nghĩa là nội dung yêu cầu ngừng đến trong lúc tải lên và gateway đã thôi chờ. Lỗi này hầu như chỉ xuất hiện với ngữ cảnh rất lớn trên mạng không ổn định. Thường chỉ cần thử lại là thành công. Nếu cứ lặp lại, hãy kiểm tra proxy như ở bước 2, rồi thu gọn yêu cầu bằng /compact.
Timeout trong Codex
Timeout nhàn rỗi của luồng trong Codex mặc định là 300000 ms (5 phút). Khi nó kích hoạt, bạn sẽ thấy idle timeout waiting for SSE hoặc stream disconnected before completion, và khi tự động thử lại sẽ hiển thị Reconnecting... n/max. Các thiết lập này nằm trong bảng provider:
[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
stream_idle_timeout_ms = 600000
stream_max_retries = 10
stream_max_retries mặc định là 5 và request_max_retries mặc định là 4; cả hai tối đa là 100. Để xem toàn bộ cách thiết lập, hãy đọc hướng dẫn config.toml cho Codex.
Câu hỏi thường gặp
Timeout mặc định của Claude Code là bao nhiêu?
Mười phút cho mỗi yêu cầu, do API_TIMEOUT_MS quy định (mặc định 600000). Tăng giá trị này trong khối env của ~/.claude/settings.json, ví dụ "API_TIMEOUT_MS": "1200000".
Làm sao biết lỗi do mạng hay do mô hình?
Gửi một yêu cầu "stream":true bằng curl -N. Nếu các dòng data: đến lần lượt, đường truyền ổn. Nếu mọi thứ xuất hiện cùng lúc sau một khoảng chờ dài, có thứ gì đó ở giữa đang đệm phản hồi, và đường truyền đó dễ bị timeout.
Lỗi 504 từ Wokey có nghĩa là gì?
Mọi timeout của Wokey đều là 504, và code cho biết nó bị kẹt ở đâu: upstream_gateway_timeout nghĩa là gateway của upstream bị timeout, official_exit_first_byte_timeout nghĩa là upstream chưa bao giờ bắt đầu trả lời, và provider_timeout nghĩa là kết nối đến upstream bị ngắt hoặc timeout.
wokey-transport-keepalive-v1 trong luồng dữ liệu là gì?
Đó là một comment SSE mà Wokey ghi ra khi một lúc lâu không có đầu ra, để ngăn các thiết bị trung gian cắt kết nối. Client bỏ qua nó; thấy nó nghĩa là kết nối vẫn sống và mô hình vẫn đang làm việc.
Làm sao thay đổi timeout trong Codex?
Đặt stream_idle_timeout_ms (mặc định 300000) và stream_max_retries (mặc định 5) trong bảng provider của config.toml.