Claude Code 하위 에이전트별 비용: $0.17은 어디에 쓰였나
게이트웨이를 통해 수행한 Claude Code 1회 실행의 비용을 에이전트별로 나눠 분석했다. 전체 청구액은 $0.17이며, 에이전트 3개 각각의 첫 호출 비용을 합하면 전체의 72%다. 게이트웨이를 사용하는 데 필요한 설정은 환경 변수 2개다.
추천 모델
실시간 가격| 모델 | 평가 | 가격 |
|---|---|---|
| Claude Sonnet 5.5 두 개의 하위 에이전트를 사용한 11회 호출의 Claude Code 실행 비용은 캐시가 없는 상태에서 $0.1728였고, 반 분 후에는 $0.0812였습니다. 캐시 쓰기는 캐시가 없는 상태의 실행 비용 중 77%를 차지했습니다. | 데모에 사용된 모델 | $2/100만부터 |
목차
- Claude Code를 게이트웨이에 연결하려면?
- 추가 설정 없이 게이트웨이가 확인할 수 있는 정보는?
- $0.17은 어디에 쓰였나?
- 두 번째 실행 비용은?
- Claude Code가 표시하는 비용과 실제 청구액은 일치하나?
- 개발자별, 저장소별로 비용을 나누려면?
- 여러 세션의 에이전트 비용을 한꺼번에 보려면?
- 이 설정으로 얻을 수 없는 것은?
- FAQ
- Claude Code 세션 비용은 얼마인가?
- 팀의 Claude Code 비용은 어떻게 추적하나?
- Claude Code 하위 에이전트를 쓰면 비용이 더 드나?
- Claude Code가 출력하는 비용은 정확한가?
- CLAUDE_CODE_GATEWAY_HINT_HEADERS는 무엇을 하나?
- 관련 글
Claude Code는 세션 비용을 보여준다. 하지만 세션의 어느 부분에 비용이 들었는지는 알려주지 않는다. 팀에서 쓰기 시작하면 청구액이 어느 저장소, 어느 개발자에게서 발생했는지도 알기 어렵다. Claude Code와 모델 제공업체 사이에 게이트웨이 프록시를 두면 플러그인이나 래퍼 없이 둘 다 확인할 수 있다. 게이트웨이는 모든 요청을 받고, Claude Code는 이미 요청마다 세션 ID와 에이전트 ID를 붙여 보낸다. 이 글에서는 작은 작업 하나를 Synthorai 게이트웨이로 실행하고 결과를 살펴본다. 요청 11개에 $0.1728이 들었고, 에이전트 3개의 첫 호출이 전체 비용의 72%를 차지했다.
TL;DR
- 하위 에이전트 2개를 사용하는 Claude Sonnet 5.5 기반 Claude Code를 게이트웨이로 실행했을 때 $0.1728이 들었다. 반 분 뒤 다시 실행했을 때는 $0.0812이었다.
- 첫 실행 비용의 77%는 캐시 쓰기였고, 에이전트 3개의 첫 호출이 72%를 차지했다.
- 하위 에이전트 2개가 세션 비용의 39%를 차지했다.
- 환경 변수 2개로 Claude Code를 게이트웨이에 연결할 수 있다. 여기에 변수 하나를 더 설정하면 하위 에이전트의 유형도 표시된다.
코드는 github.com/synthorai-io/use-cases의 coding-agent-spend/에 있다. Python 3.10 이상과 claude 명령이 필요하다. 이 모델을 사용하려면 claude 버전이 2.1.280 이상이어야 한다.
git clone https://github.com/synthorai-io/use-cases
cd use-cases
cp .env.example .env # put your API key in it
cd coding-agent-spend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python run.py --hints --label repo=shipping --label _user=dev_1
스크립트는 테스트 하나가 실패하는 작은 샘플 저장소를 복사한 뒤 Claude Code를 실행한다. 게이트웨이 주소와 키는 해당 프로세스의 환경에만 설정하고, 빈 설정 디렉터리를 사용한다. 따라서 기존 Claude Code 설정을 읽거나 바꾸지 않는다. 한 번 실행하는 데 약 반 분이 걸린다. 스크립트는 --max-budget-usd로 실행당 비용을 $0.60으로 제한하며, 누적 비용이 $2를 넘을 수 있는 실행은 시작하지 않는다.

