AgentGuard 1.1: 에이전트 간 메시지를 위한 오픈 소스 방화벽
요약
AgentGuard 1.1은 다중 에이전트 시스템 내에서 에이전트 간 메시지 오염과 하이재킹을 방지하는 오픈 소스 방화벽 도구입니다. Inspect, Attest, Contain의 세 가지 핵심 기능을 통해 메시지 무결성을 검증하고 권한을 제어합니다.
핵심 포인트
- 에이전트 간 메시지 주입 및 하이재킹 탐지율 최대 99.4% 달성
- Inspect(규칙/ML 검사), Attest(서명), Contain(권한 제어) 기능 제공
- 간접 주입 및 MCP 오염에 대해 100% 탐지 성능 기록
- ML 모델 사용 시 약 3.4초의 지연 시간이 발생할 수 있어 규칙 전용 모드 권장
저는 AI 에이전트의 무서운 부분이 모델의 환각(hallucination)이라고 생각했었습니다.
그렇지 않습니다.
무서운 부분은 시스템이 괜찮아 보이는 경우입니다. 녹색 로그, 깨끗한 출력물, 보고서를 작성하는 공손한 라이터 에이전트가 있는 상황에서, 어딘가 중간에 하나의 메시지가 조용히 임무를 변경해 버리는 것입니다.
사용자가 사악한 것을 입력해서가 아닙니다.
연구원(researcher) 에이전트가 페이지를 가져와서 그랬을 수도 있습니다. 도구(tool)가 오염된 텍스트를 반환했기 때문일 수도 있습니다. 다음 에이전트가 우리가 매일 함께 일하는 사람들을 신뢰하는 것처럼 팀원을 신뢰하기 때문일 수도 있습니다.
그 신뢰는 팀에서 아름다운 것입니다.
다중 에이전트 시스템(multi-agent systems)에서도 마찬가지로, 그것은 또한 구멍이기도 합니다.
에이전트를 구축해 본 사람이라면 이미 이 느낌을 알고 있을 겁니다
오케스트레이터(orchestrator) → 연구원(researcher) → 라이터(writer) 순서로 연결합니다.
그들이 서로에게 작업을 넘겨주는 것을 지켜봅니다.
협업처럼 느껴집니다.
그러다가 어느 날 깨닫게 됩니다: 아무도 그들 사이에 서 있지 않다는 것.
우리는 정문(user → model)에 가드레일(guardrails)을 설치합니다.
하지만 에이전트 사이의 복도는 잠금장치 없이 열어둡니다.
저는 그 메시지들을 신뢰할 수 없는 것으로 취급하는 오픈 소스 도구를 찾았습니다. 챗봇 필터가 아닙니다. 또 다른
- Inspect — 규칙(rules) (+ 선택적 ML): 주입(injection), 하이재킹(hijack), 오염된 도구 반환값(poisoned tool returns)
- Attest — Ed25519 서명으로 메시지가 조용히 교체되는 것을 방지
- Contain — YAML 기능 명세서(capability manifests); 권한이 하위 시스템으로 축소될 수 있으며, 절대 조용히 증가하지 않음
단순히 ‘또 다른 AI 패키지’가 아닙니다. 누군가가 행동하기 전에 최종적으로 인계받은 내용을 확인해 주는 동료와 같습니다.
왜 이 스토리를 신뢰할 수 있나요
- 느낌이 아닌 실제 수치: 99.4% 탐지율, 0.0% FPR (160개의 적대적 예제 + 1,000개의 정상 예제, INT8 ONNX). 간접 주입/MCP 오염/전파: 100%. 목표 하이재킹(Goal hijack): 97.3%.
- 코퍼스 자체를 검증할 수 있습니다: agentguard-benchmark-v1
왜 한계점도 신뢰해야 하는가
CPU ML 지연 시간은 여전히 P95 기준 약 3.4초입니다. 이는 원래 설계 목표인 15ms를 초과합니다. GPU 사용, 비동기 검사(async inspection), 또는 급한 경로에서는 규칙 전용(rules-only) 방식을 사용하세요.
신뢰란 세부 조항을 통과하는 연결고리입니다.
두려움 없이 채택하기 — 작게 시작하고, 인간으로 머무르기
믿음은 첫날부터 고통스러우면 죽습니다. 그래서 도입 경로는 의도적으로 부드럽습니다:
from agentguard import AgentGuard, CapabilityManifest
guard = AgentGuard(
...
- 규칙 전용으로 하나의 그래프를 감싸거나 (또는 LangChain의 경우
AgentGuardMiddleware추가) - 프로덕션 환경이 불안하다면 먼저 모니터링하세요 — 문을 잠그기 전에 복도를 기록합니다.
- 탐지보다 콜드 스타트(cold start)가 더 중요하지 않을 때 나중에 ONNX 모델을 추가하세요:
python scripts/download_release_model.py # ~164 MB, 선택적 업그레이드
첫날부터 전체 스택이 필요하지 않습니다.
그 에이전트들 사이에 무언가만 있으면 됩니다.
다음은 무엇인가요
다중 에이전트 시스템을 구축하고 있다면, 당신만 그런 조용한 걱정을 하는 것이 아닙니다.
어쩌면 혼자 개발하는 밤에 배포할 수도 있고.
어쩌면 팀원들이 방금 세 개의 에이전트를 연결하고 너무 빨리 자랑스러움을 느꼈을 수도 있습니다.
어쩌면 도구 반환값 때문에 이미 '상관없어야 할' 방식으로 지쳐버렸을 수도 있습니다.
저는 우리가 복도가 안전하다고 가장하는 것을 멈출 수 있도록 AgentGuard를 만들었습니다.
더 나아가고 싶다면:
| 목표 | 행동 |
|---|---|
| 작동 확인하기 | 위의 두 가지 데모를 실행하세요 |
| ... |
Star(별)는 사람들이 리포지토리(repo)를 찾는 데 도움을 줍니다. Issue(이슈)와 Story(스토리)는 프로젝트가 더 나아지는 데 도움을 줍니다.
- GitHub: https://github.com/nizba06/agentguard
- PyPI: https://pypi.org/project/inter-agent-guard/
- Docs: https://inter-agent-guard.readthedocs.io/
- Demo: https://github.com/nizba06/inter-agent-guard-demo
개인 오픈 소스 프로젝트입니다. 이 격차가 저를 밤을 새우게 만들 정도로 신경 쓰였기에 만들었습니다.
잠금장치 없는 복도가 당신에게도 신경 쓰인다면 — 리포지토리에 Star를 누르거나, 래퍼(wrap)를 시도하거나, Issue를 열어주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기