이 글은 JudyAI Lab의 AI 엔지니어링 시리즈 중 하나입니다 — 100편 이상 발행된 가이드, 60개국 5,000명 이상의 주간 독자가 읽는 콘텐츠로, AI 에이전트·트레이딩 시스템·콘텐츠 파이프라인의 실전 운영에 초점을 둡니다.

한 줄 요약

2026년 8월 31일부터 Anthropic은 Claude Fable 5.1의 ‘암호화 사고 체인’에 새로운 잠금장치를 추가했다. 이 추론은 생성될 당시의 컨텍스트 전체에 묶인다. API를 통해 그 알아볼 수 없는 암호화된 사고 블록을 받으면, 다음 턴에 다시 전송할 때 당시의 시스템 프롬프트, 툴 정의, 대화 히스토리를 한 글자도 틀리지 않고 그대로 돌려보내야 한다. 바뀌면 그 즉시 무효다.

예전에는 “모델을 바꿔서 사고를 훔치는” 것을 막았다면, 이번에는 “컨텍스트를 바꿔서 사고를 갖다 붙이는” 것까지 함께 막았다.

먼저 ‘암호화 사고 체인’이 무엇인지부터

지금의 플래그십 모델들은 어려운 문제에 답하기 전에 머릿속으로 긴 초안을 작성한다—업계에서는 이를 extended thinking(확장 사고)이라 부르고, 이 글에서는 편의상 ‘사고 체인’이라 부르겠다. 정식으로 답을 내놓기 전에 초안지에 전체 풀이 과정을 한 번 쭉 써본다고 생각하면 된다.

문제는 이 초안지가 너무 값어치가 있다는 것이다. 답만 도용당하면 그 문제 하나의 손실로 끝나지만, 풀이 과정 전체를 통째로 훔치면 이 모델이 “어떻게 사고하는지"에 대한 능력 자체를 복제해가는 셈이다—업계에서는 이를 **모델 증류(distillation)**라 부른다. 강한 모델의 출력을 이용해 약한 모델을 그 값싼 대역으로 학습시키는 기법이다.

그래서 Anthropic(그리고 OpenAI, Google도 마찬가지로)은 오래전부터 이 초안지를 그대로 보여주지 않았다. API를 통해 받는 사고 블록은 몇백 자 정도의, Anthropic이 키를 쥐고 있는 암호화 서명이며, 사람 눈에는 그저 알아볼 수 없는 문자열로 보인다. 사람은 읽을 수 없지만 모델은 읽을 수 있다—바로 이 지점이 핵심이자 취약점의 근원이다.

취약점은 어디에: 작은 모델을 ‘복호화 인질’로 삼기

올해 나온 일련의 보안 연구(arXiv에 실린 논문 《Stealing Reasoning Traces from Proprietary LLM APIs》가 가장 명확하게 설명한다)는 매우 영리한 사실 하나를 지적했다.

그 암호화된 사고는 서명 단계에서 “어느 모델이 생성했는지"에 묶여 있지 않았다는 것이다. 즉, 방어가 가장 견고한 플래그십 모델(예를 들어 Claude Opus 4.8)이 뱉어낸 암호화 추론 블록을, 같은 공급사의 인프라 안에서 다른 모델의 API 요청에 합법적으로 끼워 넣을 수 있었다.

공격 수법은 이렇게 교묘해진다.

  1. 먼저 방어가 가장 강한 Opus에게 어려운 문제를 풀게 해서, 고품질의 암호화 사고 블록을 얻는다.
  2. 이 암호화 블록을 방어가 상대적으로 약하고 ‘말을 잘 듣는’ 작은 모델(예를 들어 Haiku)의 요청에 끼워 넣는다.
  3. 이 작은 모델을 유도한다. “네가 지난 턴에 한 생각을 그대로 읽어줘.”

작은 모델은 그 암호화된 내용을 읽을 수 있고 방어선도 상대적으로 느슨하기 때문에, 정말로 Opus의 완전한 초안을 한 글자씩 그대로 읽어버린다. 공격자는 단단히 방어된 플래그십 모델과 정면으로 부딪힐 필요 없이, 같은 가문의 약한 동생 모델을 복호화 인질로 삼아 큰 모델의 풀이 과정을 그대로 훔쳐 읽는 셈이다. 연구팀은 수학 문제와 코딩 문제 모두에서 이 공격이 성립함을 검증했다.

게다가 이는 Anthropic 한 곳만의 문제가 아니다—여러 보안 매체가 보도한 바에 따르면, “약한 모델이 강한 모델의 숨겨진 추론을 대신 풀어내는” 같은 유형의 취약점이 OpenAI, Google의 API에서도 검증된 바 있다. 이는 ‘암호화 추론’이라는 설계 전체가 공유하는 공통의 허점이지, 어느 한 회사의 일시적 실수가 아니다.

Anthropic의 두 차례 패치: 먼저 모델을 잠그고, 그다음 컨텍스트를 잠그다

