AI 에이전트를 신뢰하지 마세요
2026년 2월 28일 · Gavriel Cohen
AI 에이전트를 활용하여 개발할 때, 에이전트는 신뢰할 수 없고 잠재적으로 악의적인 존재로 취급해야 합니다. 프롬프트 인젝션, 샌드박스 탈출을 시도하는 모델, 아직 아무도 생각하지 못한 위협 등 어떤 위협 모델이든 간에 에이전트를 신뢰해서는 안 됩니다. 올바른 접근법은 더 나은 권한 검사나 똑똑한 허용 목록이 아닙니다. 에이전트가 잘못된 행동을 할 것이라고 가정하고, 그 피해를 격리하는 아키텍처입니다.
이것이 NanoClaw를 설계한 원칙입니다.
프로세스를 신뢰하지 마세요
OpenClaw는 기본적으로 호스트 머신에서 직접 실행됩니다. 선택적 Docker 샌드박스 모드가 있지만 기본적으로 비활성화되어 있으며, 대부분의 사용자는 활성화하지 않습니다. 샌드박스 없이는 보안이 전적으로 애플리케이션 수준의 검사에 의존합니다: 허용 목록, 확인 프롬프트, “안전한” 명령어 세트. 이런 검사들은 에이전트가 잘못된 행동을 하지 않을 것이라는 암묵적 신뢰 위에 성립합니다. 에이전트가 잠재적으로 악의적이라는 사고방식을 받아들이면, 애플리케이션 수준의 차단만으로는 부족하다는 것이 명백합니다. 완전한 보안을 제공하지 않습니다. 의지를 가진 또는 침해된 에이전트는 우회 방법을 찾아낼 수 있습니다.
NanoClaw에서는 컨테이너 격리가 아키텍처의 핵심입니다. 각 에이전트는 자체 컨테이너에서 실행됩니다. Docker 또는 macOS의 Apple Container를 사용합니다. 컨테이너는 일회성으로, 호출할 때마다 새로 생성되고 이후 파괴됩니다. 에이전트는 비특권 사용자로 실행되며, 명시적으로 마운트된 디렉토리만 볼 수 있습니다. 컨테이너 경계는 OS에 의해 강제됩니다.
다른 에이전트를 신뢰하지 마세요
OpenClaw의 샌드박스가 활성화되어 있더라도 모든 에이전트가 동일한 컨테이너를 공유합니다. 개인 비서와 업무용 에이전트를 별도의 WhatsApp 그룹이나 Telegram 채널에서 사용할 수 있습니다. 하지만 모두 같은 환경에 있기 때문에, 서로 다른 데이터에 접근해야 하는 에이전트 간에 정보가 유출될 수 있습니다.
에이전트끼리도 여러분이 에이전트를 신뢰하는 것 이상으로 서로를 신뢰해서는 안 됩니다. NanoClaw에서는 각 에이전트가 자체 컨테이너, 파일 시스템, Claude 세션 히스토리를 가집니다. 개인 비서는 업무용 에이전트의 데이터를 볼 수 없습니다. 완전히 별도의 샌드박스에서 실행되기 때문입니다.
컨테이너 경계는 하드 보안 레이어입니다. 설정에 관계없이 에이전트는 이 경계를 벗어날 수 없습니다. 그 위에 ~/.config/nanoclaw/mount-allowlist.json의 마운트 허용 목록이 심층 방어의 추가 레이어로 작동합니다. 이것은 에이전트의 탈출을 막기 위한 것이 아니라, 사용자가 노출되어서는 안 되는 것을 실수로 마운트하는 것을 방지하기 위한 것입니다. 민감한 경로(.ssh, .gnupg, .aws, .env, private_key, credentials)는 기본적으로 차단됩니다. 허용 목록은 프로젝트 디렉토리 외부에 있으므로, 침해된 에이전트가 자신의 권한을 수정할 수 없습니다. 호스트 애플리케이션 코드는 읽기 전용으로 마운트되므로, 에이전트의 어떤 행위도 컨테이너 파괴 후에 남지 않습니다.
그룹 내 사람들도 신뢰해서는 안 됩니다. 메인이 아닌 그룹은 기본적으로 신뢰되지 않습니다. 다른 그룹과 그 구성원은 다른 채팅에 메시지를 보내거나, 다른 그룹의 작업을 예약하거나, 다른 그룹의 데이터를 조회할 수 없습니다. 그룹 내 누구든 프롬프트 인젝션을 보낼 수 있으며, 보안 모델은 이를 고려하고 있습니다.
읽을 수 없는 것을 신뢰하지 마세요
OpenClaw에는 약 50만 줄의 코드, 53개의 설정 파일, 70개 이상의 의존성이 있습니다. 이는 오픈소스 보안의 기본 전제를 깨뜨립니다. Chromium은 3,500만 줄 이상이지만 Google의 리뷰 프로세스를 신뢰하기에 가능합니다. 대부분의 오픈소스 프로젝트는 반대 방향으로 작동합니다: 많은 눈이 실제로 리뷰할 수 있을 정도로 작게 유지됩니다. OpenClaw의 40만 줄을 리뷰한 사람은 아무도 없습니다. 적절한 리뷰 프로세스 없이 몇 주 만에 작성되었습니다. 복잡성은 취약점이 숨는 곳이며, Microsoft의 분석이 이를 확인했습니다: OpenClaw의 위험은 일반적인 API 호출을 통해 나타날 수 있는데, 전체 그림을 파악할 수 있는 사람이 없기 때문입니다.

