{"id":"IL-0022","org":"Anthropic","date":"2025-08-05","docs":["https://docs.jax.dev/en/latest/_autosummary/jax.lax.approx_max_k.html","https://openxla.org/xla/architecture"],"title":{"en":"Three overlapping infrastructure bugs (context-window misrouting, TPU output corruption and an XLA top-k miscompilation) degraded Claude's responses","ko":"Claude 서빙 인프라의 버그 세 개가 겹쳐 2025년 8월부터 9월 초까지 응답 품질이 간헐적으로 떨어졌다"},"domain":["ai-infra"],"impact":{"scope":"First-party Claude API and Claude Code, with smaller shares on Amazon Bedrock and Vertex AI; up to 16% of Sonnet 4 requests in the worst hour","users":"About 30% of Claude Code users who made requests in the period had at least one misrouted message","region":"global"},"review":{"written_by":"session","reviewed_at":null,"reviewed_by":null},"lessons":{"en":"Benchmarks, safety evaluations and canary deployments missed degradation that users noticed, partly because the model often recovers from isolated mistakes, and Anthropic relied too heavily on noisy evaluations, with no clear way to connect rising reports to each of its recent changes. Overlapping bugs with different symptoms on different platforms looked like random degradation, and privacy controls on user interactions kept engineers from examining the interactions needed to identify or reproduce the bugs. Anthropic concluded that it needs evaluations running continuously on production and a continuous signal from users, such as the /bug command in Claude Code and the thumbs-down button in the Claude apps.","ko":"이번 세 버그는 잡음이 많은 평가에 크게 기대는 검증으로는 잡히지 않았다. Claude 가 한 번씩 하는 실수에서는 잘 회복해서 문제가 평가 점수에 드러나지 않았다. 온라인 보고가 늘어도 그 보고를 최근 변경 하나하나와 연결할 방법이 없었다. 겹친 버그가 플랫폼마다 다른 증상을 다른 빈도로 내면 원인 없는 무작위 저하처럼 보인다. 근본 원인을 고쳤다고 믿고 오래된 우회 코드를 지우면 그 코드가 가리던 다른 버그가 드러날 수 있다. 문제를 좁히는 데 결국 도움이 된 것은 사용자가 알려 준 구체적인 변화와 예상 밖 동작의 예시, 그리고 여러 사용 사례에 걸쳐 나타난 패턴이었다."},"related":[],"sources":[{"url":"https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues","kind":"blog","license":"unknown","archived":"http://web.archive.org/web/20261020141707/https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues"}],"summary":{"en":"Between August and early September 2025 three separate infrastructure bugs intermittently degraded the quality of Claude's responses. Anthropic serves Claude through its own API, Amazon Bedrock and Google Cloud Vertex AI, on AWS Trainium, NVIDIA GPUs and Google TPUs, and the bugs affected these platforms differently. Anthropic states that it never reduces model quality because of demand, time of day or server load; the problems came from the bugs alone.\n\nContext window routing error. From 5 August some Sonnet 4 requests were misrouted to servers configured for the upcoming 1M-token context window, at first 0.8% of requests. A routine load-balancing change on 29 August sent more short-context requests there, and at the worst hour, on 31 August, 16% of Sonnet 4 requests were affected. About 30% of Claude Code users who made requests in this period had at least one message routed to the wrong server type. On Amazon Bedrock misrouted traffic peaked at 0.18% of Sonnet 4 requests from 12 August, and on Vertex AI fewer than 0.0004% of requests were affected between 27 August and 16 September. The routing logic was fixed on 4 September and the fix was rolled out to the first-party platform and Vertex AI by 16 September and to Bedrock by 18 September.\n\nOutput corruption. A misconfiguration deployed to the Claude API TPU servers on 25 August caused an error during token generation: a runtime performance optimization occasionally gave high probability to tokens that should rarely appear in the context. It affected Opus 4.1 and Opus 4 from 25 to 28 August and Sonnet 4 from 25 August to 2 September, and did not affect third-party platforms. The change was rolled back on 2 September.\n\nApproximate top-k miscompilation. On TPUs the models compute next-token probabilities in bf16, but the XLA compiler may run some operations in fp32 (the xla_allow_excess_precision flag, true by default), so operations that should agree on the most probable token sometimes disagreed and that token could drop out. In December 2024 Anthropic had deployed a workaround for the top token being dropped at temperature zero. The late-August rewrite of the sampling code fixed the precision issues and removed that workaround, which exposed a latent bug in the approximate top-k operation: for certain batch sizes and model configurations it sometimes returned completely wrong results. The bug was confirmed on Claude Haiku 3.5 and may have affected a subset of Sonnet 4 and Opus 3 on the Claude API. The change was rolled back for Haiku 3.5 on 4 September, for Opus 3 on 12 September, and for Sonnet 4 as a precaution although the bug could not be reproduced there. Anthropic switched to exact top-k, standardized some additional operations on fp32 precision, and is working with the XLA:TPU team on a compiler fix.","ko":"Anthropic 은 2025년 8월부터 9월 초까지 인프라 버그 세 개 때문에 Claude 의 응답 품질이 간헐적으로 떨어졌다고 밝혔다. Claude 는 자사 API, Amazon Bedrock, Google Cloud Vertex AI 로 제공되며 AWS Trainium, NVIDIA GPU, Google TPU 에서 돈다. 세 버그는 시기가 겹쳤고 플랫폼마다 다른 증상을 냈다.\n\n첫째는 컨텍스트 윈도우 라우팅 오류였다. 8월 5일부터 Sonnet 4 요청 일부가 곧 내놓을 1M 토큰 컨텍스트 윈도우용으로 설정된 서버로 잘못 보내졌다. 처음 영향은 요청의 0.8% 였지만, 8월 29일 평범한 로드 밸런싱 변경으로 짧은 컨텍스트 요청이 그 서버로 더 많이 갔다. 8월 31일 최악의 한 시간에는 Sonnet 4 요청의 16% 가 영향을 받았다. Amazon Bedrock 에서는 8월 12일부터 잘못 라우팅된 트래픽이 전체 Sonnet 4 요청의 최대 0.18% 였고, Vertex AI 에서는 8월 27일부터 9월 16일까지 요청의 0.0004% 미만이었다. 라우팅 로직 수정은 9월 4일 배포했고, 자사 플랫폼과 Vertex AI 는 9월 16일, Bedrock 은 9월 18일에 적용을 마쳤다.\n\n둘째는 출력 손상이었다. 8월 25일 Claude API 의 TPU 서버에 잘못된 설정이 배포됐고, 런타임 성능 최적화 때문에 토큰 생성 중 오류가 났다. 맥락상 거의 나오지 않아야 할 토큰이 가끔 높은 확률을 받아, 영어 질문에 태국어나 중국어 글자가 섞이거나 코드에 뻔한 문법 오류가 생겼다. Opus 4.1 과 Opus 4 는 8월 25일부터 28일까지, Sonnet 4 는 8월 25일부터 9월 2일까지 영향을 받았고, 외부 플랫폼은 영향이 없었다. 9월 2일 이 변경을 롤백했다.\n\n셋째는 XLA:TPU 컴파일러가 근사 top-k 연산을 잘못 컴파일한 문제였다. 근사 top-k 는 확률이 가장 높은 토큰을 빨리 찾는 성능 최적화 연산이다. 2024년 12월 Anthropic 은 TPU 구현이 temperature 가 0 일 때 가장 확률이 높은 토큰을 가끔 빠뜨리는 것을 발견하고 우회 코드를 넣었다. 원인은 혼합 정밀도였다. 모델은 다음 토큰 확률을 bf16 으로 계산하지만, XLA 는 기본값이 true 인 xla_allow_excess_precision 플래그 때문에 일부 연산을 fp32 로 바꿔 돌렸다. 그래서 정밀도가 다른 연산들이 어느 토큰의 확률이 가장 높은지 서로 다르게 판단했다.\n\n8월 25일과 26일 Anthropic 은 이 정밀도 문제를 고치려고 샘플링 코드를 다시 써서 배포했고, 근본 원인을 해결했다고 믿어 12월의 우회 코드를 지웠다. 그 우회 코드가 근사 top-k 의 더 깊은 버그를 가리고 있었다. 근사 top-k 는 특정 배치 크기와 모델 설정에서 완전히 틀린 결과를 냈다. Haiku 3.5 에서 영향이 확인됐고, Claude API 의 Sonnet 4 와 Opus 3 일부도 영향을 받았을 수 있었다. Haiku 3.5 는 9월 4일, Opus 3 는 9월 12일에 롤백했고, 재현되지 않은 Sonnet 4 도 만약을 위해 롤백했다. 이후 근사 top-k 대신 정확한 top-k 를 쓰고 일부 연산을 fp32 정밀도로 통일했다."},"trigger":{"en":"A bug from 5 August that sent some Sonnet 4 requests to servers configured for the upcoming 1M-token context window; a misconfiguration deployed to the Claude API TPU servers on 25 August; token-selection and sampling-code changes deployed on 25 and 26 August that removed a December 2024 workaround and exposed a latent XLA:TPU compiler bug; and a routine load-balancing change on 29 August that increased the misrouted traffic.","ko":"8월 5일 Sonnet 4 요청 일부를 1M 토큰 컨텍스트 윈도우용 서버로 보내는 라우팅 버그가 들어갔다. 8월 25일과 26일 배포에서 TPU 서버의 잘못된 설정과 토큰 선택 코드 변경이 더해졌다. 8월 29일에는 로드 밸런싱 변경으로 잘못 라우팅되는 트래픽이 늘었다."},"severity":"unknown","symptoms":["response-quality-degraded","requests-misrouted"],"timeline":{"detected_after":null,"resolved_after":null},"date_kind":"incident","detection":{"en":"User reports of degraded responses from early August, including reports online. They were hard to tell apart from normal feedback variation, and their rising frequency and persistence by late August led Anthropic to open an investigation; internal evaluations did not detect the degradation.","ko":"8월 초부터 사용자 보고가 들어왔지만 평소에도 늘 오르내리는 피드백과 구분되지 않았다. 8월 말 보고가 잦아지고 끊이지 않자 조사를 시작했고, 그 조사에서 버그 세 개가 드러났다. 벤치마크, 안전성 평가, 성능 지표, 소규모 카나리 배포는 이 저하를 잡지 못했다. XLA 버그는 Haiku 3.5 에서 먼저 관찰했고, Opus 3 의 문제는 나중에 이 버그와 맞아떨어지는 사용자 보고가 들어온 뒤에 알았다."},"components":["model-routing","tpu","xla"],"root_cause":"software-bug","remediation":[{"text":{"en":"Fixed the routing logic so short- and long-context requests go to the correct server pools (deployed 4 September, rolled out to all platforms by 18 September)","ko":"짧은 컨텍스트 요청과 긴 컨텍스트 요청이 맞는 서버 풀로 가도록 라우팅 로직을 고쳐 9월 4일 배포했다."}},{"text":{"en":"Rolled back the TPU server change that corrupted token generation (2 September)","ko":"TPU 서버의 잘못된 설정을 9월 2일 롤백했다."}},{"text":{"en":"Rolled back the top-k sampling change for Haiku 3.5 (4 September), Opus 3 (12 September) and Sonnet 4","ko":"토큰 선택 코드 변경을 Haiku 3.5 는 9월 4일, Opus 3 는 9월 12일에 롤백했고, Sonnet 4 도 만약을 위해 롤백했다."}},{"text":{"en":"Switched from approximate to exact top-k and standardized some additional operations on fp32 precision","ko":"근사 top-k 를 정확한 top-k 로 바꾸고 일부 연산을 fp32 정밀도로 통일했다."}}],"action_items":[{"text":{"en":"Add detection tests for unexpected character outputs to the deployment process","ko":"배포 과정에 예상하지 못한 글자 출력을 잡는 테스트를 넣었다."}},{"text":{"en":"Develop more sensitive evaluations that reliably tell working and broken implementations apart","ko":"정상 구현과 망가진 구현을 더 확실히 가려내는 평가를 만들었다."}},{"text":{"en":"Run quality evaluations continuously on true production systems","ko":"실제 운영 시스템에서 품질 평가를 계속 돌려 컨텍스트 윈도우 로드 밸런싱 오류 같은 문제를 잡는다."}},{"text":{"en":"Build infrastructure and tooling to debug community-sourced feedback faster without sacrificing user privacy","ko":"사용자 개인정보를 해치지 않으면서 커뮤니티 피드백을 디버깅할 수 있는 인프라와 도구를 만든다."}},{"text":{"en":"Fix the approximate top-k compiler bug together with the XLA:TPU team","ko":"XLA:TPU 팀과 함께 컴파일러 버그 수정을 진행한다."}}],"contributing":["overlapping-failures","monitoring-blind-spot","limited-debug-access","early-signal-ignored"],"recurrence_of":null,"symptoms_text":{"en":"From early August 2025 a number of users reported that Claude's responses had become worse. At first the reports were hard to tell apart from the normal variation in user feedback. By late August they had become frequent and persistent enough for Anthropic to open an investigation.\n\nWhat a user saw depended on which bug served the request. Some responses contained Thai or Chinese characters in reply to English prompts (an English question might get \"สวัสดี\" in the middle of the answer) or obvious syntax errors in code. Requests sent to the wrong server pool came back with degraded responses. Routing was sticky, so once a request landed on a wrong server, follow-up messages were likely to go to the same server, and some users were hit much harder than others.\n\nThe reports contradicted each other. The first bug touched about 0.8% of Sonnet 4 requests from 5 August, two more bugs came with deployments on 25 and 26 August, and a load-balancing change on 29 August started to increase the affected traffic, so many users had problems while others saw normal quality. Each bug showed different symptoms on different platforms at different rates, which looked like random, inconsistent degradation with no single cause.\n\nThe usual checks did not catch it. Benchmarks, safety evaluations, performance metrics, spot checks and canary deployments did not show what users described, partly because Claude often recovers well from an isolated mistake. Privacy controls limited engineers' access to interactions that were not sent in as feedback. When negative reports spiked on 29 August, nobody linked them right away to the routine load-balancing change. The compiler bug itself behaved inconsistently: it changed with unrelated operations before or after it and with whether debugging tools were enabled, and the same prompt could work on one request and fail on the next.","ko":"2025년 8월 초부터 일부 사용자가 Claude 의 응답이 나빠졌다고 알리기 시작했다. 처음 들어온 보고는 평소에도 늘 오르내리는 사용자 피드백과 구분하기 어려웠다. 8월 말이 되자 보고가 더 잦아지고 끊이지 않아 조사가 시작됐다.\n\n증상은 버그마다 달랐다. 영어로 물었는데 응답 중간에 \"สวัสดี\" 같은 태국어나 중국어 글자가 섞여 나왔고, 코드에 뻔한 문법 오류가 들어갔다. 다른 요청은 컨텍스트가 짧은데도 1M 토큰 컨텍스트 윈도우용 서버로 잘못 보내져 품질이 떨어진 응답을 받았다. 라우팅은 한번 정해진 서버를 계속 쓰는 방식이라, 한 번 잘못된 서버로 간 사용자는 이어지는 요청도 같은 서버로 가기 쉬웠다.\n\n8월 29일 평범한 로드 밸런싱 변경 뒤로 영향받는 트래픽이 크게 늘었다. 최악이었던 8월 31일 한 시간 동안 Sonnet 4 요청의 16% 가 영향을 받았고, 이 기간에 요청을 보낸 Claude Code 사용자의 약 30% 는 적어도 메시지 하나가 잘못된 서버로 갔다. 어떤 사용자는 문제를 겪고 다른 사용자는 멀쩡해서 보고끼리 서로 어긋났다. 팀은 8월 29일 부정적인 보고가 치솟았을 때도 이를 로드 밸런싱 변경과 바로 연결하지 못했다.\n\n평소 쓰던 벤치마크와 평가는 사용자가 겪는 품질 저하를 잡아내지 못했다. Claude 가 한 번씩 하는 실수에서는 잘 회복한다는 점도 한 이유였다. 개인정보 보호와 보안 통제 때문에 엔지니어가 사용자 대화를 볼 수 있는 때와 방법이 제한됐고, 피드백으로 보고되지 않은 대화는 더 그랬다. 세 버그는 플랫폼마다 다른 증상을 다른 빈도로 냈고, 하나의 원인을 가리키지 않는 무작위 저하처럼 보였다. XLA 컴파일러 버그는 앞뒤에 어떤 연산이 돌았는지, 디버깅 도구를 켰는지에 따라 동작이 달라져서, 같은 프롬프트가 한 번은 잘 되고 다음 요청에서는 실패했다."},"updated_at":"2026-11-10T00:00:37.612898Z","url":"https://benchlet.com/incidentlib/app/cases/IL-0022","org_slug":"anthropic"}