PSA: 프로젝트의 .env 파일에 ANTHROPIC_API_KEY가 있으면, Claude Code가 Max 플랜 대신 API 계정에 조용히 과금함 — Anthropic은 이를 "의도된 기능"이라 부름
핵심 요약
.env 파일의 API 키가 구독 플랜보다 우선 적용되어 예기치 못한 과금이 발생하는 현상에 대한 주의보.
- 과금 우선순위 — Claude Code는 구독 정보보다 환경 변수에 설정된 API 키를 우선적으로 사용하여 과금함.
- 의도된 기능 — Anthropic 고객 센터는 이를 유연성을 위한 의도된 설계라며 환불을 거부함.
- 환경 변수 해제 — 실행 스크립트에서 ANTHROPIC_API_KEY 환경 변수를 일시적으로 해제하여 해결 가능함.
- 예기치 못한 과금 — 헤드리스 환경이나 다른 서비스용 API 키가 포함된 프로젝트에서 특히 위험함.
r/ClaudeAI • r/LocalLLaMA 및 r/artificial에도 교차 게시함
이 문제로 187달러를 날렸고, 다른 분들은 저와 같은 골칫거리를 겪지 않길 바랍니다.
발생한 일
저는 Windows 작업 스케줄러를 통해 Claude Code를 헤드리스로 실행합니다. 제 프로젝트 저장소에는 ANTHROPIC_API_KEY가 설정된 .env 파일이 있습니다. 이는 AI 기반 트랜잭션 분류를 수행하는 별도의 Express 서버를 위한 정당한 설정이며, Claude Code 자체와는 아무런 관련이 없습니다.
Claude Code는 실행 시 작업 디렉토리의 .env에서 환경 변수를 읽습니다. 거기서 ANTHROPIC_API_KEY를 발견하면, 제 .credentials.json에 subscriptionType: "max"라고 계속 표시되어 있음에도 불구하고 구독 자격 증명 대신 해당 키를 사용하여 조용히 과금합니다. 경고도, 알림도, 과금 방식이 전환되었다는 대시보드 알림도 없었습니다.
아홉 번의 자동 충전 결제 끝에 187달러가 사라졌습니다.
Anthropic의 응답
고객 지원팀에 문의했습니다. 두 채널에 걸쳐 네 번의 거절을 당한 후, 그들이 내놓은 정확한 설명은 다음과 같습니다.
"Claude Code는 구독 자격 증명보다 환경 변수로 설정된 API 키를 우선하도록 설계되었습니다. 이는 사용자에게 인증 방식의 유연성을 제공하기 위한 의도된 기능입니다."
의도적이라니요. 사용 시점에는 공개되지 않았습니다. 옵트아웃(거부) 기능도 없습니다. CC가 실행될 때 환경에서 API 키를 감지해도 아무런 경고가 없습니다.
그들의 최종 입장: "소모된 API 크레딧은 근본적인 원인과 관계없이 환불이 불가능합니다." 제가 카드사에 지불 거절(chargeback)을 신청하겠다고 언급하자: "지불 거절은 계정 액세스에 영향을 미칠 수 있으니 유의하시기 바랍니다."
해결 방법
claude -p를 실행하기 전, 실행 스크립트에 다음 한 줄을 추가하세요:
$env:ANTHROPIC_API_KEY = $null # PowerShell
unset ANTHROPIC_API_KEY # bash/zsh
이렇게 하면 CC의 환경에서 키가 제거되어 OAuth(구독)로 대체됩니다. 여러분의 .env 파일은 그대로 유지되므로, 동일한 프로젝트의 다른 도구들은 여전히 키를 사용할 수 있습니다.
가장 위험한 대상
— CC를 헤드리스로 실행하는 모든 사람 (작업 스케줄러, cron, CI)
— 다른 서비스(LangChain, Express AI 기능 등)를 위해 .env에 ANTHROPIC_API_KEY가 설정된 모든 프로젝트
— 프로젝트 초기에 API 키를 설정해두고 잊어버린 모든 사람
API 콘솔에서 예기치 않은 자동 충전 결제가 있는지 확인하세요. 결제 내역에 "Auto-recharge credits"라는 항목으로 표시될 것입니다.
이 문제는 HERMES.md 과금 이슈 직후에 발생했습니다. 근본적인 패턴은 같지만 트리거가 다릅니다. 알아둘 가치가 있습니다.