이름부터 한 줄로 짚고 넘어가자. Opus는 가장 강하고 비싼 플래그십, Haiku는 물량을 처리하기 위한 가장 저렴한 소형 모델, Fable은 이번 세대 제품 라인의 코드명(5→5.1은 버전)이다. 공격이 성립했던 이유는 바로 이들이 “같은 회사, 같은 세대의 친척"이라 암호화 블록이 서로 통했기 때문이다.

첫 번째 패치(Fable 5 단계, 올해 6월): 모델 바인딩. 암호화 사고 블록이 자기 출신을 인식하게 만들었다—Opus가 생성한 사고 블록은 더 이상 Haiku 같은 다른 종류의 모델에게 넘겨 복호화시킬 수 없다. 이 조치로 “모델을 바꿔서 사고를 훔치는” 경로를 먼저 막았다.

두 번째 패치(8월 31일, Fable 5.1, 공식 명칭 Preserved Thinking): 컨텍스트 바인딩. 이번에는 더 철저하다. Anthropic은 공식 설명에서 명확히 밝혔다—API가 이제 당신이 되돌려보낸 사고 블록이 처음 그것을 생성했던 시스템 프롬프트, 툴 세트, 메시지 히스토리와 완전히 일치하는지를 검증한다는 것이다.

앞선 컨텍스트가 조금이라도 바뀌면:

  • 기본값(strict 모드): API가 곧바로 오류를 반환하며, 해당 사고는 사용할 수 없다.
  • 완화 모드(non-strict): 요청 자체는 통과하지만, 영향을 받은 사고 블록은 버려지며, 응답에 어떤 블록이 버려졌는지 알려준다.

다시 말해, 공격자가 “컨텍스트를 바꿔서 예전 사고를 끼워 넣어 모델을 유도"하려는 경로도 함께 봉쇄된 것이다. 이것이 바로 제목에서 말한 ‘컨텍스트 락’이다.

개발자에게 실제로 타격을 주는 지점: 이 잠금장치는 당신의 에이전트 아키텍처와 태생적으로 충돌한다

대부분의 속보는 여기서 끝나지만, 개발자에게 실질적으로 타격을 줄 수 있는 한 가지가 아직 짚어지지 않았다.

이 컨텍스트 락은, 당신이 비용과 컨텍스트를 절약하기 위해 관행적으로 해온 여러 조치들과 근본적으로 서로 충돌한다.

당신이(혹은 당신이 쓰는 프레임워크가) 다중 턴 대화에서 배후에서 히스토리에 대해 얼마나 많은 손을 대고 있는지 생각해보라.

  • 슬라이딩 윈도우(sliding window): 대화가 너무 길어지면 가장 오래된 몇 턴을 잘라내고 최근 것만 남긴다.
  • 히스토리 압축/요약: 앞의 열 턴을 요약 한 단락으로 압축해 컨텍스트에 다시 넣어 토큰을 절약한다.
  • 동적 system prompt: 현재 상태에 따라 매 턴마다 몰래 시스템 프롬프트를 조금씩 바꾼다(페르소나 교체, 툴 설명 변경 등).

이 세 가지 모두 “사고 블록을 생성할 당시의 원본 컨텍스트"를 건드리게 된다. 그리고 컨텍스트 락의 판정 기준은 바로 이것이다. 원본 컨텍스트가 바뀌면, 그 암호화된 사고는 무효가 된다. 즉, 파이프라인을 정교하게 다듬을수록, 컨텍스트를 동적으로 자주 바꿀수록, 이 잠금장치를 밟을 가능성이 커진다는 뜻이다. LangChain, LlamaIndex, Dify, CrewAI 같은 프레임워크들은 대부분 배후에서 자동으로 히스토리를 관리하고 잘라낸다—바인딩 버전으로 업그레이드된 이후에는, 이런 자동 동작이 조용히 strict 모드 오류를 유발하거나, 완화 모드에서 사고 블록을 소리 없이 버릴 수 있는데도, 당신은 모델이 여전히 지난 턴의 추론을 가지고 있다고 착각할 수 있다.

그래서 사고 블록은 ‘보존’해야 할까, ‘버려야’ 할까? 의사결정표 한 장

먼저 간과되기 쉬운 비용 사실 하나를 짚고 가자. 사고 블록을 되돌려보내는 것도 input token(또는 cache read) 비용이 든다. 즉 “preserved thinking을 보존한다"는 것이 공짜가 아니라, 돈과 오류 위험을 지불하고 “모델이 지난 턴에 어떻게 생각했는지 기억하게” 하는 것과 맞바꾸는 셈이다. 언제 그만한 가치가 있고 언제 없는지를 표 하나로 정리했다.

시나리오사고 블록 처리 방식히스토리 컨텍스트 전략잠금 위험토큰 비용
단순 질의응답 / 상태 비저장 작업그대로 버림상관없음없음최소
다단계 Tool Use, 추론이 턴을 넘어 이어져야 함원본 그대로 엄격히 되돌려보냄이 체인은 동결, 컨텍스트를 건드리지 않음낮음(앞부분을 바꾸지 않는 한)높음(사고 블록 비용 지불)
슬라이딩 윈도우/자동 요약을 쓰는 긴 대화어차피 남길 수 없으니 그냥 버림자유롭게 자르고 압축없음(사고를 보존하지 않으므로)절약
‘사고도 남기고 앞부분도 바꾸고’ 싶은 경우이렇게 하지 말 것이렇게 하지 말 것최고, 반드시 잠금에 걸림돈 쓰고 오류까지

