"클로드 API 응답에서 사고 블록이 갑자기 사라졌어요." "거절됐는데 요금이 나갔어요." 최근 클로드 API를 쓰는 개발자들이 겪을 수 있는 변화입니다. 앤트로픽이 2026년 10월 12일 증류(distillation) 공격 방어 방식을 공개했고, 그 사이 API에도 관련 변경이 하나씩 들어왔기 때문입니다.
결론부터 말하면, 앤트로픽은 새 방어 방법으로 증류자가 모으는 데이터가 약 90~99% 줄었다는 초기 근거가 있다고 밝혔습니다. 대신 정상 개발자도 거절 과금(9월 24일), 사고 블록 계정 제한, preserved thinking, user profiles(10월 20일) 네 가지를 확인해야 합니다.
✅ 이 글에서 얻을 수 있는 것
1. 앤트로픽이 증류를 막는 방식과 공개한 수치
2. API 개발자가 확인할 변경 4가지와 날짜
3. 재판매·게이트웨이 사업자가 user profiles를 검토해야 하는 이유
증류 공격이 왜 문제인가
증류 공격은 남의 모델에 질문을 대량으로 보내 답과 추론 과정을 모은 뒤, 그 데이터로 자기 모델을 학습시키는 방식입니다. 특히 모델이 답을 내기 전 거치는 추론 기록(사고 과정)이 핵심 재료입니다.
앤트로픽이 공개한 실험 결과가 이를 보여 줍니다.
| 학습 데이터 | SWE-bench Verified 점수 |
|---|---|
| Claude Opus 4.8의 전체 추론 기록 | 80.4% |
| Claude Opus 4.8의 요약된 추론 | 71.8% |
같은 모델에서 나온 데이터라도 추론을 요약하면 증류 효과가 눈에 띄게 낮아진다는 뜻입니다. 앤트로픽 방어의 대부분이 "추론 기록을 밖으로 덜 새게 하는 것"에 맞춰진 이유입니다.
앤트로픽이 막는 방식 4단계

- 추론 기록 이동 막기: Sonnet 5.5가 만든 사고 블록은 만든 계정 밖에서는 작동하지 않게 했습니다. Fable 5.1·Opus 5.5부터는 preserved thinking도 도입했습니다.
- 추출 시도 감지: 추론을 빼내려는 요청을 2단계 분류기로 걸러 냅니다. 오탐률(정상 요청을 잘못 막는 비율)은 0.1% 미만이고, Sonnet 5.5, Opus 5·5.5, Fable 5·5.1에 적용됩니다. 추론을 다른 언어로 번역하게 하거나 태그 안에 쓰게 하는 우회 기법도 이미 막았다고 밝혔습니다.
- 반복 시도에 비용: 9월 24일부터 출력 전 거절 중 bio·frontier_llm·reasoning_extraction 카테고리는 다시 과금됩니다.
- 계정 차단: 분류기 도입 후 증류자가 뽑아 간 추론 토큰은 이전보다 10~100배 적고, 증류 관련 계정 수만 개를 차단했습니다. 캠페인 시작 후 2시간 이내에 막는 경우가 많다고 합니다.
API 개발자가 확인할 변경 4가지