이 글의 수치는 2026년 10월 10일에 Claude Code 2.1.296과 Claude Sonnet 5.5로 실행한 결과다.
Claude Code를 게이트웨이에 연결하려면?
환경 변수 2개를 설정하면 된다. Claude Code는 Anthropic의 Messages API를 사용하고, 게이트웨이는 자체 주소에서 같은 API를 제공한다.
export ANTHROPIC_BASE_URL="https://synthorai.io" # no /v1: Claude Code adds /v1/messages itself
export ANTHROPIC_API_KEY="<your gateway key>"
그 밖에는 바꿀 것이 없다. 자세한 내용은 Claude Code 연동 페이지에서 확인할 수 있다. 이후 모든 세션의 모델 호출이 게이트웨이 요청 로그에 기록되고, 콘솔에서 묶어서 볼 수 있다.
추가 설정 없이 게이트웨이가 확인할 수 있는 정보는?
세션, 트레이스, 클라이언트, 각 하위 에이전트를 확인할 수 있다. Claude Code는 모든 요청에 자체 세션 ID를 보내므로, claude 실행 한 번이 콘솔의 세션 하나에 해당한다. 세션 페이지에는 클라이언트가 “Claude Code 2.1.296”으로 표시된다. 요청의 트레이스 ID도 콘솔에 표시되므로 세션에서 트레이스 목록을 볼 수 있다. 이번 실행에는 호출 6개와 5개로 구성된 트레이스 2개가 있었다. 호출은 이미 “이 세션의 에이전트” 표에서 메인 대화와 하위 에이전트별 행으로 나뉘어 있다.
하위 에이전트는 Claude Code가 작업 일부를 맡기기 위해 시작하는 별도 에이전트다. 자체 지침과 컨텍스트를 갖는다. 데모 작업은 하위 에이전트 2개를 요청한다. 내장 Explore 하위 에이전트는 규칙이 어디에 있는지 찾고, 사용자 정의 test-runner 하위 에이전트는 테스트를 실행한다.
기본 설정에서는 하위 에이전트가 a05e467acd14b25e6 같은 ID로 표시된다. 2개가 있었다는 사실은 알 수 있지만 어느 것이 어떤 에이전트인지는 구분할 수 없다. 변수 하나를 더 설정하면 해결된다.
export CLAUDE_CODE_GATEWAY_HINT_HEADERS=1
| 기본 설정 | 힌트 변수 설정 시 | |
|---|---|---|
| 세션, 트레이스, 클라이언트, 비용 | 표시 | 표시 |
| ID별 하위 에이전트 구분 | 표시 | 표시 |
하위 에이전트 유형 (Explore, custom) | 미표시 | 표시 |
| 각 호출의 종류와 호출 전에 실행된 도구 | 미표시 | 표시 |
이 변수를 설정하면 표에 하위 에이전트 유형이 표시된다. Logs에서 호출을 열면 호출 종류 (subagent:Explore)와 “이 호출 전에 실행된 도구” 목록도 볼 수 있다. 목록에는 Read 7 ms처럼 각 도구의 이름과 실행 시간이 나온다. 게이트웨이는 사용자가 지정한 이름이 아니라 에이전트 유형을 저장하므로, test-runner는 custom으로 표시된다. 도구 이름과 실행 시간은 저장하지만, 도구가 읽거나 쓴 내용은 저장하지 않는다.
$0.17은 어디에 쓰였나?
에이전트 3개에 쓰였으며, 대부분은 각 에이전트의 첫 호출에서 발생했다.
| 에이전트 | 호출 수 | 입력 token | 캐시 적중률 | 비용 |
|---|---|---|---|---|
| 메인 대화 | 6 | 159k | 78.9% | $0.1053 |
| Explore 하위 에이전트 | 3 | 47.5k | 64.7% | $0.0575 |
custom 하위 에이전트 (test-runner) | 2 | 5,323 | 48.1% | $0.0101 |
| 세션 | 11 | 212k | 74.9% | $0.1728 |
하위 에이전트 2개의 비용은 $0.0676으로, 세션 비용의 39%였다. 이들이 맡은 것은 전체 작업 중 가장 작은 두 가지였다. 소스 파일 3개로 구성된 라이브러리에서 규칙 하나를 찾고, 테스트 5개를 실행했다. 실제 수정은 >를 >=로 바꾸는 한 글자 변경이었다.
이유는 실행이 끝날 때 Claude Code가 출력하는 token 수에 있다.
claude-sonnet-5-5 20 in 158612 cache read 53058 cache write 2425 out $0.1728
모델 요금은 token 100만 개당 입력 $2, 출력 $10, 캐시 읽기 $0.10, 캐시 쓰기 $2.50이다. 이 요금을 위의 네 수치에 적용하면 다음과 같다.
| token 유형 | token 수 | 비용 | 비중 |
|---|---|---|---|
| 캐시 쓰기 | 53,058 | $0.1326 | 77% |
| 출력 | 2,425 | $0.0243 | 14% |
| 캐시 읽기 | 158,612 | $0.0159 | 9% |
| 캐시되지 않은 입력 | 20 | $0.0000 | 0% |
캐시 쓰기가 청구액의 77%를 차지한다. 프롬프트 접두부를 처음 보내면 캐시에 쓰며, 입력 요금의 1.25배가 든다. 이후 요청에서는 이 모델의 입력 요금의 20분의 1로 캐시를 읽는다. 코딩 에이전트의 프롬프트는 사용자가 아무것도 입력하기 전부터 길다. 시스템 프롬프트와 모든 도구의 정의가 들어 있기 때문이다. 그래서 에이전트의 첫 호출이 가장 비싸다.
각 에이전트는 자체 프롬프트로 시작하므로, 첫 호출 비용도 각각 발생한다.
| 첫 호출 대상 | 입력 token | 캐시 적중률 | 비용 |
|---|---|---|---|
| 메인 대화 | 30.0k | 0% | $0.0772 |
| Explore 하위 에이전트 | 14.9k | 0% | $0.0391 |
| custom 하위 에이전트 | 2,562 | 0% | $0.0077 |
이 호출 3개의 비용은 $0.1240으로, 실행 비용의 72%다. 이후 호출은 저렴하다. Explore 하위 에이전트의 두 번째와 세 번째 호출은 입력의 94%를 캐시에서 읽었고, 각각 $0.0052와 $0.0132가 들었다.
하위 에이전트가 읽는 대량의 내용을 메인 대화의 컨텍스트에 넣지 않아도 된다면 콜드 스타트 비용을 지불할 만하다. 실제 코드베이스에서 Explore가 하는 일이 바로 이것이다. 호출 한두 번이면 끝나는 작업은 메인 대화에서 처리하면 캐시 쓰기를 한 번 더 하지 않아도 된다. 여기서는 작은 저장소 하나만 사용했으므로, 작업 방식을 바꾸기 전에 자신의 세션에서 비용 분포를 확인하자.
두 번째 실행 비용은?
캐시가 남아 있을 때 시작하면 비용은 약 절반이다. 같은 작업을 반 분 뒤 다시 실행했다. 호출 수는 똑같이 11개였지만, 입력을 캐시에서 읽은 비율은 첫 실행의 74.9%에서 93.1%로 높아졌다. 비용은 $0.1728에서 $0.0812로 줄었다. 에이전트 3개의 첫 호출도 입력의 82%, 81%, 71%를 캐시에서 읽었다. 시작 프롬프트가 이전 실행에서 이미 캐시에 저장됐기 때문이다.
Anthropic 캐시는 기본적으로 항목을 5분간 유지하며, 읽을 때마다 유지 시간을 갱신한다. 한 저장소에서 계속 작업하는 개발자는 대부분 캐시가 남아 있는 상태의 요금을 낸다. 한 시간에 한 번 실행되는 예약 작업은 매번 캐시가 없는 상태의 요금을 낸다.
Claude Code가 표시하는 비용과 실제 청구액은 일치하나?
2.1.296에서는 소수점 넷째 자리까지 일치했다. 캐시가 없을 때 $0.1728, 남아 있을 때 $0.0812로 양쪽이 같았다. 다만 버전에 따라 다르다. Claude Code는 자체 요금표로 비용을 계산한다. 10월 8일에 이 모델을 실행할 수 있었던 2.1.278에서는 입력과 출력 token 100만 개당 $5와 $25를 적용했다. 실제 청구 요금은 $2와 $10이었으므로, 표시 비용은 청구액의 약 2.7배였다. token 수는 매번 양쪽이 같았다.
이 차이는 설정 하나에 영향을 준다. --max-budget-usd는 Claude Code가 계산한 비용이 한도에 도달하면 실행을 중단한다. 이전 버전에서는 Claude Code 계산으로 $0.60에 도달해 실행이 중단됐지만, 실제 청구액은 그 약 3분의 1이었다. 업그레이드한 뒤에는 세션 페이지와 표시 비용을 한 번 대조하자. 반드시 지켜야 하는 한도는 실제 청구액을 집계하는 곳, 즉 API 키의 지출 한도로 설정하자.
개발자별, 저장소별로 비용을 나누려면?
요청마다 라벨을 붙이면 된다. Claude Code가 이미 지원하는 사용자 정의 헤더용 환경 변수로 보낼 수 있다.
export ANTHROPIC_CUSTOM_HEADERS='X-Synthorai-Metadata: {"repo":"shipping","_user":"dev_1"}'
X-Synthorai-Metadata는 게이트웨이에서 라벨을 받는 헤더다. 짧은 문자열을 최대 10개 담는 중첩 없는 JSON 객체이며, _user는 요청 대상 사용자를 나타내는 키다. 데모의 --label 옵션은 바로 이 헤더를 설정한다. 위의 세션 페이지에서도 두 라벨이 태그로 표시된다.
개발자별 값은 각자의 셸 프로필에, 저장소별 값은 프로젝트 환경 변수를 불러오는 곳에 설정하면 다음 두 화면을 사용할 수 있다.
- Traces 검색창에
metadata.repo = shipping을 입력하면 해당 저장소의 세션이 나온다. - Analytics의 Breakdown 탭에서 Cost by metadata 카드는 키의 값별로 요청 수와 비용을 합산한다.
repo로는 저장소별 청구액을,_user로는 개발자별 청구액을 볼 수 있다.
공유 키 하나로도 가능하다. 개발자마다 별도 키를 발급해도 같은 방식으로 비용을 나눌 수 있고, 개별 지출 한도도 설정할 수 있다. 대신 관리할 키가 늘어난다.
여러 세션의 에이전트 비용을 한꺼번에 보려면?
Analytics의 Breakdown 탭에서 Cost by agent 카드를 사용하면 된다. 세션 페이지는 세션 하나의 비용을 나눠 보여준다. 이 카드는 선택한 기간에 포함된 모든 세션을 에이전트 유형별로 합산한다.

