AI 코딩 에이전트 세션에서 토큰을 낭비하는 18가지 숨겨진 원인 (및 실질적인 해결책)
18 hidden token drains in AI coding agent sessions (and practical ways to fix them)
핵심 요약
AI 코딩 에이전트 사용 시 토큰 비용을 불필요하게 증가시키는 18가지 요인과 이를 최적화하는 구체적인 방법을 공유합니다.
- 토큰 낭비 요인 — 테스트 출력, MCP 서버, 프롬프트 캐시 무효화 등 18가지 원인을 분석함
- 비용 절감 전략 — `--quiet` 옵션 사용, 파일 경로 직접 지정, 로컬 프록시 모니터링 등을 제안함
- 에이전트 최적화 — 불필요한 서브 에이전트 생성 방지 및 규칙 파일 관리의 중요성을 강조함
- 모니터링 도구 — cost-xray 등을 활용해 실제 API 요청 페이로드를 추적할 것을 권장함
다들 안녕. Claude Code, Codex, Cursor 돌리면서 자동화 에이전트 세션 수백 번 굴려보고 얻은 팁 좀 공유할게.
긴 리팩토링 작업할 때 토큰 예산이 도대체 어디로 증발하는지 보려고 로컬 프록시로 API 요청 페이로드 원본을 다 찍어봤거든.
컨텍스트 윈도우랑 요금만 야금야금 갉아먹는 토큰 도둑 18가지 정리했다.
-
필터링 안 된 테스트 러너 출력: pytest나 jest 돌릴 때 통과한 거 점 400개 찍히는 거 그대로 다 넣으면 토큰 수천 개가 매 턴마다 히스토리에 박제됨. (해결법:
--quiet옵션 쓰거나 실패한 것만 필터링해서 넘겨라). -
놀고 있는 MCP 서버들: MCP 툴 활성화해두면 매 턴마다 JSON 파라미터 스키마를 통째로 다 등록함. 안 쓰는 서버 5개만 켜놔도 모델이 프롬프트 읽기도 전에 요청당 15k 토큰씩 날아감.
-
세션 중간에 규칙 수정: 세션 도중에 루트 프로젝트 지시사항 건드리면 프리픽스 프롬프트 캐시 날아가서, 다음 턴에 받을 수 있는 90% 입력 토큰 할인 혜택 다 날려 먹음.
-
중복되는 디렉토리 트리 탐색: 에이전트한테 "X가 정의된 파일 찾아줘"라고 하면 glob이랑 grep 툴을 4번씩 호출하는데, 이게 메시지 로그에 다 남음. (해결법: 그냥 파일 경로를 직접 줘라).
-
압축 오버헤드: 에이전트가 컨텍스트 제한 걸리면 요약 턴이 돌아가는데, 이때 비대해진 히스토리 전체를 입력 토큰 비용 그대로 다 처맞음.
-
Git diff 반복 읽기: 커밋도 안 하면서 git status나 git diff 계속 요청하면 diff 스냅샷이 턴마다 겹겹이 쌓임.
-
장황한 타입 체크 트레이스: TypeScript 에러 났을 때 제네릭 인스턴스화 트레이스 길게 뽑히면 프롬프트 공간 엄청 잡아먹음.
-
긴 추론 출력 세금: 어려운 작업 시킬 때 생각하는 블록(thinking blocks)이 실제 코드 수정보다 3~5배 길어질 수 있음. 출력 토큰이 입력 토큰보다 비싸서 사실상 비용의 대부분이 여기서 나감.
-
서브 에이전트 난사: 탐색이나 계획 세우는 서브 에이전트 막 만들면 툴 호출 횟수 폭증함. 제어 안 되는 서브 에이전트들은 디렉토리 맵핑하는 데만 30k 토큰씩 태워버림.
-
지시사항에 쌓인 잡동사니 규칙: 400줄짜리 정적 가이드라인을 지시사항 파일에 다 때려 박으면 추론 능력 떨어지고 기본 턴마다 토큰만 낭비됨. (GitHub에 있는 tigerless-autoharness 써서 실제 세션에서 스킬 추출하고 안 쓰는 건 자동으로 쳐내라).
-
툴마다 반복되는 시스템 프롬프트: 루트 설정 공유 안 하고 빌드 명령어 같은 거 커스텀 스킬마다 중복으로 넣어두는 짓.
-
안 지운 스택 트레이스: 관련 없는 버그 고치는데 이전 디버깅 시도 5개씩 히스토리에 남겨두는 거.
-
LLM 내부에서 포맷팅/린트: 프리커밋 훅이나 로컬 린터 쓰면 될 걸 굳이 모델한테 코드 포맷팅 시키는 짓.
-
ANSI 컬러 코드 섞인 로그: 터미널 컬러 코드랑 이스케이프 문자들, 추론에 도움 1도 안 되는데 토큰만 엄청 잡아먹음.


