
“이번 달 API 비용이 왜 이렇게 나왔지?” 결제 내역을 확인한 순간 눈을 의심했다. Claude Code를 도입하고 나서 개발 생산성은 비약적으로 올랐지만, 정작 내 지갑은 생각보다 훨씬 빠르게 털리고 있었다. 범인은 바로 우리가 인식하지 못하는 사이에 쏟아지는 ‘출력 토큰’의 낭비였다.
보이지 않는 비용, Extended Thinking의 함정
Claude Code를 사용하다 보면 모델이 답변을 내놓기 전 깊게 고민하는 과정을 거친다. 이것이 바로 Extended Thinking 기능인데, 복잡한 아키텍처 설계나 까다로운 버그 수정에는 매우 유용하다. 하지만 문제는 이 ‘생각하는 과정’ 자체가 출력 토큰으로 계산된다는 점이다.
기본 설정 상태에서 Extended Thinking은 요청당 최대 31,999개의 출력 토큰을 예약한다. 단순한 파일 읽기나 간단한 리팩토링 작업에서도 모델이 과하게 고민하며 토큰을 태우고 있다면, 이는 명백한 자원 낭비다. 실제로 많은 사용자가 이 설정값을 조정하는 것만으로도 전체 토큰 소모량을 70~75%까지 드라마틱하게 줄이는 경험을 하고 있다.
특히 claude-opus-4-7 이상의 최신 모델에서는 수동 설정 방식이 변경되어 adaptive thinking 방식을 권장한다. 하지만 여전히 많은 환경에서 budget_tokens 설정이 비용의 핵심 키를 쥐고 있다. 내 작업의 복잡도에 맞춰 이 상한선을 낮추는 것이 최적화의 첫걸음이다.
실전 토큰 다이어트: 설정 파일 최적화하기
가장 확실한 방법은 Claude Code의 설정 파일에 직접 제한 값을 입력하는 것이다. 단순히 채팅창에서 요청하는 것보다 설정 파일(settings.json)을 통해 기본값을 고정하는 것이 훨씬 효율적이다. 특히 메인 모델과 서브 에이전트 모델을 분리하는 전략이 필요하다.
다음은 내가 실제로 적용하여 비용을 절감한 설정 예시이다. ~/.claude/settings.json 경로의 파일을 열어 아래 내용을 추가하거나 수정해 보자.
{
"model": "sonnet",
"env": {
"MAX_THINKING_TOKENS": "10000",
"CLAUDE_CODE_SUBAGENT_MODEL": "haiku"
}
}
여기서 MAX_THINKING_TOKENS를 10,000 정도로 낮추면, 단순 작업에서 발생하는 불필요한 추론 토큰 낭비를 막을 수 있다. 또한 CLAUDE_CODE_SUBAGENT_MODEL을 haiku로 설정하는 것이 핵심이다. 파일 탐색이나 단순 테스트 실행 같은 보조 작업(Task tool)을 비용이 훨씬 저렴한 Haiku 모델에게 맡기면, 전체적인 비용 구조가 매우 가벼워진다.
워크플로우에 녹여내는 비용 관리 습관
설정을 바꿨다고 해서 끝이 아니다. 실제 사용 패턴에서도 토큰을 아끼는 습관이 필요하다. 가장 추천하는 방법은 컨텍스트 초기화와 모델 스위칭의 적절한 활용이다.
작업의 성격에 따라 다음과 같은 순서로 도구를 활용해 보길 권한다.
- 단순 탐색 및 파일 읽기:
/model haiku명령어로 모델을 전환하여 가볍게 시작한다. - 일반적인 구현 및 리뷰: 기본 모델인
sonnet을 사용하되,Alt+T(Windows/Linux) 또는Option+T(macOS) 단축키를 이용해 Extended Thinking 기능을 필요할 때만 켜고 끈다. - 복잡한 아키텍처 설계:
/model opus로 전환하여 깊은 추론을 수행한다. - 주제 전환 시:
/clear명령어를 사용하여 이전 작업의 불필요한 컨텍스트가 다음 요청에 포함되어 토큰을 낭비하는 것을 방지한다.
만약 현재 세션에서 얼마나 많은 비용이 발생하고 있는지 궁금하다면 /cost 명령어를 입력해 보자. 현재 세션의 총 비용과 토큰 사용량, 코드 변경 라인 수가 요약되어 출력된다. 이를 통해 어떤 작업에서 토큰이 급증했는지 모니터링하며 MAX_THINKING_TOKENS 값을 미세 조정할 수 있다.
예상치 못한 에러와 해결 팁
설정을 변경하다 보면 가끔 400 Error를 마주할 때가 있다. 특히 최신 모델인 Opus 4.7 버전에서 수동으로 budget_tokens를 지정하려고 하면 발생한다. 이는 해당 모델부터 수동 설정 방식이 폐지되고 adaptive thinking 방식으로 전환되었기 때문이다.
이런 경우 당황하지 말고 설정에서 thinking: {type: "adaptive"} 형태의 옵션을 확인하거나, 최신 SDK 업데이트를 통해 모델별 권장 설정값을 다시 적용해야 한다. 또한, 일부 커뮤니티에서 언급되는 CLAUDE_AUTOCOMPACT_PCT_OVERRIDE 설정의 경우, 빌드 버전에 따라 오히려 압축 임계값을 낮춰 더 자주 압축을 수행하게 만드는 부작용이 보고되고 있다. 설정 후 성능이 떨어진다고 느껴진다면 해당 옵션을 제거하고 /compact 명령어를 통해 수동으로 컨텍스트를 정리하는 것이 더 안전하다.
더 효율적인 AI 협업을 위하여
결국 AI 도구를 사용하는 핵심은 ‘성능’과 ‘비용’ 사이의 최적의 균형점을 찾는 일이다. 무조건 저렴한 모델만 쓴다고 능사는 아니며, 그렇다고 모든 작업에 최고 사양의 추론 모델을 붙이는 것은 낭비다. 이번 최적화를 통해 배운 점은 AI에게 주는 ‘생각의 공간’ 역시 우리가 제어할 수 있는 리소스라는 사실이다.
이제 여러분의 settings.json을 확인해 볼 차례다. 혹시 나도 모르게 3만 개가 넘는 생각 토큰을 매 요청마다 낭비하고 있지는 않았는가? 다음에는 어떤 프롬프트 전략을 써야 토큰 소모를 더 줄이면서도 정확한 코드를 얻어낼 수 있을지 고민해 봐야겠다.