판단 기준은 사실 한 줄로 요약된다. 통째로 동결해서 원본 그대로 돌려보내거나, 아예 통째로 버리거나 둘 중 하나여야 한다. 가장 위험한 것은 “사고는 남기고 싶은데 앞부분도 바꾸고 싶은” 중간 상태다.

버리기로 결정했다면, 구현상으로는 전송 전에 히스토리 메시지에서 thinking 블록을 걸러내고 텍스트 응답만 남기면 된다. 예를 들면:

1
2
3
4
5
6
7
8
def strip_thinking(messages):
    # API로 되돌려보내기 전, assistant 메시지에서 thinking 블록을 제거하고 text만 남김
    cleaned = []
    for m in messages:
        if m["role"] == "assistant" and isinstance(m.get("content"), list):
            m = {**m, "content": [b for b in m["content"] if b.get("type") != "thinking"]}
        cleaned.append(m)
    return cleaned

이렇게 하면 컨텍스트가 변동되더라도 무효화될 사고 블록이 더 이상 없으므로, 안심하고 압축·자르기·system prompt 변경을 할 수 있다.

Dify, LangChain, CrewAI 같은 프레임워크를 쓰면서 직접 payload를 조립하지 않는다면, 두 가지에 집중하면 된다. 하나는 ‘메모리/히스토리 관리’ 설정을 찾아, assistant 사고 블록을 자동으로 보존하는 옵션을 끄거나(혹은 텍스트 출력만 저장하도록 명시적으로 설정) 하는 것이고, 다른 하나는 턴을 넘어 추론이 이어져야 하는 같은 체인에서 자동 요약/히스토리 자르기를 동시에 켜두지 않는 것이다—이 둘을 함께 켜두는 것이 가장 조용히 문제를 일으키는 조합이다.

품질 측면의 주의사항도 하나 있다. 사고 블록을 버리기로 선택하면, 모델은 다음 턴에서 자신이 지난 턴에 어떻게 추론했는지 ‘잊게’ 되므로 복잡한 작업에서 성능이 떨어질 수 있다. 이를 보완하는 방법은 명시적 출력으로 암묵적 추론을 대신하는 것이다. 모델이 응답 안에 결론, 이미 알려진 조건, 다음 단계 할 일 같은 구조화된 요점을 고정적으로 내놓게 해서, 이어져야 할 내용을 “눈에 보이고 잠금에 의해 무효화되지 않는” 텍스트로 적어두게 하는 것이지, 언제든 무효가 될 수 있는 그 암호화된 사고에 의존해서는 안 된다.

마무리: 아키텍처를 재점검하는 계기로 삼기

적용 범위는 8월 31일 이후 신규 생성된 API 계정이며, Claude 공식 플랫폼, Amazon Bedrock, Google Cloud Vertex AI, Microsoft Azure Foundry를 포괄한다. 기존 계정은 이후 진행 일정을 주시해 무방비 상태로 당하지 않도록 해야 한다.

그러나 “언제 내 차례가 오는가"보다 더 해볼 만한 일은, 이번 기회에 에이전트 아키텍처를 한 번 점검하는 것이다. 증류를 막으려는 이 술래잡기에는 끝이 없다—“모델이 암호화 블록을 읽을 수 있다"는 전제가 존재하는 한 공격 표면은 계속 남아 있으며, Anthropic이 할 수 있는 일은 한 겹씩 좁혀가는 것이지 한 번에 완전히 해결하는 것이 아니다. 당신 쪽에서 오래도록 유효할 진짜 설계 원칙은 이것이다.

당신의 에이전트가 “모델이 턴을 넘어 자신의 숨겨진 추론을 기억한다"는, 당신 눈에 보이지 않고 공급사의 규칙에 묶여 있는 것에 의존하게 하지 마라. 이어져야 할 상태는 스스로 명시적으로 저장하고 전달하라. ‘모델의 숨겨진 사고’는 언제든 무효가 될 수 있는 일회성 자원으로 취급하라. 그래야 Anthropic이 다음 버전에서 어떤 잠금장치를 추가하든, 다른 쪽에서 규칙을 바꿨다고 해서 당신의 시스템 전체가 무너지는 일은 없을 것이다. 컨텍스트 락은 제약이라기보다는, 애초에 있어서는 안 될 암묵적 의존성을 미리 떼어내도록 도와주는 장치에 가깝다.


본 글은 AI 뉴스 논평입니다. 기술적 세부사항은 Anthropic 공식 Preserved Thinking 설명 및 공개된 보안 연구를 바탕으로 정리했으며, 이후 공식 일정이나 범위가 조정될 경우 공식 발표를 기준으로 합니다.