| 시점·대상 | 바뀐 점 | 확인할 것 |
|---|---|---|
| 2026년 9월 24일부터 | 출력 전 거절 중 stop_details.category가 bio, frontier_llm, reasoning_extraction이면 과금 |
거절 응답의 카테고리를 로그로 남기기 |
| Sonnet 5.5 (릴리스 노트 9월 28일) | 사고 블록은 만든 계정 또는 연결된 계정에서만 작동 | 다른 계정의 사고 블록을 재전송하는 구조인지 |
| Fable 5.1·Opus 5.5 | preserved thinking, 8월 31일 이후 생성된 새 계정은 이전 컨텍스트 편집 불가 | 대화 기록을 고쳐서 다시 보내는 로직 |
| 2026년 10월 20일부터 | /v1/user_profiles 추가 |
최종 고객을 나눠 관리해야 하는 사업 구조인지 |
1. 거절 과금: 다른 카테고리는 여전히 무료
9월 24일 이후에도 위 세 카테고리가 아닌 출력 전 거절은 과금되지 않습니다. 평범한 업무 자동화라면 영향이 작을 가능성이 큽니다. 다만 앤트로픽 스스로 오탐으로 거절된 요청에도 과금된다는 점을 트레이드오프로 인정했습니다. 청구 금액이 예상과 다르다면 거절 카테고리부터 확인하는 습관이 필요합니다.
아래는 거절 응답의 카테고리를 기록해 두는 필자 예시입니다. 응답 객체의 정확한 필드 구조는 사용하는 SDK 버전의 공식 문서로 확인하세요.
import logging
def log_refusal(response):
# stop_details 가 없으면 일반 응답으로 보고 넘어갑니다
details = getattr(response, "stop_details", None)
category = getattr(details, "category", None) if details else None
if category in ("bio", "frontier_llm", "reasoning_extraction"):
logging.warning("과금 대상 거절 카테고리: %s", category)
return category
2. 사고 블록: 오류 없이 조용히 사라진다
가장 놓치기 쉬운 변경입니다. 다른 계정이 만든 사고 블록을 보내면 API는 그 블록을 버리고 요청은 성공으로 처리합니다. 오류가 나지 않으니 "응답 품질이 왜 달라졌지?" 하고 한참 헤맬 수 있습니다.
⚠️ 접근 범위 표현이 출처마다 다릅니다. 앤트로픽 블로그는 "요청한 조직만", 릴리스 노트(9월 28일)는 "만든 계정 또는 연결된 계정"으로 적었습니다. 이 글은 릴리스 노트 표현을 기준으로 했습니다.
3. preserved thinking: 대화 기록 편집 로직 점검
앤트로픽은 preserved thinking 때문에 일부 개발자가 통합을 수정해야 했다고 인정했습니다. 8월 31일 이후 만든 계정이라면, 이전 턴의 내용을 바꿔 끼워 다시 보내는 방식이 그대로 동작하는지 테스트해 보세요.
📌 함께 보면 좋은 가이드: Claude Haiku 5.5 API 가격·마이그레이션|4.5에서 바꿀 때 400 오류 주의점 — 모델을 바꾸는 김에 함께 점검할 항목을 정리했습니다.
재판매·게이트웨이 사업자라면: user profiles
여러 고객의 요청을 한 API 조직으로 모아 보내는 플랫폼은 고객 한 명의 문제 요청 때문에 조직 전체가 안전 조치를 받을 위험이 있었던 것으로 보입니다. 10월 20일 추가된 /v1/user_profiles를 쓰면 안전 조치를 최종 고객 하나에만 적용받을 수 있습니다.
- 대상: 플랫폼, API 게이트웨이, 재판매 사업자
- 함께 나온 조직 웹훅(
webhooks-2026-10-07베타 헤더)은 별도 접근 요청이 필요합니다.
정리하면서 느낀 점
발표문을 보면 앤트로픽은 방어 효과와 함께 정상 개발자가 치르는 비용도 숨기지 않았습니다. 오탐 거절 과금과 통합 수정이 그것입니다. 실무에서는 "거절 카테고리 로그 남기기"와 "사고 블록을 계정 밖으로 옮기지 않기" 두 가지만 지켜도 대부분의 혼란을 줄일 수 있어 보입니다. 거절 과금 시 실제 청구 금액이 얼마인지는 공식 자료에 예시가 없어, 콘솔 사용량 화면으로 직접 확인하는 편이 안전합니다.
맺음말
- 앤트로픽은 증류자가 모으는 데이터가 약 90~99% 줄었다는 초기 근거를 공개했습니다.
- 9월 24일부터 bio·frontier_llm·reasoning_extraction 거절은 과금되고, 사고 블록은 만든 계정 안에서만 작동합니다.
- 재판매·게이트웨이 사업자는 10월 20일 추가된 user profiles로 고객별 안전 조치를 분리할 수 있습니다.
공식 자료
👉 다음에 읽을 글
- 클로드 사용량 한도 확인 방법|세션·주간 초기화 시간과 대처법 — 앱 쪽 사용량 한도가 궁금하다면
- 챗GPT 해킹 가능할까? GPT-6 아스트라 'Critical' 보안 등급 분석 — 다른 AI 회사의 보안 등급 사례