Matt Shumer는 컴퓨터 앞에 앉아 AI 에이전트에게 간단한 명령을 내렸습니다: "파일 정리해줘." 그는 이 루틴을 수백 번 실행했지만 단 한 번의 문제도 없었습니다. 하지만 이번에는 경로 해석(path resolution) 오류로 인해 평범한 정리 작업이 대참사로 변했습니다. 수년간 쌓아온 코드, 문서, 사진이 순식간에 사라졌습니다.
이것은 가상의 위험이 아닙니다. 실제 개발자의 실제 기기에서 발생한 일이며, 해당 에이전트는 실패하는 순간 전까지는 완벽해 보이는 실적을 보유하고 있었습니다. 파일을 작성하고, 터미널 명령을 실행하며, 하위 에이전트(subagent)를 생성할 수 있는 AI 에이전트는 이제 IDE, 채팅 인터페이스, 자동화 파이프라인에 내장되어 있습니다. 이들은 운영 체제에 대한 직접적인 접근 권한을 부여받으며, 바로 그 신뢰 속에 위험이 도사리고 있습니다. Shumer의 기기를 파괴한 것과 동일한 실패 모드가 도구 접근 권한을 가진 모든 에이전트에 존재합니다. 왜 실패하는지, 그리고 어떻게 적절히 가두어야(cage) 하는지 이해하는 것은 이제 이러한 도구를 사용하는 모든 이에게 필수적인 생존 기술입니다.
패턴 매칭이 파일 시스템과 만날 때
AI 에이전트는 생각하지 않습니다. 패턴을 매칭할 뿐입니다. 사용자가 "파일 정리해줘"라고 말하면, 모델은 학습된 메모리에서 수천 개의 유사한 상호작용을 검색하여 통계적으로 패턴에 부합하는 명령을 생성합니다. 만약 빌드 디렉토리의 임시 파일을 삭제하라는 지시라면, 모델은 rm -rf /tmp/build-cache/*와 같은 명령을 생성할 수 있습니다. 이는 모델이 이전에 보았던 다른 모든 정리 명령과 유사하기 때문에 합리적으로 보입니다.
하지만 $HOME과 같은 변수가 제대로 해석되지 않으면 어떻게 될까요? 사람은 빈 문자열이나 예상치 못한 경로를 보면 멈춰서 질문을 던집니다. 하지만 에이전트는 패턴이 여전히 일치한다고 판단하고 엔터를 누릅니다. Shumer의 경우, 특정 폴더를 정리하려던 명령이 대신 사용자 디렉토리의 루트를 대상으로 삼았습니다. 에이전트는 경로가 왜 이상해 보이는지 의문을 갖지 않았습니다. 대상을 검증하지도 않았습니다. 단지 실행이 "정리"라는 패턴과 일치했기 때문에 명령을 실행했을 뿐입니다.
이것이 거대 언어 모델(LLM)과 시스템 관리 사이의 핵심적인 불일치입니다. 진정한 추론은 맥락을 이해하고, 가정을 검증하며, 예외 상황을 처리하는 것을 포함합니다. 반면 패턴 매칭은 통계적으로 정답과 유사한 텍스트를 생성하는 것을 의미합니다. 그 정답이 재귀적 삭제 플래그(recursive delete flag)를 포함한 터미널 명령일 때, 통계적 유사성만으로는 충분하지 않습니다.
하위 에이전트의 사각지대
많은 현대적 에이전트 프레임워크는 작업을 하위 에이전트에게 위임하는 메인 오케스트레이터(orchestrator)를 사용합니다. 부모 에이전트는 "홈 디렉토리는 절대 건드리지 말 것", "삭제 전 항상 물어볼 것", "감사 로그를 유지할 것"과 같은 엄격한 지침을 가질 수 있습니다. 그런 다음 "오래된 로그 정리"와 같은 좁은 범위의 프롬프트를 가진 작업자를 생성합니다.
그 하위 에이전트는 종종 고립된 상태(silo)에서 작동합니다. 도구는 상속받지만, 부모의 안전 문화까지 상속받지는 않습니다. 메인 에이전트를 신중하게 유지했던 제약 조건들은 컨텍스트 윈도우 관리 과정에서 압축되거나, 요약되거나, 완전히 누락됩니다. 하위 에이전트는 작업과 도구 모음은 전달받지만, 가드레일을 구축하기 위해 투입되었던 수 시간의 세심한 프롬프팅은 전달받지 못합니다.
그 결과 일종의 조직적 기억상실이 발생합니다. 부모 에이전트의 시스템 프롬프트에 존재하는 안전 규칙은 하위 에이전트에게는 존재하지 않는 것이나 다름없습니다. 이는 특히 위험한데, 하위 에이전트에게는 보통 운영자가 세밀하게 모니터링하지 않는 반복적이고 낮은 중요도의 작업들이 맡겨지기 때문입니다. 운영자가 프로덕션 데이터베이스를 삭제하기 전까지는 아무도 로그 정리 작업을 지켜보지 않습니다.
결단력의 위험성
AI 에이전트 설계에는 최대 자율성을 지향하는 트렌드가 있습니다. 이러한 비전에서 이상적인 에이전트는 사소한 질문으로 사용자를 번거롭게 하지 않습니다. 결단력 있게 행동하고, 도구 호출을 체인처럼 연결하며, 숨 돌릴 틈도 없이 다단계 워크플로우를 완료합니다.
그 결단력이 바로 이러한 시스템을 안전하지 않게 만드는 요소입니다. "결단력 있게 행동하라"고 프로그래밍된 모델은 자신의 작업을 재검토하지 않습니다. 명령이 파괴적으로 보일 때 멈추지도 않습니다. 망설임을 기능이 아닌 버그로 취급합니다. 모델이 맞을 때는 이것이 마법처럼 느껴지지만, 틀렸을 때는 가차 없이 느껴집니다. 잘못된 명령을 늦춰줄 시스템상의 자연스러운 마찰(friction)이 존재하지 않습니다.
Shumer의 에이전트는 수백 번 동안 올바르게 작동했습니다. 그러한 실적은 근거 없는 안도감을 심어주었습니다. 하지만 101번째 시도가 패턴이 깨지는 통계적 이상치라면, 백 번의 시도 동안 보여준 신뢰성은 아무런 의미가 없습니다. 시스템 안전 분야에서 과거의 성능은 고장 모드가 점진적이고 눈에 보일 때만 의미가 있습니다. AI 에이전트의 실패는 갑작스럽고, 소리 없이 발생하며, 전면적입니다. “수백 번 동안 잘 작동했다”는 것은 안전 기록이 아닙니다. 그것은 결국 바닥이 날 운에 대한 설명일 뿐입니다.
실질적인 보호 체계를 구축하는 방법
모델이 안전 계층이 아니라면
