| #5005 |
openai-compatibility provider forwards max_tokens unchanged to models that require max_completion_tokens |
O1/O3 and reasoning models reject max_tokens with HTTP 400. Proxy should automatically remap parameter. |
| #5067 |
Codex executor injects image_generation into muse-spark-1.2; HasSuffix does not match |
Hardcoded prefix/suffix checks fail to match specific model variants, leading to upstream rejection. |
| #5300 |
Codex: auto-derived prompt_cache_key defeats upstream prefix caching for batch workloads |
Synthetic cache key derivation causes cache hit rates to drop to 0.4%. |
| #4779 |
Codex WebSocket proxy cannot relay x-reasoning-included when upstream provides it |
Missing header relay in WebSocket handshake. |
| #5000 |
Sanitize Claude tool names and provide fallback input_schema for parameterless/custom tools |
Claude strictly validates tool names (regex regex ^[a-zA-Z0-9_-]{1,64}$); unescaped tool names cause 400s. |
| #5483 |
fix(translator): match Claude no-prefill model families by tokens |
Token-based heuristic needed for new Claude 3.7+ models. |
| #5546 |
fix(codex): map web search action.sources to Claude results |
Search sources citations dropped when translating between Codex and Claude. |
| #3361 |
Fix Claude Responses tool_search and namespace tool round-trip |
Round-trip schema serialization defect for nested tool calls. |
| #5874 |
Support credential-level or per-model disable-image-generation for codex-api-key |
Azure OpenAI rejects image_generation in payload; currently only a process-global toggle exists. |
| #5112 |
Codex Responses: strip unsupported top-level metadata |
Extra metadata fields rejected by upstream Codex endpoints. |
| #4893 |
feat(openai-compat): 3rd-party proxy HTTP 400 due to missing reasoning_content |
Certain third-party endpoints require reasoning_content even if empty on text-only assistant turns. |
| #5840 |
feat(translator): preserve multi-turn reasoning context for Gemini/Antigravity |
Multi-turn reasoning thought blocks lost during OpenAI endpoint translation. |
| #3662 |
Should Antigravity/Gemini tool schemas still flatten anyOf / oneOf? |
Upstream schema parser compatibility for polymorphic tool inputs. |
| #5839 |
devin: swe-2 rejects any tool declaration upstream while swe-1-7 accepts |
Tool schema normalization difference across Devin model iterations. |
| #5449 |
Tracking: Claude Code prompt-cache and Fable 5.1 fixes |
Collection of tracking PRs for Claude prompt caching. |
| #5783 |
feat(codex): guide recovery when automatic credential renewal becomes impossible |
Clearer diagnostic errors when OAuth refresh token is revoked. |
| #5190 |
feat(interactions): session fallback, tool-name collision, models endpoint |
Interactions API edge-case followups from PR #5022. |
Overview
This tracking issue provides an automated triage and health assessment across all 65 open issues in
router-for-me/CLIProxyAPI. The objective is to identify genuine protocol regressions, silent data-loss bugs, and credential/cooldown deadlocks that directly impact production reliability, distinguishing them from feature requests, configuration questions, and stale entries.🚨 Tier 1: Critical Real Bugs (Recommended for Immediate Action)
1. Protocol Translation Silent Data Loss
These issues silently discard customer prompts, attachments, or stream frames, resulting in upstream 400s or downstream
empty_streamwith zero actionable diagnostics.Responses string input is dropped when translating to Claude, producing empty messages/v1/responsesis called with a top-level stringinput, the translator only checksinput.IsArray(), dropping string inputs entirely and producing"messages": []. Strict upstreams reject this with 400 Bad Request.internal/translator/claude/openai/responses/objectis an unrecognized non-empty value (surfaces asempty_stream) #6031 —Responses translator drops every stream frame when object is an unrecognized non-empty value (surfaces as empty_stream)objectis not strictly"chat.completion.chunk"are silently discarded without logging. The client observes a clean termination followed byempty_stream: upstream stream closed before first payload.internal/translator/document, container_upload, file_id and input_audio parts are dropped, and an empty message goes out in their placedocumentparts), dropping user message payloads completely.internal/translator/inputitems with rolesystem/developerare sent as user turns, upstream system prompt left empty (Devin) #5879 —interactions: Responses input items with role system/developer are sent as user turns, upstream system prompt left empty (Devin)inputitems withsystem/developerroles are forwarded as user turns to Devin, leaving the actual upstream system prompt blank.internal/translator/&internal/runtime/executor/Responses native type:shell tool is silently dropped; no local_shell_call is emittedinternal/translator/2. Cooldown, Rotation & Credential Penalty Loops
These issues cause healthy credentials or downstream traffic to be penalized or locked out unnecessarily.
[Bug] Deterministic validation errors returned as HTTP 500 rotate through and penalize every credentialinternal/runtime/executor/& credential managerClaude Sonnet/Opus & Codex stay in stale multi-day cooldown after quota recoveryusage_limit_reached, credentials are placed into an estimated cooldown that is not dynamically refreshed or cleared when fresh quota signals or usage resets occur, requiring manual process restart to recover.internal/runtime/executor/& quota tracker上游挂起(无响应体)时凭证轮换不触发,单个凭证吊死至反代超时,低优先级渠道无法接管internal/runtime/executor/OpenAI-compatible incomplete stream cooldowns all MiniMax keys and ends as auth_unavailable[DONE]marker trigger protocol-level errors that penalize credential health, exhausting all keys in the pool.internal/runtime/executor/[Bug] Stale Codex resets_at blocks paid account failover after the account is already usableresets_atprevents usable paid accounts from being selected during failover.internal/runtime/executor/codex3. Concurrency, Streaming & Transport Lifecycle
fix(wsrelay): a late Delete from the outgoing session can drop the auth of the live sessionwsrelay: when an outgoing session terminates after a fast reconnect, its delayed cleanup deletes the auth entry of the newly active live session.internal/wsrelay/Codex Responses SSE stream dies after ~30s of upstream silence on deep-reasoning models (terra/astra)internal/runtime/executor/[Bug] OAuth token refresh fails with EOF on cold proxy connections without transport-level retryinternal/runtime/executor/helps/& OAuth clientCodex HTTP error paths discard upstream headers, losing Retry-After and request IDsinternal/runtime/executor/codexRecover transient terminal SSE failures before downstream commitmentinternal/api/&internal/runtime/executor/Bug: Claude-protocol thinking output_config.effort is dropped for user-defined modelsxhigh/max) fail to propagate when model names are user-aliased.internal/thinking/compactionoutput item through CLIProxyAPI #4848 —[Bug] Codex remote compaction v2 returns no compaction output item through CLIProxyAPIinternal/translator/[Bug] Gemini/Antigravity Responses translation drops tool_search and discovered toolsinternal/translator/🛠 Tier 2: Valid Boundary Bugs & High-Value Improvements (17 issues)
openai-compatibility provider forwards max_tokens unchanged to models that require max_completion_tokensmax_tokenswith HTTP 400. Proxy should automatically remap parameter.Codex executor injects image_generation into muse-spark-1.2; HasSuffix does not matchCodex: auto-derived prompt_cache_key defeats upstream prefix caching for batch workloadsCodex WebSocket proxy cannot relay x-reasoning-included when upstream provides itSanitize Claude tool names and provide fallback input_schema for parameterless/custom tools^[a-zA-Z0-9_-]{1,64}$); unescaped tool names cause 400s.fix(translator): match Claude no-prefill model families by tokensfix(codex): map web search action.sources to Claude resultsFix Claude Responses tool_search and namespace tool round-tripSupport credential-level or per-model disable-image-generation for codex-api-keyimage_generationin payload; currently only a process-global toggle exists.Codex Responses: strip unsupported top-level metadatafeat(openai-compat): 3rd-party proxy HTTP 400 due to missing reasoning_contentreasoning_contenteven if empty on text-only assistant turns.feat(translator): preserve multi-turn reasoning context for Gemini/AntigravityShould Antigravity/Gemini tool schemas still flatten anyOf / oneOf?devin: swe-2 rejects any tool declaration upstream while swe-1-7 acceptsTracking: Claude Code prompt-cache and Fable 5.1 fixesfeat(codex): guide recovery when automatic credential renewal becomes impossiblefeat(interactions): session fallback, tool-name collision, models endpoint💡 Tier 3: Feature Requests & Enhancements (22 issues)
Notable Highlights:
[Feature] Support TypeSafe Jev (System One decisions API): Adding native support for TypeSafe's fast structured evaluation API (/v1/systemone).feat(antigravity): 补齐对齐官方客户端的 request labels、requestId 轨迹与 UA 拓扑: Official Antigravity client fingerprint emulation.feat: Vertex AI via Application Default Credentials (vertex-adc config block): GCP native ADC support.Feature: support wildcard patterns in oauth-model-aliasListing-only model exclusion: Hide specific aliases from/v1/modelswithout disabling direct routing.Scope payload rules to selected provider credential / prefix matchingClaude cloak: config lever for derived anthropic-beta setfeat(api): add /readyz and /metrics so liveness is not readinessAdded connectivity testing for model interfaces via scheduled taskssupport per-credential disable-codex-cloaking🗑 Tier 4: Invalid, Stale, or Non-Actionable (7 issues — Recommend Closing)
The following issues do not contain reproducible technical bugs, lack necessary details, or are non-actionable complaints:
能否再难用一点?!就没人fork 下来,进行二次开发吗?imagemac下正确的快速开始配置的请求头无效!!!https://code.claude.com/docs/en/auto-mode-classifier-billing相关包测试里有环境相关的测试Generated by automated triage analysis on 2026-09-22.