메인 콘텐츠로 건너뛰기
에이전트는 여러분에게 해를 끼치기 위해 데이터를 유출할 필요가 없습니다. 그냥 지출하면 됩니다 — 비싼 모델을 두드리는 재시도 루프, 천 개의 툴 호출로 팬아웃하는 프롬프트 주입 지시사항, 또는 청구서가 도착할 때까지 추론을 쌓는 유출된 API 키. 이것이 denial of wallet입니다: 공격은 비용 그 자체입니다. 고전적인 denial-of-service와 달리 게이트웨이는 살아 있고 모든 요청이 개별적으로 정당해 보입니다 — 피해는 집계된 지출입니다. OrcaRouter는 모두 업스트림 모델 앞에 앉는 세 개의 독립적인 천장을 제공하여, 어떤 단일 폭주 경로도 여러분의 청구서를 무제한으로 굴릴 수 없게 합니다.

1. denial of wallet ai 위협

denial-of-wallet 사고는 대개 세 가지 형태 중 하나로 추적됩니다:
에이전트가 동일하게 실패하는 툴을 재시도하거나 짧은 루프에서 재계획하며, 매 패스마다 토큰 비용을 다시 지불합니다. 악의는 필요 없습니다 — 나쁜 종료 조건만으로 충분합니다.
프롬프트 인젝션이 에이전트를 툴 스팸이나 과대 요청 발행으로 조종하여, 턴당 지출을 증식시킵니다.
키가 있어서는 안 될 곳 — 커밋된 .env, 공유 노트북 — 에 도달하고, 공격자가 지출이 인지될 때까지 여러분의 계정에서 추론을 실행합니다.
방어는 세 경우 모두에서 동일합니다: 공격자가 말로 넘어갈 수 없는 단단한 천장, 여러분의 에이전트 코드가 아니라 게이트웨이에서 강제됩니다.

2. cap_cost로 실행별 비용 천장

Firewall의 cap_cost 판정은 폭주 루프를 위한 회로 차단기입니다. 실행별 센트 상한이 있는 규칙으로 작성하면; 엔진이 에이전트 실행의 누적 지출을 합산하고, 실행이 상한을 넘는 순간 판정을 deny로 해석합니다 — 그 실행의 이후 모든 툴 호출이 차단됩니다. cap_cost디스패치 전 천장입니다: 호출이 툴에 도달하기 전에 평가되므로, 이미 이루어진 호출을 환불하기보다 다음 비싼 호출을 멈춥니다. 모든 툴에 대한 전형적인 포괄 상한:
{
  "priority": 50,
  "label": "cap runaway spend at $5 per run",
  "tool_name_glob": "*",
  "verdict": "cap_cost",
  "cap_cost_cents": 500
}
상한 아래에서는 호출이 허용됩니다; 그 위에서는 실행이 HTTP 400 firewall_blocked으로 거부됩니다 — skip-retry로 표시되므로 루프가 거부 주위를 두드릴 수 없습니다. 천장은 에이전트 실행별이며 전체 워크스페이스 정책에 걸쳐 합산되므로, 하나의 폭주 대화가 다른 대화의 예산으로 새어 들어갈 수 없습니다.
cap_cost는 여러분의 요청 로그에서 진행 중인 지출을 읽습니다. 진행 지출 롤업이 합산할 행을 갖도록 워크스페이스에 대해 요청 로그 캡처를 켜두세요 — 그렇지 않으면 사전 지출 추정치가 보수적으로 0이 되어 상한이 실행이 이미 든 비용을 볼 수 없습니다.
전체 매칭 언어와 cap_cost가 다른 판정들 사이에서 어디에 위치하는지는 Firewall 규칙 레퍼런스를 참조하세요.

3. credit_limit_usd로 키당 단단한 예산

cap_cost단일 실행을 한정합니다. — 그것이 발행하는 모든 실행 — 를 한정하려면 API 키에 credit_limit_usd를 설정하세요. 그것은 그 키의 수명 지출에 대한 단단한 USD 천장입니다: 게이트웨이가 그것을 키의 남은 쿼터로 변환하고, 키가 할당량을 다 쓰면 이후 릴레이 호출은 크레딧 부족으로 거부됩니다. 0은 무제한을 의미합니다. 유출된 키가 모든 축에서 한 번에 한정되도록 키의 다른 범위들과 짝지으세요:

credit_limit_usd

키에 대한 단단한 USD 지출 천장 (0 = 무제한).

expired_time

자동 만료 타임스탬프 (-1 = 절대 안 함). 수명이 짧은 키는 폭발 반경 윈도우를 한정합니다.

