Perplexity Numbat — 로컬 에이전트 난동 막는 가드레일

최근 Claude Code나 OpenHands 같은 로컬 개발 에이전트를 쓰는 분들이 늘고 있습니다. 터미널 권한을 주고 알아서 코드를 작성하고 실행하게 두면 아주 편하지만, 이 녀석이 갑자기 위험한 셸 명령을 실행하거나 로컬 파일을 날려버리지는 않을까 늘 불안하기 마련이죠.

마침 퍼플렉시티(Perplexity)가 이런 고민을 해결해 줄 흥미로운 보안 레이어인 넘뱃(Numbat)을 오픈소스로 공개했습니다. 아파치 2.0 라이선스로 배포된 Numbat은 로컬 머신에서 활동하는 에이전트의 터미널 세션 트랜스크립트와 텔레메트리 데이터를 실시간으로 감시하는 Go 기반의 가볍고 단일한 정적 바이너리 보안 사이드카입니다.

이 도구의 핵심은 공통 표현 언어(CEL)를 사용해 에이전트의 위험한 행동 양식을 정의하고 탐지한다는 점입니다. 기본적으로 11개 카테고리에 걸쳐 52개의 빌트인 규칙을 내장하고 있어, 악성 파일 쓰기나 비정상적인 셸 실행 패턴을 기민하게 포착해 냅니다.

기본값은 감시 위주의 모니터링 모드이지만, 설정을 통해 차단(Enforce) 모드로 전환하는 것도 가능합니다. 예를 들어 아래와 같이 규칙 설정을 조율하면 위험한 행위를 실행 직전에 안전하게 가로막을 수 있습니다.

yaml
# Numbat CEL 규칙 설정 예시
id: block-destructive-command
category: shell_execution
cel: "command.contains('rm -rf')"
enforce: true

앞으로 에이전트가 로컬 개발 환경에서 실질적인 쓰기 권한을 더 많이 갖게 될수록, 이런 가벼운 가드레일 사이드카 패턴은 필수가 될 가능성이 높습니다. 무조건 에이전트의 판단을 믿기보다 이렇게 로컬 단에서 샌드박싱 효과를 주는 보안 필터를 띄워두는 편이 훨씬 마음 편하겠죠 ㅎㅎ 에이전트 워크플로우 보안에 관심 있는 분들이라면 한번 가볍게 살펴보셔도 좋을 듯합니다.