cch=00000 플레이스홀더를 배송하는 대신 Claude Code 청구 헤더 cch 증명을 패치할 수 있도록 wrapFetchForCch를 내보냈습니다.websocket_connection_limit_reached 시 무제한, 제로 백오프 Codex WebSocket 재연결 루프를 수정했습니다: 콘텐츠 없음 재연결 경로가 재시도 예산을 참조하지 않았고 대기하지 않아서 한도가 계정 범위일 때 엔드포인트를 무한정 해썹했습니다. 이제 재연결은 다른 모든 WS 재시도 경로처럼 예산이 책정되고 지연되며, 예산이 소진되면 단일 SSE 재생으로 폴백됩니다.toolcall_end가 전달된 후 턴 재생을 거부하고 동일한 도구 호출을 다시 내보내는 대신 오류를 표시합니다.web_search_call)을 재생된 턴의 providerPayload와 추가 베이스라인에 유출하는 문제를 수정했습니다.websocket closed before open)는 치명적으로 분류되어 전체 세션에서 WebSocket을 비활성화했습니다. 이제 오류 정리는 CONNECTING 소켓을 건너뛰고 풀이 대체 핸드셰이크(제한됨)에 다시 참여합니다.custom_tool_call_output 항목을 복구하지 않는 문제를 수정했습니다(오직 function_call_output만 어시스턴트 노트로 폴드됨). apply_patch 호출을 삭제하면서 결과를 유지하는 압축 스플라이스가 기본 GPT-5 Codex 도구 집합에서 하드 400을 생성했습니다.processResponsesStream이 라우팅된 항목 대신 단순 itemId 컨텐츠 스캔을 통해 추론 항목을 최종화하는 문제를 수정했습니다. id가 없는 추론 항목(로컬 호스트)의 경우 모든 output_item.done이 첫 번째 생각 블록과 일치했고, 두 번째 항목의 텍스트가 이를 덮어썼으며 두 번째 블록이 결코 최종화되거나 서명되지 않았습니다.processResponsesStream이 output_item.added 이벤트가 손실된(손실성 프록시) 도구 호출 및 메시지 텍스트를 삭제하는 문제를 수정했습니다. toolcall_end가 매달린 contentIndex로 내보내졌지만 호출이 message.content에 들어가지 않아서 에이전트 루프가 이를 실행하지 않았습니다. 이제 완료 핸들러가 누락된 블록을 합성합니다. 아직 열려있는 도구 호출 블록도 response.completed에서 최종 파싱되므로 toolUse 오버라이드가 에이전트에 부실한 {} 인수를 전달할 수 없습니다.response.incomplete가 incomplete_details.reason: "content_filter"와 함께 토큰 한도 잘림(stopReason: "length")으로 보고되는 문제를 수정했습니다. 에이전트 루프의 길이 복구가 필터링된 프롬프트를 "단축"하도록 모델에 요청했습니다. 콘텐츠 필터링된 턴은 이제 오류로 표시되고, 사용량도 response.failed 이벤트에서 채워지며, 알 수 없는 터미널 상태는 완전히 스트림된 응답을 버리는 대신 로깅된 이상과 함께 "stop"으로 저하됩니다.premiumRequests 회계가 실패/취소된 응답에서 삭제되는 문제를 수정했습니다. populateResponsesUsageFromResponse가 usage를 전체적으로 대체했고 오류 경로가 성공 경로 재적용 전에 throw했습니다. 이제 채우기가 필드를 보존합니다.deduplicateToolCallIds가 전체 복합 Responses id(callId|itemId)에 접미사를 붙이는 문제를 수정했습니다. normalizeResponsesToolCallId가 인코드 시간에 첫 번째 세그먼트를 와이어 call_id로 추출하므로 두 복사본이 모두 하나의 call_id로 축소되고 요청이 중복 호출/출력 쌍을 배송했습니다. 이제 접미사와 길이 예산이 세그먼트당 적용됩니다.transformMessages의 동일 모델 신뢰 규칙과 일치시키는 외부 서명을 이미 제거합니다).reasoning.encrypted_content를 요청하면서 store: false를 생략하고(OpenAI당 무상태 전용), 일치하지 않는 function_call_output 항목과 쌍을 이루는 커스텀 도구 호출을 재생하고(customCallIds가 결코 연결되지 않음), SDK의 내부 재시도(maxRetries 5)가 명시적 첫 이벤트 기한 내에 자동으로 재POST하도록 허용하고, 호출자가 cacheRetention: "none"을 통해 옵트아웃한 경우 prompt_cache_key를 보내는 문제를 수정했습니다.onResponse 알림 콜백 전체에 걸쳐 무장된 상태로 유지되고(느린 콜백이 이미 연결된 스트림을 중단함), Copilot 일시적 모델 재시도가 이미 중단된 신호에서 재시도를 하고(즉각적인 데드 재시도가 스케줄러의 AbortError를 표시함), Codex reasoningSummary: null이 "auto"로 강제 변환되고(문서화된 생략 요약 계약에 도달할 수 없음), 중첩된 Codex 오류 코드(response.error.code)가 연결 한도/이전 응답 복구 매처에 보이지 않고, 세션 id가 x-client-request-id 헤더를 통해 PI_CODEX_DEBUG 로그에 비감지 유출되는 문제를 수정했습니다.processResponsesStream(openai-responses 및 azure-openai-responses에서 공유)이 터미널 response.incomplete 이벤트를 무시하는 문제를 수정했습니다. 최대 출력 토큰 초과로 잘린 응답이 stopReason: "stop", 0 사용량 및 비용 없이 끝났으며 보고된 토큰 수가 있는 "length"가 아닙니다. response.incomplete는 이제 response.completed와 함께 처리되고 유휴 감시견의 스트림 진행으로 계산됩니다.response.output_item.done 후 일시적 partialJson 누적 버퍼(및 잠재적으로 부실한 arguments.input)를 유지하는 문제를 수정했습니다. function_call 분기는 이미 이를 정리했습니다.providerPayload에 유출하는 문제를 수정했습니다. 실패 전에 완료된 부실한 추론 항목이 후속 요청의 재시도 자신의 항목과 함께 기록 입력으로 재전송되었습니다.response.completed가 버려져서 완료된 응답이 虚の websocket closed 오류와 전체 요청 재생으로 바뀌었습니다. 이제 오류가 보류 중인 데이터 프레임 뒤에 추가됩니다.getOrCreateCodexWebSocketConnection 호출자(사전 가열이 첫 요청과 경쟁)가 서로의 인플라이트 핸드셰이크를 해체하는 문제를 수정했습니다. CONNECTING 소켓을 닫으면 다른 호출자가 치명적인 websocket closed before open으로 거부되어 전체 세션에서 WebSocket을 비활성화했습니다. 이제 호출자가 보류 중인 핸드셰이크에 참여합니다.toolcall_end가 이미 소비자에게 전달된 후 SSE를 통해 턴을 재생하는 것을 중지했습니다(canSafelyReplayWebsocketOverSse 가드가 우회되어 동일한 도구 호출을 재내보냈습니다). 이제 오류가 표시됩니다.custom_tool_call_input.delta 프레임으로 확장했습니다. 이는 스트림 진행으로 계산되어 퇴화된 응답이 버퍼 성장에 제한 없이 무한정 살아있을 수 있었습니다.response.created 이벤트로 보고하면서 기록된 첫 토큰까지의 시간을 재설정하는 문제를 수정했습니다.xhigh를 노출합니다. Fable/Mythos 및 Opus 4.7+ 요청은 이제 사용자 high/xhigh를 OpenRouter의 Anthropic xhigh/max 노력 척도에 매핑합니다.stop_reason이 응답을 완전히 스트림한 후 전체 턴을 실패하도록 하는 문제를 수정했습니다. mapStopReason이 인식되지 않는 값에서 throw했고, 이유가 후행 message_delta에 도착하므로 오류가 재시도 불가능했습니다. 라이브 model_context_window_exceeded 중지 이유(Sonnet 4.5+ 기본값)가 이 경로를 발동했습니다. 이제 length로 매핑되고 미래의 알 수 없는 이유는 오류 대신 로깅된 이상 더하기 정상 stop으로 저하됩니다.CLAUDE_CODE_MAX_OUTPUT_TOKENS 고정은 OAuth 와이어 핑거프린트와 일치하도록 존재하지만 buildParams가 이를 무조건 적용했고, API 키 호출자에 대해 128k 출력 모델(예: Opus 4.8)의 출력 예산을 자동으로 반으로 줄였습니다. OAuth 요청은 고정을 유지합니다.stopReason: "stop" 어시스턴트 메시지에 errorMessage를 배송하는 것을 중지했습니다. 문법 너무 큼 400이 비엄격 재시도를 촉발한 후 원본 400 텍스트가 재시도가 성공했을 때에도 최종 메시지에 유지되었습니다. errorMessage 존재를 실패로 취급하는 소비자(예: 잔액 프로브)가 턴을 잘못 분류했고, 부실한 텍스트가 나중의 거부 설명을 억제했습니다. 폴백은 이제 로깅됩니다.User-Agent 헤더가 비 OAuth Anthropic 요청에서 자동으로 삭제되는 문제를 수정했습니다. enforcedHeaderKeys가 모든 분기에서 modelHeaders에서 헤더를 필터링했지만 오직 OAuth 분기만 다시 하나를 설정했습니다. Cloudflare-gateway, bearer-gateway 및 X-Api-Key 분기는 이제 호출자의 값을 그대로 전달합니다.fastModeDisabled 제공자 상태) fast-mode-2026-02-01 베타 헤더 전송을 중지했습니다. 이미 삭제된 speed 파라미터와 일치합니다.buildAnthropicHeaders가 API 키 요청을 전체 Claude Code OAuth 베타 목록(oauth-2025-04-20, claude-code-20250219 등)으로 기본화하는 것을 중지했습니다. claudeCodeBetas 기본값은 이제 OAuth 제어되며 스트리밍 경로와 일치합니다. 웹 검색 헤더 빌더가 기본값을 찰 유일한 호출자였으므로 API 키 검색 요청은 이제 자신의 베타만 포함합니다(예: web-search-2025-03-05). 빈 anthropic-beta 헤더는 빈 문자열로 전송되는 대신 완전히 생략됩니다.developer 메시지가 Opus 4.8+/Fable/Mythos 5에서 대화 중 system 턴으로 업그레이드되는 문제를 수정했습니다. 시스템 컨텐츠는 와이어에서 텍스트만이므로 업그레이드 가능 위치에서 이미지 블록을 담은 개발자 턴이 400을 생성했습니다. 이제 user 메시지로 유지됩니다.message_delta가 터미널 중지 플래그로 제어되지 않았습니다(컨텐츠 이벤트 및 중복 message_start는 제어됨). 따라서 스플라이스의 stop_reason/사용량이 완료된 턴을 대체했습니다. tool_use 턴이 stop으로 재레이블될 수 있었고 그러면 하네스가 스트림된 도구 호출을 실행하지 않았습니다. 이제 터미널 후 델타가 엔벨로프 이상으로 로깅되고 건너뜁니다.message_start 전에 도착하는 ping이 Anthropic 첫 이벤트 감시견을 소비하는 문제를 수정했습니다. 중단은 그러면 재시도 가능한 첫 이벤트 타임아웃 대신 터미널 중간 스트림 유휴 타임아웃으로 분류되었습니다. Ping은 더 이상 첫 항목으로 계산되지 않지만 컨텐츠가 흐르면 유휴 기한을 새로 고칩니다.message_start/message_delta/content_block_* 엔벨로프에서 usage/delta 객체를 생략할 때 턴을 재시도 불가능한 TypeError로 충돌하게 하는 문제를 수정했습니다. 누락된 페이로드는 이제 다른 모든 잘못된 프레임 경우처럼 로깅된 엔벨로프 이상으로 저하됩니다.applyPromptCaching이 thinking/redacted_thinking 블록에 cache_control을 배치하는 문제를 수정했습니다. Anthropic이 400으로 이를 거부합니다. 후행 캐시 윈도우 내 추론 전용 어시스턴트 턴(예: 이어지는 합성 Continue. 패드)이 더 이상 중단점을 수신하지 않습니다.assistant 파라미터가 와이어에 도착하는 문제를 수정했습니다. Anthropic이 교대하지 않는 어시스턴트 턴에서 400으로 나감. 깨진 삼중항이 후속 요청 모두에서 재생되었습니다. 이제 user: "Continue." 구분자가 삽입되어 후행 사전 채우기 폴백과 일치합니다.supportsAdaptiveThinkingDisplay가 단순 날짜가 있는 Opus id를 잘못 파싱하는 문제를 수정했습니다. claude-opus-4-20250514(Opus 4.0)가 부 버전 20250514 ≥ 4.7로 파싱되어 API 키 Opus 4.0 요청에 대해 interleaved-thinking-2025-05-14 베타를 자동으로 삭제했습니다.output_config.effort가 적응형 전용 Claude 모델(effort:"low" 핀)에 대한 추론 끔 요청에서 effort-2025-11-24 베타 없이 배송되고, 대화 중 system 역할이 API 키 및 OAuth 유틸리티 요청에서 mid-conversation-system-2026-04-07 없이 배송되는 문제를 수정했습니다. 요청이 해당 필드를 실을 수 있을 때마다 두 베타가 추가됩니다.Content-Type 및 anthropic-version 헤더 없이 나가는 문제를 수정했습니다. Copilot 분기가 처음부터 헤더를 구축하고 Bun의 fetch가 문자열 본문에 대해 Content-Type을 기본화하지 않습니다. 이제 두 헤더가 다른 모든 분기와 일치하도록 고정됩니다.PI_STREAM_FIRST_EVENT_TIMEOUT_MS=0) 클라이언트의 내부 maxRetries: 5가 재활성화되고 제공자 루프의 3 재시도와 쌓였습니다. 이중 백오프가 있는 최대 24 와이어 시도입니다. 제공자는 이제 무조건 per-request maxRetries: 0을 고정합니다.AnthropicMessagesClient가 코어 요청 필드 후 fetchOptions를 펼쳐서 호출자 제공 signal/method/body가 타임아웃 컨트롤러를 자동으로 분리하거나 요청을 손상시킬 수 있게 하는 문제를 수정했습니다. 전송 추가 사항(TLS)은 계속 통과합니다. 코어 필드가 이제 항상 이깁니다.claude-cli/2.1.160)와 OAuth 부트스트랩(claude-code/2.1.160)이 부실한 버전을 고정했으며 /v1/messages가 2.1.165를 보고했습니다. 둘 다 이제 claudeCodeVersion에서 파생됩니다.분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.