Anthropic은 10월 1일 Claude Code에 mods라는 확장 기능을 추가했다. 공식 블로그에 따르면 mod는 Claude Code의 이벤트에 연결되는 작은 TypeScript 함수로, 프롬프트를 고쳐 쓰거나 UI 요소를 추가하거나 내장 기능을 교체하거나 완전히 새로운 기능을 더할 수 있다. CLI와 데스크톱 앱 모두 지원하며, Claude Code 2.1.287 이상이 필요하다.
배포는 기존 플러그인 체계를 그대로 따른다. Claude 플러그인 마켓플레이스에서 설치하거나, 세션 안에서 /plugin을 실행하면 된다. 직접 만든 mod를 다른 사람도 쓰게 하려면, 플러그인으로 묶어서 마켓플레이스에 제출하면 된다.
mod가 닿을 수 있는 영역
Claude Code 안에서 도구를 호출하거나, 권한을 요청하거나, 화면의 일부를 그리는 모든 동작은 이벤트를 발생시키며, mod는 그 전이나 후에 실행되거나 동작 전체를 대체할 수 있다. 공식 문서가 제시하는 기능은 다음과 같다.
- 모델에 도달하는 프롬프트 고쳐 쓰기;
- 도구 호출을 가로채거나 고쳐 쓰거나 다시 시도하기;
- 권한 요청을 승인하거나 거부하기;
- Claude가 도구 출력을 읽기 전에 일부를 지우기;
- 화면에 버튼과 입력창을 추가하기.
개발자 블로그의 시작 가이드는 Addy Osmani가 썼으며, 모델과 맞닿는 부분을 더 깊이 다룬다. 각 훅은 미들웨어 체인의 한 고리이며, 세 가지 방식으로 쓸 수 있다. next(e)를 호출해 그대로 통과시키고 결과를 나중에 들여다보는 방식은 관찰이고, 값을 고친 이벤트를 다음으로 넘기는 방식은 수정이며, next()를 호출하지 않고 바로 {deny: "reason"}을 돌려주는 방식은 즉답이다. 다루는 이벤트에는 도구 호출, 프롬프트 제출, 턴의 시작과 끝, 슬래시 명령, UI 렌더링이 있다.
가이드의 예시는 약 80줄짜리 mod인 Token Weather다. 입력창 위에 '컨텍스트 날씨 예보'를 그리는데, 컨텍스트 윈도우 사용률에 따라 날씨 아이콘이 바뀌고, 현재 토큰 수와 비율을 보여주며, 최근 12턴의 작은 스파크라인을 곁들이고, 이전 턴보다 얼마나 늘었는지도 표시한다. UI 부분은 AbovePrompt 컴포넌트를 쓴다.
훅에서 mods로
Claude Code에는 원래 settings hooks가 있었다. 이벤트마다 셸 명령을 띄우고, stdin과 stdout으로 JSON을 주고받는 방식이다. 간단하지만 매번 새 프로세스를 띄워야 하고, 지난번에 무슨 일이 있었는지 기억하지 못한다.
mods는 세션이 시작될 때 한 번 불러와진 뒤 계속 상주한다. 가이드는 이 차이를 세 가지로 정리한다. 상태를 저장할 수 있고, 계속 바뀌는 UI를 그릴 수 있고, 패널을 열거나 명령을 등록하는 등 Claude Code 자신의 기능을 호출할 수 있다. Token Weather가 12턴짜리 스파크라인을 그릴 수 있는 것도 이 상주 상태 덕분이며, 셸 훅으로 같은 걸 하려면 직접 디스크에 기록을 남겨야 했을 것이다.
이 흐름을 이어 보면 Claude Code의 확장성은 한 겹씩 쌓여 왔다. 처음에는 CLAUDE.md와 settings hooks가 있었고, 다음에는 /plugin 마켓플레이스가 생겼고, 최근에는 AGENTS.md 지원도 내장 플러그인으로 구현됐다. mods는 훅을 '덧붙인 스크립트'에서 '프로세스 안에서 돌아가는 코드'로 바꾸면서 손댈 수 있는 범위를 크게 넓혔다.
보안 경계
범위가 넓어지면 위험도 커진다. 공식 블로그는 이를 직설적으로 말한다.
Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed, and you should only install mods from sources you trust.
(mod는 당신의 컴퓨터에 대해 Claude Code 자신과 똑같은 접근 권한을 가진다. 샌드박스 안에서 돌지 않으므로, 믿을 수 있는 곳에서 받은 mod만 설치해야 한다.)
가이드는 실행 환경을 다른 각도에서 설명한다. mod 모듈은 자신만의 분리된 환경에서 돌아가며 DOM도 Node도 없고, 바깥으로 나가는 모든 동작은 $라는 인터페이스를 거쳐야 한다. 두 설명을 같이 놓고 보면, 분리된 것은 실행 환경이지 권한이 아니다. 권한 이벤트를 손에 넣은 mod는 사용자 대신 '승인'을 누를 수 있다.
Team과 Enterprise 플랜, 그리고 관리형 설정이 깔린 기기는 sec-default라는 내장 mod를 먼저 불러와, 사용자가 설치한 mod의 고위험 동작, 예를 들어 권한 거부 규칙을 덮어쓰는 행동을 막는다. 관리자는 엔터프라이즈 콘솔에서 설치 가능한 마켓플레이스를 제한할 수도 있다. 개인 계정에는 이런 안전망이 기본으로 없다. 중국 본토 팀에게는 Claude Code 계정과 네트워크 장벽이 원래 높은 편이라, mods는 당분간 이미 쓰고 있는 팀에게 맞춤 도구 하나가 더 늘어나는 정도로 보인다. 외부 mod 생태계가 얼마나 빨리 커질지는 마켓플레이스 심사를 얼마나 느슨하게 두는지에 달려 있다.
참고 출처: Anthropic 공식 Claude 블로그, Claude 개발자 블로그의 시작 가이드, CocoLoop; 공식 가이드로 버전 요건, 이벤트 종류, 예시 코드 줄 수를 확인.