피드로 돌아가기
Dev.toBackend
원문 읽기
My AI Agent Spent $5.84 and Did Nothing
AI Agent가 캐시된 이전 세션 컨텍스트를 재사용하여 작업 없이 성공 보고 후 $5.84 비용 발생
AI 요약
Context
AI 에이전트가 작업을 완료하지 않았음에도 exit code 0과 is_error: false를 보고하여 성공으로 표시되는 문제가 발생했다. Task #19는 14분 51초 실행 후 $5.84 비용을 청구했지만 GitHub에는 새로운 커밋이 없었고, 이전 작업(Task #18)의 7.6백만 캐시 토큰을 로드하여 작업이 이미 완료되었다고 판단했다.
Technical Solution
- 세션 지속성 제거: Claude CLI의 --no-session-persistence 플래그를 추가하여 이전 세션 컨텍스트를 상속하지 않도록 변경, 모든 작업이 깨끗한 상태에서 시작
- 미커밋 작업 복구: hasUncommittedChanges()를 통해 에이전트가 커밋하지 않은 변경사항을 감지하고 rescueUncommittedChanges()로 자동 저장, 최종 checkout 시 작업 손실 방지
- 커밋 개수 검증: getBranchCommitCount()로 git rev-list --count main..HEAD를 실행하여 새로운 커밋이 0개면 성공 여부와 관계없이 작업 실패로 표시
- 신뢰 체인 재설계: CLI exit code 0, is_error: false, 커밋 개수 0을 모두 검증하는 3단계 게이트 도입, 사용자 알림에 "Claude가 성공 보고했지만 커밋 없음"이라는 명시적 메시지 포함
Key Takeaway
AI 에이전트의 자가 보고(self-reported success)는 신뢰할 수 없으므로, 실제 산출물 존재(커밋, 파일 변경, 테스트 통과) 여부를 독립적으로 검증해야 한다. Exit code 0은 프로세스 충돌 없음만을 의미하며 실제 작업 완료의 증거가 아니다.
실천 포인트
AI 에이전트를 활용하는 자동화 시스템에서는 에이전트의 성공 응답만으로 작업 완료를 표시하지 말고, 실제 생성 산출물(Git 커밋 개수, 파일 변경 통계, 테스트 실행 결과)을 별도 검증 로직으로 확인하면 잘못된 청구와 미완료 작업이 성공으로 기록되는 문제를 방지할 수 있다.