Claude Opus 5 — 대화 중 도구 변경으로 캐시 보존하기

앤트로픽(Anthropic)이 최근 선보인 Claude Opus 5의 '대화 중 도구 변경' 기능, 다들 보셨나요? 에이전트를 설계할 때 늘 개발자들을 골치 아프게 만들던 프롬프트 캐시 문제를 아주 영리하게 해결했습니다.

기존 에이전트 루프에서는 대화 도중에 도구를 추가하거나 빼면 API 요청 최상단의 도구 목록이 달라지면서 프롬프트 캐시가 완전히 깨지곤 했습니다 [1]. 보안상의 이유로 처음에는 읽기 전용 도구만 주었다가 특정 조건에서만 쓰기 권한이 있는 도구를 점진적으로 노출하고 싶어도, 캐시가 깨져 발생하는 레이턴시와 비용 부담 때문에 망설여질 수밖에 없었죠.

하지만 이번에 출시된 mid-conversation-tool-changes-2026-07-01 베타 헤더를 사용하면 최상단 도구 정의는 그대로 둔 채 시스템 메시지 내부에서 도구를 동적으로 추가하거나 제거할 수 있습니다.

json
{
  "role": "system",
  "content": [
    {
      "type": "tool_addition",
      "name": "apply_patch"
    }
  ]
}

이렇게 구성하면 프롬프트 해시의 맨 앞부분이 변하지 않기 때문에 수만 토큰에 달하는 컨텍스트 캐시를 고스란히 유지할 수 있습니다. 실제 빌더들의 벤치마크에 따르면 대화가 여러 번 오가는 멀티턴 에이전트 루프에서 입력 처리 속도가 최대 85% 빨라지고 비용도 90% 가까이 절감된다고 합니다. 게다가 프롬프트 캐싱 최소 기준도 512 토큰으로 낮아져서 가벼운 작업에서도 캐싱 혜택을 쉽게 챙길 수 있게 되었습니다.

다만 이 기능은 Claude Opus 5, Mythos 5 등 특정 추론형 라인업에서만 베타로 제공되고 Sonnet 5에는 적용되지 않는다는 제약이 있습니다. 또한 대화의 첫 번째 메시지에서는 사용할 수 없습니다. 그래도 장기 실행 에이전트의 효율성을 비약적으로 높여줄 기능이라 앞으로의 프로덕션 에이전트 설계 패턴에 꽤 큰 변화를 줄 것 같네요 ㅎㅎ

(수정됨)