🛡️

가드레일 설계 — 모델이 삽질하기 전에 막는 법

입력 필터, 출력 검증, 행동 제한으로 안전한 하네스 만들기

Claude Code를 쓰면 "이 파일을 삭제해도 되나요?"라고 물어본다. 이게 실행 단계 가드레일이다. 물어보지 않고 삭제하면 복구가 안 된다.

입력 가드레일

모델에 전달되는 입력을 사전에 검증한다.

프롬프트 인젝션 방어 — 사용자 입력이 시스템 프롬프트를 덮어쓰지 못하도록 분리. 입력을 XML 태그나 delimiter로 격리하는 방식이 일반적이다.

토큰 길이 제한 — 입력이 컨텍스트 윈도우를 초과하면 truncation 전략이 필요하다. 무작정 자르면 중요한 정보가 빠진다.

PII 마스킹 — 개인정보(이메일, 전화번호, 주민번호)를 모델에 전달하기 전에 마스킹.

실행 가드레일

모델이 도구를 사용할 때 행동을 제한한다.

허용 목록 기반 도구 사용 — 모델이 호출 가능한 도구를 화이트리스트로 관리. "파일 읽기는 OK, 파일 삭제는 승인 필요."

타임아웃과 재시도 횟수 제한 — 무한 루프 방지. 5번 재시도해도 안 되면 에스컬레이션.

샌드박스 실행 — 코드 실행은 격리된 환경에서. Docker 컨테이너나 VM에서 돌리면 호스트에 영향을 안 준다.

출력 가드레일

모델의 응답을 사용자에게 전달하기 전에 검증한다.

스키마 검증 — JSON 출력이 기대하는 스키마에 맞는지. 필수 필드 누락, 타입 불일치를 잡는다.

유해 콘텐츠 필터 — 모델이 부적절한 내용을 생성하면 차단. 별도의 분류 모델로 체크하는 경우도 있다.

사실 확인(grounding) — 모델이 참조한 정보가 실제로 제공된 컨텍스트에 있는지 확인. hallucination 방지.

동작 흐름

1

입력 가드레일 — 프롬프트 인젝션 방어, 토큰 길이 제한, PII 마스킹

2

실행 가드레일 — 허용 목록 기반 도구 사용, 타임아웃, 샌드박스

3

출력 가드레일 — 스키마 검증, 유해 콘텐츠 필터, 사실 확인(grounding)

4

3단계 전부 적용해야 완전한 가드레일 — 하나만 있으면 구멍이 생긴다

사용 사례

Claude Code — 파일 수정/삭제 전 승인, 위험 명령(git push --force) 경고 고객 대응 챗봇 — PII 마스킹 + 유해 콘텐츠 필터 + 환불 금액 상한 설정 CI/CD 파이프라인 AI — 프로덕션 배포는 자동 불가, 스테이징까지만 자율