자율 에이전트의 지출을 제한하는 2026년 Claude Code 규칙 7가지
Markdown자율 에이전트 때문에 빈털터리가 되지 않도록 Claude Code의 한도를 설정하는 7가지 규칙: 제공업체 한도, Task Budgets, hook, 허용 목록, 비상 차단 스위치, 샌드박스 키, 반복 횟수 제한.
전체 글 읽기
핵심 요점
클라우드에 제한 없이 접근할 수 있는 자율 에이전트는 하룻밤 사이에 큰 청구액을 만들 수 있습니다. 이런 유형의 실패를 막기 위해 저녁 한 번이면 적용할 수 있는 Claude Code 규칙 7가지를 살펴봅니다.
Ailoot 문서에서 서비스 사용 방법을 알아보세요.
돈이 나가는 곳: 자율 에이전트 지출의 3가지 범주
핵심 요점
자율 에이전트는 어디에 돈을 쓸까요? 서로 별개인 세 가지 경로입니다. Anthropic/OpenAI의 토큰, 클라우드 리소스(AWS/GCP/Yandex Cloud), 제3자 API의 유료 작업(Stripe 결제, SMS 게이트웨이, Twilio, 구독이 설정된 Telegram 봇)입니다. 각 경로에는 별도의 청구 방식과 지출 폭주를 멈추는 방법이 있습니다.
이 세 경로를 혼동하지 마세요. 서로 독립적으로 작동하며 필요한 설정도 다릅니다.
- LLM 토큰. Claude, OpenAI 또는 Gemini는 요청마다 입력 및 출력 컨텍스트에 대해 요금을 부과합니다. Anthropic Task Budgets(규칙 2 참조)와 API 종량제 대신 구독을 이용하면 도움이 될 수 있습니다.
- 클라우드 인프라. MCP 또는 Bash 도구를 통해 에이전트가 EC2, RDS, S3 리소스를 만들거나 Lambda를 배포합니다. AWS Budgets, GCP 또는 Yandex Cloud의 비상 차단 스위치가 도움이 될 수 있습니다(규칙 5).
- 제3자 API. 에이전트가 Stripe 결제를 호출하거나 게이트웨이를 통해 SMS 100건을 보내거나 Telegram 구독 1,000건을 설정합니다. 범위가 제한된 샌드박스 키와 제공업체 대시보드의 확실한 상한이 도움이 될 수 있습니다(규칙 6).
이제 규칙 7가지를 살펴보겠습니다. 각 규칙은 하나 또는 두 개의 경로를 다룹니다.
API 지출에 확실한 상한을 설정하는 방법 (규칙 1)
핵심 요점
API 지출에 확실한 상한을 어떻게 설정할까요? Anthropic과 OpenAI에는 지정한 금액에 도달하면 계정의 처리량을 자동으로 제한하는 조직 지출 한도가 내장되어 있습니다. 이메일만 보내는 알림과 혼동하지 마세요. 확실한 상한은 장벽이고, 알림은 경고등입니다. 둘 다 설정하되 장벽부터 설정하세요.
설정 위치(각 제공업체마다 최소 2분 정도 걸립니다):
Anthropic Console. console.anthropic.com → Settings → Limits → Monthly spend limit. 최악의 달에도 감당할 수 있는 금액을 설정하세요. 한도에 도달하면 API는 429를 반환하고 이벤트를 기록합니다. “잠깐 기다렸다가 다시 시도”할 수 없습니다. 월말까지 차단됩니다.
OpenAI Platform. platform.openai.com → Billing → Usage limits. 마찬가지로 소프트 한도(이메일 알림)와 하드 한도(API 중단)가 있습니다. 둘 다 설정하고, 대응할 시간을 확보할 수 있도록 하드 한도를 소프트 한도의 1.5배로 설정하세요.
AWS Bedrock / Google Vertex. 클라우드 중개 서비스를 통해 Claude/Anthropic에 접근한다면 확실한 상한은 Anthropic 쪽이 아니라 클라우드 쪽에 설정해야 합니다. 이는 규칙 5에서 다룹니다.
확실한 상한으로 간주되지 않는 것: 이메일 알림(“예산의 80%를 소진했습니다”). 지연되어 도착하고, 밤에는 아무도 이메일을 읽지 않습니다. 동기식으로 작동하는 제공업체 측 장벽만이 확실한 상한입니다.
Anthropic Task Budgets의 작동 방식과 설정 위치 (규칙 2)
핵심 요점
Anthropic Task Budgets란 무엇이고 무엇으로부터 보호해 줄까요? Opus 4.7/4.8 및 Fable/Mythos 계열의 베타 기능입니다. 하나의 자율 워크플로에 예산을 설정하면 예산이 줄어들수록 Claude가 추론 깊이를 낮추고, 작업 도중 “예산이 끝났으니 여기까지”라고 하는 대신 요약을 제공하며 마무리합니다. 클라우드 지출을 완전히 해결해 주지는 않지만, 에이전트가 “루프에 빠져서 알아차리지 못하는” 사례의 80%를 예방합니다.
자세한 내용은 Anthropic의 공식 문서를 참조하세요. 핵심은 이것이 하드 한도가 아닌 소프트 한도라는 점입니다. 에이전트가 이미 EC2 인스턴스를 만들었다면 Task Budget은 이를 되돌리지 않습니다.
실제로는 요청 페이로드에 task_budget 필드를 전달합니다(예: 전체 작업에 입력 토큰 100,000개). Claude는 예산 정보를 받아 스스로 계획을 줄이고, 단계를 단순화하거나 하위 작업을 생략합니다. 예산이 0에 가까워지면 작업을 마무리하고 “들어주셔서 감사합니다”라는 말 대신 중간 요약을 반환합니다.
제한 사항:
- Anthropic API 전용. 자체 청구 체계가 있는 Bedrock/Vertex에서는 작동하지 않습니다
- 베타 모델만 지원(Opus 4.7, 4.8, Fable 5, Mythos 5). Sonnet 4.6 또는 Haiku에서는 사용할 수 없습니다
- 클라우드 지출이나 제3자 API는 다루지 않습니다. Claude가 EC2 인스턴스를 시작해도 Task Budget은 아무런 조치를 하지 않습니다
규칙 1(확실한 상한)과 함께 사용하고, 대신 사용하지 마세요.
비용 제한은 컨텍스트 엔지니어링의 일부입니다. 에이전트가 할 수 있는 일과 할 수 없는 일, 비상 정지 지점을 정하는 것입니다.
Claude Code에서 PreToolUse 훅으로 차단할 항목 (규칙 3)
핵심 요점
Claude Code의 PreToolUse 훅은 무엇이며 왜 필요할까요? Claude가 도구 호출을 실행하기 전에 실행되는 스크립트입니다. 요청을 차단하거나(exit 2), 사용자 확인을 요구하거나, 묻지 않고 통과시킬 수 있습니다. 핵심은 훅이 --dangerously-skip-permissions보다 먼저 실행된다는 점입니다. 즉, 권한 우회 모드에서도 위험한 작업을 차단할 수 있습니다.
Claude Code의 권한은 2026년 6월 1일 기준으로 deny → ask → allow 순서로 평가됩니다. 즉:
- 선택한 권한 모드를 따로 확인하세요. 일반 모드 deny 시험으로 우회 모드에서도 보호된다고 추정하지 마세요
- 훅이
exit 2를 반환하면 도구 호출이 차단됩니다 allowedTools는 거부 규칙과 훅이 아무 동작도 하지 않을 때만 적용됩니다
위험한 명령 표기 일부를 확인하는 최소 PreToolUse 훅입니다. 완전한 셸 파서나 접근 경계가 아닌 텍스트 필터입니다. 동등한 명령, 스크립트, 다른 도구, 기존 클라우드 자원은 별도 제어가 필요합니다.
#!/usr/bin/env bash
# ~/.claude/hooks/block-dangerous-bash.sh
INPUT=$(cat)
if ! COMMAND=$(printf '%s\n' "$INPUT" | jq -er '.tool_input.command | select(type == "string")'); then
echo "Blocked: invalid Bash hook input" >&2
exit 2
fi
# 나열한 텍스트 패턴만 검사하며 동등한 모든 동작을 다루지는 않습니다
if echo "$COMMAND" | grep -qiE '(rm -rf|aws s3 rb|terraform destroy|kubectl delete|drop database)'; then
echo "차단됨: 파괴적 명령" >&2
exit 2
fi
exit 0
표시한 경로에 스크립트를 저장하고 jq를 준비한 뒤 chmod +x ~/.claude/hooks/block-dangerous-bash.sh로 실행 권한을 주세요. ~/.claude/settings.json에 연결합니다.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "~/.claude/hooks/block-dangerous-bash.sh" }]
}
]
}
}
공식 문서를 참조하세요.
/hooks에서 등록을 확인한 뒤 command 필드를 실행하지 않는 무해한 샘플 JSON을 스크립트에 전달하세요. 나열한 파괴적 표기는 2, 안전한 명령은 0을 반환해야 합니다. 잘못된 입력도 시험하세요. 정규식은 일치하는 Bash 호출만 검사하므로 실제 권한 경계에는 좁은 자격 증명과 환경 격리를 쓰세요. 공식 훅 입출력 예시를 참고하세요.
allowedTools 허용 목록을 사용하는 이유와 --dangerously-skip-permissions를 호스트에서 사용하면 안 되는 이유 (규칙 4)
핵심 요점
허용된 도구의 목록은 어디에 두며, 우회 모드를 호스트에서 사용하면 안 되는 이유는 무엇일까요? settings.json의 allowedTools는 에이전트가 확인 없이 실행할 수 있는 구체적인 명령 목록입니다. 나머지 명령은 사용자에게 확인을 요청합니다. --dangerously-skip-permissions는 확인 절차를 모두 비활성화합니다. 따라서 호스트 머신에서는 실행하지 말고 컨테이너나 VM에서만 실행하세요.
허용 목록은 최소 권한 원칙입니다. “모두 허용”(--dangerously-skip-permissions)하는 대신 작업에 필요한 것만 추가하세요.
{
"permissions": {
"allow": [
"Bash(npm install:*)",
"Bash(npm run build)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Read(./src/**)",
"Write(./src/**)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(curl * | sh)",
"Write(/etc/**)",
"Write(~/.ssh/**)"
]
}
}
우회 모드에 대해 알아둘 점:
- Linux/macOS는 root 또는 sudo로 Claude Code를 우회 모드에서 시작하지 못하게 합니다. 이는 기본 제공되는 보호 기능입니다
- 자신의 머신에서 우회 모드를 사용하면 모든 확인 요청이 비활성화됩니다. 에이전트는 원하는 항목에
rm -rf를 실행하고, SSH 키를 열고, 데이터를 클라우드에 업로드할 수 있습니다 - 호스트에서
--dangerously-skip-permissions를 절대 실행하지 말고 다음 환경에서만 사용하세요:- 필요한 폴더만 제한적으로 마운트한 Docker 컨테이너
- 격리된 VM(Multipass, Lima, Orbstack)
- GitHub Codespaces / Replit / 기타 샌드박스
우회 모드에서 사용하는 최소한의 docker run 명령:
docker run --rm -it \
-v "$PWD:/workspace" \
-w /workspace \
--network host \
ghcr.io/anthropics/claude-code:latest \
claude --dangerously-skip-permissions
에이전트에 클라우드 자격 증명이 필요하면 기본 키가 아닌 범위가 제한된 별도 키를 사용하세요(규칙 6).
AWS, GCP, Yandex Cloud에서 비상 차단 스위치가 있는 클라우드 예산 알림 설정하기 (규칙 5)
핵심 요점
예산 알림은 관측되거나 예측한 지출을 보고하며 늦게 도착할 수 있습니다. 대응 함수는 새 에이전트 동작을 막거나 특정 자원을 멈출 수 있는데 두 동작은 다릅니다. IAM 키 비활성화는 이미 실행 중인 자원의 요금을 멈추지 않습니다. 자원 종료를 따로 정의하고 시험하세요.
각 클라우드에서 설정하는 방법:
AWS Budgets (문서). 월간 예산과 임계값(50%, 80%, 100%)을 만듭니다. 100% 임계값에서 SNS 주제로 대응 Lambda를 호출할 수 있습니다. 아래 예시는 지정한 사용자의 IAM 접근 키만 비활성화하며 자원을 멈추거나 강제 지출 상한을 만들지 않습니다.
import boto3
def lambda_handler(event, context):
iam = boto3.client('iam')
# 'claude-agent' 사용자의 모든 키 비활성화
keys = iam.list_access_keys(UserName='claude-agent')['AccessKeyMetadata']
for key in keys:
iam.update_access_key(
UserName='claude-agent',
AccessKeyId=key['AccessKeyId'],
Status='Inactive'
)
return {'statusCode': 200, 'body': 'IAM keys deactivated; existing resources unchanged'}
범위가 정해진 자원 중지 절차: 승인된 EBS 기반 EC2 인스턴스가 있는 전용 샌드박스에서는 실행 전에 계정, 리전, 정확한 인스턴스 ID를 기록하세요. EC2 콘솔에서 해당 인스턴스만 선택 → Instance state → Stop instance → 확인하고 각각 stopped가 되는지 검증하세요. 중지하면 인스턴스 스토어 데이터가 지워지므로 필요한 데이터를 먼저 보존하세요. 승인된 스케줄러나 확장 시스템이 대체 인스턴스를 만들지 않는지도 확인하세요. 이는 해당 컴퓨팅 사용을 멈출 뿐 계정의 모든 요금을 멈추지는 않으므로 유지 스토리지와 다른 서비스는 따로 검토하세요. 공식 EC2 중지 절차를 따르세요.
AWS Budgets 문서는 알림이 자원 사용보다 늦고 알림 전후에도 추가 비용이 발생할 수 있다고 경고합니다. 따라서 100%에서의 작동은 정확한 금액 상한을 강제하지 못합니다.
GCP Budget Alerts. Budget → Pub/Sub 주제 → Service Account를 비활성화하는 Cloud Function 순으로 만듭니다. 문서에서 강조하는 중요한 점은 알림은 통지만 할 뿐 서비스를 종료하지 않는다는 것입니다. 따라서 Cloud Function이 필수입니다.
Yandex Cloud (문서). Billing → Budgets에서 예산을 설정하고, 확실한 상한으로 리소스 할당량을 추가합니다. Cloud Functions를 통해 알림을 Telegram 봇에 연결할 수 있습니다.
OpenAI API. 소프트 및 하드 지출 한도는 대시보드에서 바로 설정할 수 있습니다. 하드 한도는 API를 자동으로 중지하므로 Lambda가 필요하지 않습니다.
제공되는 경우 검증한 공급자 강제 한도, 지연되는 예산 알림, 좁은 자격 증명, 에이전트가 만들 수 있는 특정 자원에 대해 시험한 대응을 사용하세요. 자격 증명 회수는 일부 새 동작을 막지만 지속 자원 사용에는 종료 검증이 필요합니다. 알림이나 키 회수 Lambda의 성공 메시지로 모든 청구 중단이 입증되지는 않습니다.
에이전트에 범위가 제한된 별도의 샌드박스 API 키가 필요한 이유 (규칙 6)
핵심 요점
에이전트에 별도의 API 키가 필요한 이유는 무엇일까요? 실패가 다른 곳으로 번지지 않도록 제한하기 위해서입니다. 에이전트 하나만을 위한 IAM 사용자 또는 Service Account를 만들고 최소한의 권한(EC2 전체가 아니라 필요한 작업만)을 부여한 다음, 확실한 상한이 있는 별도의 결제 프로젝트에 연결하세요. 에이전트가 한도를 다 쓰더라도 회사 전체 예산이 아니라 자기 몫인 50달러를 한 시간 만에 쓰게 됩니다.
최소한의 AWS 설정:
- IAM 사용자
claude-agent-scan을 만듭니다 - 필요한 작업만 허용하는 정책을 설정합니다(예: 한 리전에서
t3.micro크기의ec2:RunInstances, VPC 탄력적 IP 없이) - 월 100달러 예산이 있는 별도의 AWS 계정(Organizations를 통해)에 연결합니다
- 액세스 키를 생성해 에이전트에게만 제공합니다. 자신의
~/.aws/credentials에는 넣지 마세요 - 세션이 끝나면 키를 교체하거나 사용자를 삭제합니다
다른 제공업체도 마찬가지입니다.
- OpenAI / Anthropic: 에이전트마다 별도의 API 키, 대시보드에서 각 키마다 설정한 확실한 상한, 요청 메타데이터의
agent_id태그 - Stripe / YooKassa: 한 가지 작업만 가능한 제한된 API 키(예:
charges:read만 허용)와 가능한 경우 별도의 판매자 계정 - Telegram Bot API: 주 토큰이 아닌 별도의 봇 토큰
여기에도 오래된 보안 원칙이 적용됩니다. 최소 권한입니다. 에이전트에는 작업에 필요한 권한만 주고 한 바이트도 더 주지 마세요. 작업이 “네트워크 스캔”이라면 ec2:*와 s3:*를 주지 말고 ec2:DescribeInstances만 주세요.
실행 전 드라이런과 반복 횟수 제한을 사용할 때 (규칙 7)
핵심 요점
실행 전에 에이전트가 계획을 보여주게 하는 이유는 무엇이며 최대 몇 번의 반복을 허용해야 할까요? Plan Mode는 Claude Code에 내장된 기능입니다. 에이전트가 먼저 하려는 일을 설명하고 사용자가 승인합니다. 무료로 이용할 수 있는 실행 전 점검입니다. 또한 --max-turns N은 세션의 단계 수를 제한해 에이전트가 무한히 반복하지 못하게 합니다. 자율 모드에서는 최대 10~30턴으로 설정하세요.
Plan Mode(/plan)는 세션 시작 시 활성화됩니다. 에이전트가 계획을 세워 채팅에 표시하고 승인을 기다린 뒤 그 후에만 작업을 시작합니다. 무료이며 “먼저 물어볼 줄 알았는데”라고 하는 경우의 70%를 예방합니다.
--max-turns는 실행 플래그입니다. 각 턴은 “에이전트의 사고 + 도구 호출 + 결과”의 한 주기입니다. 자율 작업에는 다음과 같이 설정하세요.
- 작은 변경: 5~10턴
- 중간 규모 작업: 15~30턴
- 대규모 자율 작업: 50~80턴
추가 기법:
- Linux
timeout명령으로 실행 시간 초과 설정하기:
timeout 1800 claude --dangerously-skip-permissions --max-turns 30 -p "scan task"
# 1800초 = 30분. 프로세스를 정상적으로 중지합니다.
- PostToolUse 훅을 사용해 모든 도구 호출을 파일에 기록하면 나중에 무슨 일이 있었는지 확인할 수 있습니다
- Cron 모니터링: 5분마다 Claude 프로세스가 동시에 10개 실행 중이지 않은지 확인하세요. 이는 흔히 문제가 생겼다는 신호입니다
자율 Claude Code를 실행하기 전에 확인할 5분 체크리스트
핵심 요점
자율 작업을 위해 Enter 키를 누르기 전에 무엇을 준비해야 할까요? 항목은 7개이고 각 항목에는 약 1분이 걸립니다. 하나라도 비어 있으면 실행하지 마세요.
claude --dangerously-skip-permissions 실행 전 체크리스트:
[ ] 1. API 제공업체의 하드 한도(Anthropic Console → Limits → Monthly spend limit)
[ ] 2. 요청 페이로드의 Task Budget(Opus 4.7+/Fable/Mythos를 사용하는 경우)
[ ] 3. rm -rf, aws s3 rb, terraform destroy를 차단하는 PreToolUse 훅
[ ] 4. settings.json의 allowedTools 허용 목록 또는 Docker 컨테이너에서 작업
[ ] 5. 지연되는 클라우드 예산 알림 + 시험한 키 회수 및 승인 자원 종료
[ ] 6. 샌드박스 API 키(주 키가 아닌 에이전트 전용 별도 키)
[ ] 7. --max-turns N + NNN초 timeout + 프로세스 cron 모니터링
7개 항목이 모두 준비됐으면 실행하세요. 하나라도 빠졌다면 멈추고 설정하세요. 지금 30분을 쓰면 나중에 6,000~500,000달러를 아낄 수 있습니다.
맥락을 이해하기 위한 예시: 한 바이브 코더가 postgres 데이터베이스의 기본 비밀번호를 그대로 둔 온라인 스토어 앱을 실행했습니다. 며칠 지나지 않아 누군가 이를 발견하고 채굴 프로그램을 설치한 다음 자신의 백도어를 배포했습니다. 서버를 종료해야 했고 다른 사람의 암호화폐 채굴 때문에 그달 청구액이 늘었습니다.
이 이야기는 섹션 1의 범주 3(사용자의 인프라에서 실행되는 제3자)에 해당하지만, 논리는 같습니다. 지출 통제는 누가 지출을 시작했는지에 좌우되어서는 안 됩니다. 에이전트든 직원이든 나이지리아의 채굴 프로그램이든 마찬가지입니다.
더 읽을거리:
- Claude Code가 고장 나지 않도록 보호하는 방법:
--dangerously-skip-permissions와 권한을 다른 관점에서 다룹니다 - 바이브 코딩 보안: 보안의 기둥
- 하루 만에 Claude Code 한도를 소진하지 않는 방법: 구독 토큰에 관한 내용입니다(클라우드 청구서를 다루는 이 가이드와 혼동하지 마세요)
출처
Ailoot에 대해 알아보세요.
자세히 보기
자율 에이전트의 지출을 제한하는 2026년 Claude Code 규칙 7가지: 자주 묻는 질문
에이전트의 IAM 키를 회수하면 클라우드 청구도 멈추나요?
아닙니다. 그 키의 새 인증 요청을 막지만 기존 자원은 계속 과금될 수 있습니다. 소유 자원 허용 목록을 두고 승인 인스턴스를 중지해 상태를 검증하며 유지 스토리지와 다른 서비스는 따로 검토하세요.
예시 명령 정규식이 완전한 안전 경계를 강제하나요?
아닙니다. 일치하는 Bash 도구 호출과 일부 명령 텍스트만 검사합니다. JSON 파싱과 종료 코드를 시험하되 실제 경계에는 좁은 클라우드 권한과 환경 격리를 사용하세요. 동등한 동작과 다른 도구는 텍스트 필터를 벗어날 수 있습니다.