You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
이 이슈는 Codex App에서 콤보(예: alibaba-token-plan/deepseek-v4.1-flash → deepseek/deepseek-flash)로 새 대화를 열 때, 스레드 제목용 그림자 호출이 response_format을 보내면 Alibaba 게이트웨이가 HTTP 400 invalid_request_error / invalid_parameter_error ("This response_format type is unavailable now")를 내고, 그 다음 콤보 타깃으로 failover하지 않고 멈춘다는 보고다. 재현 OS는 macOS, 보고 버전은 2.57.0이다.
현재 dev tip은 41f1832 (package 2.58.0)이다. tip #4817은 제로 출력 SSE bare error 이벤트가 comboFailureDecision이 hop이라고 말할 때만 다음 타깃으로 넘긴다. 이 이슈의 핵심은 그 반대다. 결정 함수가 이미 stop을 내리기 때문에 #4817을 올려도 이 400은 다음 타깃으로 가지 않는다.
src/combos/failover.ts의 comboFailureDecision(약 526행)은 classifyError 결과가 invalid_request_error이면 명시적으로 stop(약 598행)이다. 그 위 isRequestLocalTargetIncompatibility(약 361행)가 일부 400을 hop으로 바꿀 수 있지만, 허용 envelope는 user 파라미터·reasoning.effort unsupported_value·이미지 param:input 정도로 좁고, response_format / "This response_format type is unavailable now" 문구는 없다.
레지스트리 alibaba-token-plan 쪽은 noJsonSchemaModels에 deepseek-v4.1-flash만 넣어 json_schema를 json_object로 낮추도록 적혀 있다(src/providers/registry/entries-extended.ts, openai-chat passthrough). 제목 생성 경로가 그 가드를 타지 않거나 json_object조차 거절되면 400이 그대로 콤보에 들어온다. 스크린샷의 SSE data error 형태는 #4817 경로와 겹칠 수 있어도, decision=stop이면 체인은 끝난다.
라인 598 - comboFailureDecision: invalid_request_error → stop. 보고된 response_format 400은 여기에 걸린다
라인 361 - isRequestLocalTargetIncompatibility: response_format 거절을 hop으로 보지 않음
경로/심볼 - src/providers/registry/entries-extended.ts noJsonSchemaModels: 그림자 호출이 가드를 안 타면 400 상승
경로/심볼 - src/server/responses/combo-stream-preflight.ts (#4817): decision=hop일 때만 넘김
메인테이너의 판단이 필요한 지점
response_format 거절을 타깃 로컬 비호환(hop)으로 볼지, 요청 형태 거절(stop)으로 둘지
hop이면 다음 타깃이 살아도 같은 response_format을 그대로 보내면 두 번째도 깨질 수 있음
근본 수정이 failover인지, 그림자/제목 호출에서 해당 모델에 response_format을 빼는 가드 관통인지
보고 2.57.0 vs tip 2.58.0+#4817에서 같은 콤보로 재현해 zero-output hop과 stop 분류를 분리할지
너의 추천
tip에서 같은 콤보+제목 생성으로 재현한 뒤, (1) 요청에서 response_format을 모델 가드에 맞게 제거/다운그레이드하는 쪽을 우선하고, (2) failover를 손대려면 isRequestLocalTargetIncompatibility에 response_format unavailable envelope를 narrowly 추가할지 별도 PR로 검토한다. #4817만으로는 이 이슈가 닫히지 않는다.
Activity
lidge-jun commentedon Sep 17, 2026
리뷰 · 우선순위 66 / 80
이 이슈는 Codex App에서 콤보(예: alibaba-token-plan/deepseek-v4.1-flash → deepseek/deepseek-flash)로 새 대화를 열 때, 스레드 제목용 그림자 호출이 response_format을 보내면 Alibaba 게이트웨이가 HTTP 400 invalid_request_error / invalid_parameter_error ("This response_format type is unavailable now")를 내고, 그 다음 콤보 타깃으로 failover하지 않고 멈춘다는 보고다. 재현 OS는 macOS, 보고 버전은 2.57.0이다.
현재 dev tip은 41f1832 (package 2.58.0)이다. tip #4817은 제로 출력 SSE bare error 이벤트가 comboFailureDecision이 hop이라고 말할 때만 다음 타깃으로 넘긴다. 이 이슈의 핵심은 그 반대다. 결정 함수가 이미 stop을 내리기 때문에 #4817을 올려도 이 400은 다음 타깃으로 가지 않는다.
src/combos/failover.ts의 comboFailureDecision(약 526행)은 classifyError 결과가 invalid_request_error이면 명시적으로 stop(약 598행)이다. 그 위 isRequestLocalTargetIncompatibility(약 361행)가 일부 400을 hop으로 바꿀 수 있지만, 허용 envelope는 user 파라미터·reasoning.effort unsupported_value·이미지 param:input 정도로 좁고, response_format / "This response_format type is unavailable now" 문구는 없다.
레지스트리 alibaba-token-plan 쪽은 noJsonSchemaModels에 deepseek-v4.1-flash만 넣어 json_schema를 json_object로 낮추도록 적혀 있다(src/providers/registry/entries-extended.ts, openai-chat passthrough). 제목 생성 경로가 그 가드를 타지 않거나 json_object조차 거절되면 400이 그대로 콤보에 들어온다. 스크린샷의 SSE data error 형태는 #4817 경로와 겹칠 수 있어도, decision=stop이면 체인은 끝난다.
라인 598 - comboFailureDecision: invalid_request_error → stop. 보고된 response_format 400은 여기에 걸린다
라인 361 - isRequestLocalTargetIncompatibility: response_format 거절을 hop으로 보지 않음
경로/심볼 - src/providers/registry/entries-extended.ts noJsonSchemaModels: 그림자 호출이 가드를 안 타면 400 상승
경로/심볼 - src/server/responses/combo-stream-preflight.ts (#4817): decision=hop일 때만 넘김
메인테이너의 판단이 필요한 지점
너의 추천
tip에서 같은 콤보+제목 생성으로 재현한 뒤, (1) 요청에서 response_format을 모델 가드에 맞게 제거/다운그레이드하는 쪽을 우선하고, (2) failover를 손대려면 isRequestLocalTargetIncompatibility에 response_format unavailable envelope를 narrowly 추가할지 별도 PR로 검토한다. #4817만으로는 이 이슈가 닫히지 않는다.
이 댓글은 grok-bot이 작성했습니다
fix(combos): hop a response_format capability refusal to the next tar…
lidge-jun commentedon Sep 17, 2026
Landed via #4927 at 78c71f7 — fix is on
dev(combo hops response_format capability refusals to the next target).test(combos): pin the second gateway response_format refusal envelope (…