이번 주 AI 코딩 에이전트 관련 뉴스가 세 건 동시에 터졌다. Meta가 대규모 코드베이스 전용 코딩 에이전트 'Muse Code'를 공개했고, Anthropic은 Claude Code 2.1.223 보안 패치를 배포했으며, npm 생태계에서는 Claude Code와 VS Code의 SessionStart 훅을 타깃으로 한 웜 공격이 발생했다. 개별 뉴스로 소비하면 그냥 흘러가는 이슈들이다. 그런데 셋을 한 줄에 놓고 보면 완전히 다른 신호가 보인다.
에이전트 도구는 빠르게 늘어나고 있고, 공격자들은 이미 그 도구들의 자동 실행 경로를 파고들고 있다. 팀이 에이전트 도입 속도를 높이기 전에 보안 통제선을 먼저 설계해야 한다는 근거가 동시에 세 방향에서 도착한 셈이다.
에이전트는 늘어나는데, 공격 표면도 함께 늘어난다
Meta Muse Code의 핵심 설계는 하위 에이전트(sub-agent) 병렬 실행이다. 저커버그가 직접 "작업 규모가 커지면 분리된 작업 트리에서 병행하는 하위 에이전트들로 확산된다"고 설명했다. 사용자의 작업 사본을 건드리지 않고 최대 6개 기능을 동시에 구축할 수 있다는 것이 셀링 포인트다. Codex, Claude Code와 정면 경쟁하겠다는 선언이기도 하다.
이 구조가 팀 운용 관점에서 의미하는 것은 하나다. 에이전트가 단일 프로세스로 작동하는 게 아니라 여러 하위 에이전트가 동시에 저장소에 접근한다는 뜻이다. 어떤 하위 에이전트가 어떤 권한으로 무엇을 실행하는지 팀이 가시성을 확보하지 못하면, 에이전트가 '완료'라고 보고하는 순간 이미 검증 창이 닫혀버린다.
Claude Code 권한 우회 취약점, 패턴이 더 문제다
Claude Code 2.1.223은 네 가지 보안 경계 취약점을 패치했다. dev.to에 공개된 검증 체크리스트를 기준으로 요약하면 이렇다. 첫째, 조작된 Bash 명령이 일부 실행 내용을 권한 검사에서 숨길 수 있었다. 둘째, 탭이나 유니코드 공백 문자를 이용해 승인 프롬프트에서 명령 내용을 숨길 수 있었다. 셋째, 워크플로우 스크립트가 dynamic import()를 통해 워크플로우 샌드박스 밖을 실행할 수 있었다. 넷째, 에이전트 정의의 bypassPermissions 설정이 조직 정책의 비활성화 설정을 무시할 수 있었다.
CVE 번호가 공개되지 않았고, 실제 익스플로잇 여부도 확인되지 않았다. 그러나 패턴이 중요하다. 이 취약점들은 모두 '권한 검사를 통과한 것처럼 보이게 만드는' 방향으로 설계된 우회 경로다. 에이전트가 자율적으로 실행하는 환경일수록, 사람이 개입하지 않는 구간이 길수록, 이런 우회가 탐지되지 않는 시간도 길어진다.
업그레이드만으로는 충분하지 않다. 체크리스트가 명시적으로 경고하는 실수가 있다. IDE, 백그라운드 에이전트, CI 파이프라인에서 Claude Code를 실행하는 경우, 인터랙티브 CLI만 업그레이드하고 나머지를 놓치는 케이스다. 각 실행 표면마다 claude --version으로 실제 구동 버전을 확인해야 하고, 세션을 재시작해야 한다. 요약하면: 버전 업그레이드 ≠ 보안 패치 적용 완료.
npm 웜이 SessionStart 훅을 노렸다는 것의 의미
npm 웜 공격 분석 기사가 짚은 핵심은 "이번 건이 AI 특화 공격이 아니다"라는 점이다. Claude Code와 VS Code의 SessionStart, folderOpen 훅은 결국 설정 기반 태스크 러너다. 공격자는 AI 보안을 뚫은 게 아니라 예측 가능한 생명주기 이벤트에 훅을 걸었을 뿐이다. npm의 preinstall/postinstall 스크립트 남용과 동일한 플레이북이다. 새로운 건 트리거 조건이다. 폴더를 열거나 에이전트 세션이 시작되는 순간, 사람이 별도로 무언가를 실행하지 않아도 페이로드가 동작한다.
이 공격이 노린 keyv는 아무도 주목하지 않는 작은 캐싱 라이브러리다. 충분히 많이 쓰이고, 충분히 지루해서 아무도 눈여겨보지 않는 의존성이다. 그게 정확히 벡터로 선택된 이유다. 에이전트 훅 시스템이 공격 표면에 포함됐다는 사실 자체를 팀이 아직 에셋 인벤토리나 정책에 반영하지 않았다는 점이 더 큰 문제다. 도구는 새로운데, 위협 모델은 아직 업데이트되지 않은 상태.
팀이 내일 당장 설계해야 할 세 가지 통제선
세 사건이 수렴하는 방향은 명확하다. AI 코딩 에이전트를 팀 워크플로우에 실제로 운용하려면, 도구 선택 이전에 보안 통제 기준선을 먼저 정의해야 한다. 추상적 권고가 아니라 내일 당장 실행할 수 있는 세 가지 설계 포인트를 정리한다.
첫째, 권한 모드는 기본적으로 닫아라. Claude Code 체크리스트가 권고하는 설정은 간단하다. disableBypassPermissionsMode를 disable로, 샌드박스는 failIfUnavailable: true로, allowUnsandboxedCommands는 false로. 그리고 이 설정의 소스를 저장소 내 파일이 아닌 신뢰된 사용자 또는 관리 설정으로 관리해야 한다. 저장소에 설정 파일을 두면, 저장소가 오염됐을 때 설정도 함께 오염된다. 또한 Claude Code는 명시적 deny 규칙을 ask/allow보다 먼저 평가한다. 샌드박스가 활성화돼 있어도 consequential한 명령에 대한 narrow deny 규칙은 별도로 유지해야 한다.
둘째, 에이전트 훅 시스템을 에셋 인벤토리에 추가하라. AI 코딩 도구가 지원하는 훅의 종류, 트리거 조건, 실행 권한 범위를 정책 문서에 명시해야 한다. 팀 대부분이 이걸 아직 하지 않은 이유는 간단하다. 도구가 너무 새롭기 때문이다. npm worm 분석 기사의 표현을 빌리면: "새로운 것이라 아직 아무도 에셋 인벤토리나 정책에 넣지 않은 상태." 이걸 sprint backlog에 넣는 팀이 그렇지 않은 팀보다 6개월 후 인시던트 발생 확률이 낮다.
셋째, 의존성 트리 감사를 에이전트 도입 체크리스트에 포함하라. 이번 공격 벡터는 keyv였다. 직접 사용하는 라이브러리가 아니라 의존성의 의존성이다. npm audit이나 npm ls로 전이 의존성을 확인하고, 에이전트가 접근 가능한 워크스페이스의 의존성 트리가 최근에 감사됐는지를 온보딩 및 정기 점검 항목으로 만들어야 한다. AI 코딩 에이전트는 코드를 빠르게 만들어주지만, 그 코드가 당겨오는 의존성에 대한 검토는 여전히 사람의 몫이다.
에이전트 경쟁이 빨라질수록, 통제 설계의 가치가 높아진다
Meta Muse Code 출시는 AI 코딩 에이전트 시장이 Codex, Claude Code, Muse Code로 3파전 구도가 됐다는 신호다. 경쟁이 심화될수록 각 도구는 더 많은 자율성, 더 넓은 저장소 접근, 더 복잡한 하위 에이전트 구조를 추가할 것이다. 팀이 도구를 선택하는 속도보다 공격자가 그 도구의 새로운 자동 실행 경로를 탐색하는 속도가 더 빠를 수도 있다.
팀 리빌딩 관점에서 지금 이 시점에 해야 할 일은 도구 선택보다 통제 기준선 수립이다. 어떤 에이전트를 도입하든 동일하게 적용할 수 있는 권한 모드 정책, 훅 인벤토리, 의존성 감사 체계를 먼저 설계해두면, 다음에 새 도구가 나왔을 때 평가 기준이 생기고, 인시던트가 발생했을 때 대응 경로가 생긴다. 도구가 바뀌어도 통제 기준선은 남는다.