NanoClaw는 하나의 프로세스와 소수의 파일로 구성됩니다. 세션 관리, 메모리 압축 등 많은 기능에서 바퀴를 재발명하는 대신 Claude Code의 래퍼인 Anthropic의 Claude Agent SDK에 크게 의존합니다. 유능한 개발자라면 오후 한나절이면 전체 코드베이스를 리뷰할 수 있습니다. 이것은 의도적인 제약이지, 한계가 아닙니다. 기여 가이드라인은 버그 수정, 보안 수정, 그리고 단순화만 허용합니다.
새로운 기능은 스킬을 통해 추가됩니다. 스킬이란 코딩 에이전트가 코드베이스에 머지하는 완전한 참조 구현이 포함된 지침입니다. 추가될 코드를 사전에 정확히 리뷰할 수 있습니다. 그리고 실제로 필요한 통합만 추가합니다. 모든 설치는 소유자의 정확한 요구사항에 맞춘 수천 줄의 코드가 됩니다.
이것이 진정한 차이입니다. 40만 줄의 모놀리식 코드베이스에서는 두 개의 통합만 활성화하더라도 나머지 코드가 여전히 존재합니다. 여전히 로드되고, 여전히 공격 표면의 일부이며, 프롬프트 인젝션과 악성 에이전트가 접근할 수 있습니다. 활성 상태인 것과 비활성 상태인 것을 분리할 수 없습니다. “내 코드”의 경계조차 정의할 수 없기에 감사도 불가능합니다. 스킬에서는 경계가 명확합니다: 수천 줄이고, 모두 직접 추가를 선택한 코드이며, 모든 줄을 읽을 수 있습니다. 코어는 실제로 시간이 지남에 따라 작아지고 있습니다. 예를 들어, WhatsApp 지원은 스킬로 분리되어 패키징되고 있습니다.
불신을 전제로 설계하세요
환각이나 오작동하는 에이전트가 보안 문제를 일으킬 수 있다면, 그 보안 모델은 망가진 것입니다. 보안은 에이전트 표면 바깥에서 강제되어야 하며, 에이전트가 올바르게 동작하는 것에 의존해서는 안 됩니다. 컨테이너, 마운트 제한, 파일 시스템 격리는 모두 에이전트가 예상치 못한 행동을 하더라도 피해 범위를 억제하기 위해 존재합니다.
이것으로 위험이 완전히 사라지는 것은 아닙니다. 데이터에 접근할 수 있는 AI 에이전트는 본질적으로 고위험 구성입니다. 하지만 올바른 대응은 그 신뢰를 가능한 한 좁고 검증 가능하게 만드는 것입니다. 에이전트를 신뢰하지 마세요. 벽으로 둘러싸세요.
NanoClaw의 소스 코드와 전체 보안 모델을 읽을 수 있습니다. 오후 한나절이면 읽을 수 있는 분량입니다.