command 필드에 떨어진 sk-… 키,
body에 붙여넣은 고객 SSN, 요청 헤더 안의 내부 토큰. firewall
sanitize 판정은 그 자료를 툴 호출 인자에서 잡아, 타입이 지정된
리댁션 토큰으로 교체하고, 정화된 호출을 전달합니다 — 그래서 액션은 여전히
실행되지만, 시크릿은 결코 게이트웨이를 떠나지 않습니다.
이것은 firewall의 매칭 언어에서 하나의 판정입니다. 전체 집합은
Verdicts와
규칙 레퍼런스를 참조하세요; 이 페이지는
sanitize를 작성하고 추론하는 데 집중한 가이드입니다.
1. sanitize가 하는 일 — 그리고 결코 건드리지 않는 것
verdict: sanitize 규칙은 호출이 디스패치되기 전에 툴 호출 인자에
대해 리댁션 엔진을 실행합니다. 각 매치는 정전(canonical) 토큰으로 교체되고
호출은 정화된 인자로 진행합니다 — 툴은 여전히 실행되며, 그저 그 안에 원시
시크릿이 없을 뿐입니다.
가림
모델이 발행한
tool_call이나 MCP tools/call의 JSON 인자 —
command, body, headers, 시크릿이나 PII가 떨어진 모든 문자열
필드.결코 가리지 않음
툴이 반환하는 콘텐츠, 프롬프트, 모델의 응답 텍스트. Sanitize는
인자 전용 리댁터입니다. 텍스트 스크리닝은
Guardrail 관심사입니다.
[redacted:<preset>]이 되고(예: [redacted:openai_key]), 커스텀 패턴
매치는 [redacted:custom]이 됩니다. 인자의 형태는 보존됩니다 — 민감한
부분 문자열만 변경됩니다 — 그래서 유효한 JSON을 기대하는 툴은 여전히
유효한 JSON을 받습니다.
2. 내장 검출기 프리셋
sanitize 규칙은 하나 이상의 프리셋(잘 알려진 시크릿/PII 형태) 및/또는 커스텀 regex 패턴을 명명합니다. 내장 프리셋:| Preset | 잡는 것 |
|---|---|
aws_access_key | AWS 액세스 키 id(AKIA… / ASIA… + 16자) |
aws_secret_key | 40자 AWS 시크릿(경계 인식) |
openai_key | sk- + ≥32자 |
anthropic_key | sk-ant- + ≥40자 |
bearer_token | Bearer + ≥16자 토큰(키워드 유지) |
email | 이메일 주소 |
ssn_us | 3-2-4 형태의 US SSN |
credit_card | Luhn 검사를 통과하는 13–19자리 연속 |
sanitize 규칙은 최소 하나의 프리셋이나 커스텀 패턴을 선언해야 합니다 —
빈 새니타이저는 규칙을 저장할 때 거부됩니다.
credit_card 매치는 추가로
Luhn 검사되므로, 유효한 카드가 아닌 같은 길이의 숫자는 과도하게 가려지기
보다 손대지 않은 채로 남습니다.3. 하나의 구체적인 예
콘솔 규칙 편집기에서 이것을 작성하세요. 예는 에이전트가 발행하는 모든http.* 툴 호출의 인자에서 OpenAI 키와 모든 이메일을 가린 다음, 정화된
호출을 전달합니다:
key=[redacted:openai_key] user=[redacted:email]로 다시 쓰여진 채로 그것을
전달합니다 — 요청은 여전히 실행되고, 시크릿과 주소는 결코 게이트웨이를
떠나지 않습니다.
4. inbound 표면에서, sanitize는 deny로 격상됩니다
inbound 표면은 에이전트가 요청에서
광고하는 툴 — 호출 시점 인자가 아직 없는 툴 정의 — 을 평가합니다.
거기에는 가릴 것이 없으므로, inbound 표면의 sanitize 판정은 deny로
격상됩니다(페일 클로즈): 요청은 가리지 않고 전달되기보다
firewall_blocked로 차단됩니다.
5. Sanitize 대 시크릿을 다루는 다른 방법
세 계층이 에이전트가 누출하려는 시크릿에 대해 행동할 수 있습니다 — 무엇과 어디서로 고르세요:Sanitize (firewall) — 툴 호출 인자를 가림
Sanitize (firewall) — 툴 호출 인자를 가림
툴 호출의 인자에서 시크릿을 벗겨내고 여전히 호출을 실행합니다.
액션은 정당하지만 에이전트가 필드에 민감한 것을 넣었을 때 사용하세요.
인자 계층 전용.
Deny (firewall) — 전체 호출 차단
Deny (firewall) — 전체 호출 차단
호출을 전적으로 멈춥니다. 인자만이 아니라 액션 자체가 위험할 때
사용하세요. 이는 또한 inbound 표면에서 sanitize가 되는 것입니다.
툴 차단 참조.
Guardrails — 프롬프트 / 응답 텍스트 스크리닝
Guardrails — 프롬프트 / 응답 텍스트 스크리닝
Secrets Blocker와 PII guardrails는
요청이나 응답의 텍스트(출력 스테이지에서는 모델 생성 콘텐츠 포함)를
스크리닝합니다. 그것이 “툴이나 모델이 반환하는 것”을 위한 계층입니다 —
sanitize가 하지 않는 것.
6. sanitize가 흔적에 어디에 나타나는가
모든 판정처럼, sanitize 평가는 firewall 이벤트로 기록됩니다 — 이벤트 로그에서 판정, 표면, 툴, 실행으로 필터링 가능하고 분석에서 롤업됩니다. shadow mode에서 sanitize 판정은(모든 강제 판정처럼)audit로 강등되고 이유에 [shadow] would …가 접두되므로,
어떤 인자가 실제로 다시 쓰이기 전에 영향을 측정할 수 있습니다.
다음으로 갈 곳
모든 verdict
allow, audit, deny, sanitize, pending_approval, cap_cost.
인자 검증
호출을 그 인자 안에 있는 것으로 매치 — JSONPath 절 문법.
툴 차단
액션 자체가 문제일 때, 전체 호출을 거부합니다.
Firewall + Guardrails
툴이나 모델이 반환하는 텍스트를 스크리닝 — sanitize가 커버하지 않는
계층.