allow_ips

키를 알려진 소스 IP에 고정 — 유출된 키는 네트워크 밖에서 쓸모없습니다.

model_limits

키를 특정 모델로 제한하여, 가장 비싼 것에 아예 도달할 수 없게 합니다.
각 에이전트에 정당하게는 결코 초과해서는 안 될 credit_limit_usd를 가진 자체의 좁게 범위 지정된 키를 주세요. 한도는 예산이지 공격자 행동에 대한 추측이 아닙니다 — 완전히 손상된 키조차 천장에서 멈춥니다.
이 모든 것을 여러분의 세션 하에 콘솔 키 편집기(또는 token API)에서 구성하세요 — 이것들은 키 설정이지 릴레이 호출이 아닙니다. /v1/* 추론 요청만 sk-orca-... 키 자체를 사용합니다. 한도 편집은 키의 다음 요청에서 적용됩니다; 재배포 없음.

4. 예측하지 못한 급증 포착: 비용 이상

정적 상한은 여러분이 예상한 지출을 멈춥니다. Firewall의 이상 탐지는 예상하지 못한 지출을 포착합니다. 각 워크스페이스의 정상적인 툴 사용 형태를 주중 시간대 베이스라인(14일 롤링 평균)에 대해 학습하고 Member가 읽을 수 있는 피드에서 편차를 드러냅니다:
이상플래그하는 것
burn_spike한 툴의 학습된 베이스라인 비용을 훨씬 넘는 비용 — denial-of-wallet 신호.
rate_spike베이스라인을 훨씬 넘는 호출 양 — 팬아웃과 홍수.
retry_loop짧은 윈도우에서 반복되는 동일 인자의 동일 툴 — 전형적인 폭주 루프.
따라서 “이 툴이 이번 시간에 평소 비용의 40배를 태웠다”가 각 개별 호출이 정책에 의해 허용되었더라도 두드러집니다. 조사하는 동안 이상을 최대 7일까지 스누즈할 수 있습니다.
이상 탐지는 여러분의 조기 경고입니다; cap_costcredit_limit_usd가 단단한 정지입니다. 피드를 보고 실제 지출이 어디에 있는지 발견한 뒤, 그 주위에 상한을 작성하세요.

5. 종합하기

폭주가 결코 청구서에 도달하지 않도록 셋을 계층화하세요:
컨트롤범위언제 발동하는가
cap_cost 규칙하나의 에이전트 실행실행의 누적 지출이 센트 상한을 넘음
credit_limit_usd하나의 키, 수명키의 총 지출이 USD 천장에 도달
burn_spike / retry_loop워크스페이스, 학습됨지출이나 반복 패턴이 베이스라인에서 벗어남
실용적 기준선: *에 대한 실행별 cap_cost, 모든 에이전트 키의 credit_limit_usd, 그리고 이상 피드를 확인하는 습관. 새 cap_cost 정책을 먼저 shadow mode로 롤아웃하세요 — 차단 없이 [shadow] would deny를 로깅합니다 — 따라서 그것이 물기 전에 실제 트래픽에 대해 상한 크기를 정할 수 있습니다.
cap_cost와 이상 피드는 게이트웨이를 가로지르는 툴 호출과 실행을 한정합니다. 에이전트가 자체 프로세스 내부에서 전적으로 실행하는 툴은 결코 엔진에 도달하지 않습니다. 모델 매개 및 MCP 툴 호출을 게이트웨이를 통해 라우팅하고 — 모든 키에 credit_limit_usd를 주어 — 에이전트가 어떻게 루프하든 천장이 유지되게 하세요.

6. 관련 위협

Denial of wallet은 혼자 도착하는 경우가 드뭅니다 — 여러분의 예산을 태우는 루프는 종종 업스트림의 무언가에 의해 구동됩니다:
  • 프롬프트 인젝션 — 주입된 지시사항은 팬아웃과 툴 스팸의 흔한 트리거입니다.
  • 과도한 자율성 — 너무 많은 여지를 가진 에이전트는 지출할 방법이 더 많습니다.
  • 위험한 툴 호출 — 동일한 firewall 규칙 평면이 비용뿐 아니라 툴이 무엇을 할 수 있는지를 한정합니다.
  • 위협 모델 — 폭주 비용이 전체 에이전트 공격 표면에서 어디에 들어맞는지.

Firewall 개요

판정, 이상 탐지, 자율성 수준, 그리고 관측성.

범위 지정 키 & 정책

키 한도, guardrails, 그리고 firewall 정책이 키별로 어떻게 조합되는지.