좋은 아침이에요! 오늘은 Claude를 쓰는 분이라면 이미 체감하고 있을지도 모르는 기능, 메시지 스레드예요.
그게 뭔가요?
원래 Claude의 Messages API는 ‘기억이 없는(stateless)’ 방식이에요. 대화가 10턴이면 매 턴마다 앞의 대화 전부를 다시 보내야 했죠. 메시지 스레드는 대화를 서버에 잠깐 맡겨 두는 기능이에요. 처음 한 번만 전체 대화와 system 프롬프트, 도구 목록을 보내고("thread": {"type": "create"}), 그다음부터는 새 메시지와 직전 응답의 id만 보내면 돼요("type": "continue"). 나머지는 서버가 이어 붙여 줘요.
왜 지금 뜨나요?
코딩 에이전트는 한 세션에 요청을 수백 번 보내고, 대화가 수십만 토큰까지 커져요. 매번 그걸 통째로 다시 올리는 것 자체가 시간을 잡아먹었죠. Anthropic에 따르면 대부분의 Claude Code 사용자에게 이미 기본으로 켜 두었고, 50만~100만 토큰짜리 요청에서 첫 토큰이 나오기까지의 시간(TTFT)이 중앙값 기준 약 35% 줄었다고 해요.
시점 정리
- 비슷한 개념은 예전부터 있었어요. OpenAI가 Assistants API의 Threads(2023년 11월)와 Responses API의
previous_response_id(2025년 3월)로 ‘서버가 대화를 들고 있는’ 방식을 먼저 내놨어요. 그러니 개념 자체는 새롭지 않아요. - 이번 소식은 새 거예요. Anthropic이 Messages API에 메시지 스레드를 퍼블릭 베타로 낸 건 2026년 11월 2일(미국 시간, 한국 시간 11월 3일 새벽)이에요. 베타 헤더 이름이
message-threads-2026-08-12인 걸 보면 내부 준비는 8월부터 했던 것 같아요.
Claude 쓰는 개발자는 어떻게 쓰면 되나요?
- Claude Code만 쓴다면 따로 할 일은 없어요. 이미 켜져 있을 가능성이 높고, 긴 세션에서 답이 조금 빨리 시작되는 정도로 느끼게 될 거예요.
- API로 직접 에이전트를 만든다면 긴 루프에서 써 볼 만해요. 다만 몇 가지는 꼭 알고 써야 해요.
- 토큰 비용은 그대로예요. 보내는 데이터만 줄 뿐 Claude는 매 턴 전체 대화를 다시 읽어요. 비용을 줄이려면 지금처럼 프롬프트 캐싱을 따로 켜야 해요.
- 5분 동안 요청이 없으면 만료돼요. 그러면 404가 오니까 전체 대화를 다시 보내 새 스레드를 만들어야 해요. 그래서 대화 원본은 내 쪽에서 계속 들고 있어야 해요. 공식 SDK의 thread helper가 이 재전송을 대신 해 줘요.
- 민감한 데이터에는 신중하게요. 메모리에 암호화해서 보관한다지만 ZDR(데이터 무보존)이나 HIPAA 환경에서는 쓸 수 없어요.
- 역할로 나누면 이래요. 대화의 원본과 기억은 내 코드가, “지금 이어서 빨리 답하기”는 서버 스레드가 맡는다고 보면 돼요. 짧은 단발성 호출이나 배치 작업(Message Batches는 지원도 안 돼요)에는 굳이 쓸 필요 없어요.
자세한 건 Anthropic 공식 문서와 발표 글에 있어요.
연관 용어
- Stateless vs Stateful API: 서버가 대화 상태를 기억하지 않느냐, 기억하느냐의 차이예요. 메시지 스레드는 ‘잠깐만 기억하는’ 중간쯤이에요.
- TTFT (Time To First Token): 요청을 보낸 뒤 첫 글자가 나오기까지 걸리는 시간이에요. 이번 기능이 줄이는 게 바로 이거예요.
- 프롬프트 캐싱 (Prompt Caching): 반복되는 앞부분을 캐시해 비용과 시간을 줄이는 기능이에요. 스레드와는 별개라서 같이 켜는 게 좋아요.