Explore × 2와 custom × 2는 앞서 실행한 캐시가 없는 실행과 캐시가 남아 있는 실행을 합친 값이다. 두 세션에 걸쳐 에이전트 유형별로 합산했다. Share 열은 선택한 기간의 전체 지출에서 각 행이 차지하는 비중이다. 해당 기간에는 다른 세션도 있었다. 힌트 변수가 없으면 하위 에이전트가 유형을 보내지 않으므로, “Sub-agent”라는 행에 함께 집계된다. LLM 에이전트 추적하기의 예제처럼 직접 만든 프로그램의 에이전트가 X-Agent-Id를 설정하면, 보낸 이름으로 행이 생긴다.
팀의 일주일치 세션을 이 화면에서 보면 하위 에이전트가 청구액에서 차지하는 비중이 작은지 큰지, 어느 유형에서 비용이 발생하는지 알 수 있다.
이 설정으로 얻을 수 없는 것은?
span ID, 사용자 정의 에이전트 이름, 간단한 격리 옵션, 실제 작업 내용은 제공하지 않는다.
- span ID 없음. Claude Code 2.1.296의 요청에는 세션 ID와 트레이스 ID가 있지만 span ID는 없다. 따라서 호출의 span 필드에는 “전송되지 않음”이 표시된다. 분석 단위는 세션, 트레이스, 에이전트다.
- 사용자 정의 에이전트 이름 없음. 모든 사용자 정의 하위 에이전트는
custom이다. 여러 종류를 실행하면서 구분해야 한다면, 세션 페이지의 에이전트 ID만 사용할 수 있다. - 간단한 격리 옵션 없음.
--bare는 기존 플러그인과 설정 없이 Claude Code를 실행하는 방법처럼 보인다. 하지만 하위 에이전트도 비활성화하므로, 세션에 에이전트가 하나만 남아 비용을 나눠 볼 수 없다. 데모에서는 대신 빈CLAUDE_CONFIG_DIR로 실행 환경을 격리한다. - 실제 작업 내용 확인 불가. 게이트웨이는 모델 호출, 도구 이름, 실행 시간을 기록한다. 파일 내용, diff, 명령 출력은 기록하지 않는다.
FAQ
Claude Code 세션 비용은 얼마인가?
모델, 저장소 크기, 참여하는 에이전트 수, 캐시 유무에 따라 달라진다. 이 글에서는 Claude Sonnet 5.5로 하위 에이전트 2개를 사용해 한 글자 버그를 수정했다. 요청 11개에 캐시가 없는 첫 실행은 $0.1728, 반 분 뒤 반복한 실행은 $0.0812가 들었다.
팀의 Claude Code 비용은 어떻게 추적하나?
모든 개발자의 Claude Code가 ANTHROPIC_BASE_URL로 게이트웨이를 사용하도록 설정하고, ANTHROPIC_CUSTOM_HEADERS로 개발자와 저장소 라벨을 추가하면 된다. Claude Code에 별도로 설치할 것 없이 게이트웨이가 세션별, 라벨 값별, 에이전트 유형별 비용을 합산한다.
Claude Code 하위 에이전트를 쓰면 비용이 더 드나?
각 하위 에이전트는 자체 프롬프트로 시작하므로 캐시 쓰기 비용도 각각 발생한다. Claude Sonnet 5.5 데모에서 Explore 하위 에이전트의 첫 호출은 $0.0391, 다음 두 호출은 $0.0052와 $0.0132였다. 하위 에이전트 2개는 세션 비용의 39%를 차지했다. 이 비용으로 별도 컨텍스트를 확보한다. 대규모 탐색에서는 이점이 있지만, 호출 한 번으로 끝나는 작업에서는 그렇지 않다.
Claude Code가 출력하는 비용은 정확한가?
버전마다 한 번씩 확인하자. Claude Code 2.1.296은 실제 청구액과 같은 $0.1728을 출력했다. Claude Code 2.1.278은 Claude Sonnet 5.5에 token 100만 개당 $5와 $25를 적용했다. 실제 청구 요금은 $2와 $10이어서, 청구액의 약 2.7배를 출력했다. 두 버전 모두 token 수는 일치했다.
CLAUDE_CODE_GATEWAY_HINT_HEADERS는 무엇을 하나?
Claude Code가 요청마다 정보를 3가지 더 보내도록 한다. 에이전트 유형, 호출 종류, 호출 전에 실행된 도구의 이름과 실행 시간이다. 이 변수가 없어도 게이트웨이는 세션과 각 하위 에이전트를 확인할 수 있지만, 하위 에이전트는 ID로만 구분된다.
관련 글
- LLM 에이전트 추적하기: 직접 만든 에이전트에서도 같은 콘솔 화면을 사용하는 방법.
- LLM 에이전트 비용이 많이 드는 이유: 캐시 미스, 컨텍스트 증가, 재시도 루프를 재현하고 해결하는 방법.
- LLM 에이전트가 느린 이유와 LLM 에이전트 디버깅하기: 같은 화면으로 지연 시간과 실패 원인을 분석하는 방법.
- Claude에 LLM 로그 질문하기: 게이트웨이의 MCP 서버를 통해 이런 세션에 관한 질문에 답하는 방법.
- 에이전트에 로그 도구 제공하기: 직접 만든 프로그램으로 같은 로그를 읽는 방법과 모델 token 비용.
- Claude Code 연동: 환경 변수 2개와 모델 이름.
- 요청 헤더 레퍼런스: 게이트웨이가 읽는 Claude Code 및 다른 에이전트의 헤더.