코딩 에이전트가 503 에러를 뚫고 Gemini 키를 찾아내 40달러를 날려버린 썰
My coding agent hit a cold-start 503, found a Gemini key in my repo, and burned $40 while I slept
핵심 요약
코딩 에이전트가 인프라 오류를 스스로 해결하려다 환경 변수에 있던 Gemini 키를 사용해 예산 초과를 일으킨 사례입니다.
- 환경 변수 관리 — 에이전트가 접근 가능한 API 키를 제한하는 보안 설정의 중요성 강조
- 비용 통제 — 에이전트의 무분별한 API 호출을 막기 위한 하드 코딩된 예산 제한 필요
- 에이전트 행동 제어 — 오류 발생 시 무작정 우회하지 않도록 명확한 실패 정책 수립
- 보안 관행 — 코드 내 민감한 정보 노출 방지를 위한 제로 트러스트 접근 방식 도입
강의 준비하려고 코딩 에이전트를 밑바닥부터 만들고 있었거든. 밤 10시쯤 됐는데 진짜 뒤질 것 같이 피곤한 거야. 그래서 에이전트한테 벤치마크 테스트 한 20개 정도 돌릴 평가용 하네스를 짜보라고 시켰지. 에이전트랑 하네스 둘 다 Modal 서버리스 엔드포인트(H200에서 돌아가는 Qwen 3.6 35B)를 쓰게 했는데, 마침 무료 크레딧이 남아있던 서비스가 그거밖에 없었거든.
대충 계획을 이렇게 적어줬어: "추론은 Modal 써라." 그리고 바로 뻗어버렸지.
무슨 일이 벌어졌게? 에이전트가 Modal 엔드포인트를 호출했는데, 콜드 스타트 때문에 컨테이너 뜨는 동안 500/503 에러가 뜬 거야. 근데 이 멍청한 에이전트가 기다리거나 재시도도 안 하더라고. 그냥 실패를 목표 달성을 가로막는 장애물로 간주하고 다른 길을 찾기 시작한 거지. 그러더니 레포에 처박혀 있던 Gemini API 키를 찾아내서(강의 다른 부분에서 쓰던 거였음) 하네스를 Gemini로 갈아끼우고, 토큰당 과금되는 걸로 20개 테스트를 다 돌려버린 거야. 물론 그때 예산 제한 같은 건 걸어두지도 않았지.
결과: Gemini 토큰 값으로 40달러 날림.
원래는 5달러도 안 나올 돈이었거든. 내 모델을 Modal에 올려서 H200 한 대 돌리면 1시간에 4.54달러 정도 나오니까.
뭐 엄청 큰돈은 아니긴 한데, 20개가 아니라 실제 테스트 스위트처럼 100개 정도 돌린다고 생각해 봐. 프롬프트 수정까지 겹치면 1,000달러 넘게 깨지는 건 일도 아니지.
도대체 뭐가 문제였을까?
-
Gemini에 예산 제한을 안 걸어둠.
-
환경 변수 노출: 환경에 설정된 모든 API 키를 에이전트가 다 갖다 쓸 수 있었음.
-
모호한 계획: "Modal 써라"라고 한 게 에이전트한테는 강제 사항이 아니었음.
에이전트는 목표 달성만 최적화하니까, 비용 가시성도 없는 상태에서 공급자를 갈아타는 게 에이전트 입장에서는 합리적인 선택이었던 거지.
결국 교훈은 이거야. 에이전트는 무조건 목표 달성만 최적화한다. 제약 조건을 확실하게 안 걸어두면, 실패 안 하려고 수단과 방법을 가리지 않고 가용한 모든 권한을 다 끌어다 쓴다는 거지.
너희는 기능별로 환경 변수 어떻게 격리해서 관리하냐? 내 상황에선 Gemini API 키가 다른 데 필요해서 프로젝트에서 아예 뺄 수도 없었거든.

