← 전체 글
Ecosystem

공식 마켓플레이스를 설치하기 전에 Claude Code 플러그인 감사하기

A developer workbench scene showing a Claude Code plugin marketplace card passing through a security scanner, with small

Anthropic의 공식 Claude Code 플러그인 마켓플레이스는 더 이상 설정 폴더 어딘가에 묻힌 소문이 아니다. 공개 GitHub 저장소인 anthropics/claude-plugins-official은 2026년 6월 17일 기준 30,000개가 넘는 스타를 받았고, README는 내부 Anthropic 플러그인과 서드파티 항목을 포함한 선별 디렉터리라고 설명한다. 같은 README에는 당신의 기본 태도를 정해야 할 문장도 들어 있다. “플러그인을 설치, 업데이트 또는 사용하기 전에 그 플러그인을 신뢰할 수 있는지 확인하라.” Anthropic이 해당 플러그인에 포함된 모든 MCP 서버, 파일, 기타 번들 의존성을 통제하는 것은 아니기 때문이다 (GitHub).

이 경고는 법무팀이 넣은 형식적인 문구가 아니다. Claude Code 플러그인은 슬래시 명령어, 스킬, 에이전트, 훅, MCP 서버, LSP 서버, 실행 파일, 설정을 묶어 담을 수 있다. 개발자식으로 쉽게 말하면, 프롬프트 컨텍스트를 추가하고, 로컬 프로세스를 시작하고, 원격 서비스를 호출하고, 라이프사이클 이벤트에서 셸 훅을 실행하고, 모델에 새 도구를 노출할 수 있다는 뜻이다.

올바른 사고방식은 “에디터 테마를 설치한다”가 아니다. “내 소스 트리 근처에서 코드를 실행할 수 있는 의존성을 추가한다”에 가깝다.

마켓플레이스 카탈로그에서 로컬 캐시, 활성화된 구성요소로 이어지는 Claude Code 플러그인 설치 경로 흐름 스케치, fou 포함

마켓플레이스는 진짜다. 하지만 “공식”이 “무조건 안전”을 뜻하지는 않는다

Anthropic은 2025년 10월 9일 Claude Code 플러그인을 발표하며, 이를 /plugin으로 설치할 수 있는 슬래시 명령어, 에이전트, MCP 서버, 훅의 모음이라고 설명했다 (Claude blog). 현재 Claude Code 문서에 따르면 공식 Anthropic 마켓플레이스인 claude-plugins-official은 Claude Code가 시작될 때 자동으로 사용할 수 있으며, 다음 명령으로 플러그인을 설치할 수 있다.

/plugin install github@claude-plugins-official

플러그인이 보이지 않으면 문서는 다음 명령으로 마켓플레이스를 새로고침하라고 안내한다.

/plugin marketplace update claude-plugins-official

또는 다음처럼 추가할 수 있다.

/plugin marketplace add anthropics/claude-plugins-official

이것이 공식적인 순탄한 경로다 (Claude Code docs). 유용하다. 하지만 운영 정책으로는 불완전하다.

공식 저장소의 마켓플레이스 파일은 로컬 플러그인 디렉터리와 커밋 SHA로 고정된 외부 소스가 섞인 항목들을 가리킨다. 예를 들어 항목은 .claude-plugin/marketplace.json에서 GitHub 저장소, 하위 디렉터리, ref, SHA를 참조할 수 있다 (raw marketplace file). 고정은 도움이 되지만, 고정된 코드가 실제로 무엇을 하는지 살펴볼 필요를 없애주지는 않는다. 플러그인은 여전히 서버를 띄우거나, 자격 증명을 요구하거나, 훅을 실행하거나, 마켓플레이스 매니페스트 바깥에서 동작이 바뀌는 바이너리에 의존할 수 있다.

커뮤니티도 같은 지점을 알아차렸다. 최근 r/ClaudeAI에서 중요한 Claude Code 플러그인을 묻는 스레드에서 한 답변은 먼저 CLAUDE.md와 훅을 쓰고, 그다음 프로젝트별 MCP 서버만 쓰라고 권했다. 또 다른 답변은 토큰을 쓰고 컨텍스트 오염을 일으킬 수 있으니 Claude Code에 “아무 커넥터나 던져 넣지 말라”고 경고했다 (Reddit). 지금의 현실적인 논쟁은 이것이다. 플러그인은 강력하지만, 추가되는 모든 기능에는 비용 표면이 있다.

매니페스트부터 보고, 그다음 저장소를 읽어라

첫 번째 감사 대상은 플러그인 소스다. 소스가 저장소와 매니페스트까지 추적되지 않는다면, 검색 결과 조각, 블로그의 복붙 명령어, 무작위 마켓플레이스 집계 사이트에서 바로 설치하지 마라.

공식 마켓플레이스 저장소에서는 다음을 확인하라.

  1. .claude-plugin/marketplace.json의 마켓플레이스 항목
  2. source 타입, URL, 경로, ref, SHA
  3. 있다면 플러그인의 .claude-plugin/plugin.json
  4. 모든 .mcp.json, .lsp.json, hooks/hooks.json, commands/, skills/, agents/, bin/, 스크립트

Anthropic의 플러그인 레퍼런스는 핵심 구성요소 경로를 나열한다. 훅은 hooks/hooks.json에 있고, MCP 서버는 .mcp.json에 있을 수 있으며, 실행 파일은 bin/에 있을 수 있고, 플러그인 매니페스트는 사용자 지정 구성요소 위치를 가리킬 수 있다 (Claude Code plugin reference). 그러니 “plugin.json을 확인했다”만으로는 충분하지 않다. 플러그인은 기본 검색 경로에 의존할 수 있다.

빠른 수동 리뷰는 이렇게 한다.

git clone https://github.com/OWNER/PLUGIN-REPO /tmp/plugin-audit
cd /tmp/plugin-audit

find . -maxdepth 3 \( \
  -name plugin.json -o \
  -name hooks.json -o \
  -name .mcp.json -o \
  -name .lsp.json -o \
  -path "*/bin/*" -o \
  -path "*/scripts/*" \
\) -print

rg -n "curl|wget|bash|sh -c|chmod|open |xdg-open|osascript|token|api_key|secret|eval|exec|spawn|subprocess"

rg 명령은 투박하다. 하지만 여기서는 투박한 게 좋다. 설치 시점의 돌발 동작, 셸 실행, 브라우저 실행, 원격 다운로드, 자격 증명 처리, 저장소나 홈 디렉터리를 바꾸는 스크립트를 찾는 중이기 때문이다.

내 원칙은 이렇다. 플러그인이 핵심 작업을 하려고 셸 스크립트를 필요로 한다면, 설치 전에 그 스크립트의 모든 명령을 이해하고 싶다. 런타임에 다른 아티팩트를 다운로드한다면, 그 런타임 아티팩트도 플러그인의 일부로 본다.

MCP 서버는 가장 비싼 “편의 기능”이다

MCP는 플러그인의 편의성이 숨은 비용으로 바뀌는 지점이다. Anthropic의 MCP 문서에 따르면 플러그인이 정의한 MCP 서버는 플러그인이 활성화될 때 자동으로 시작되고, 플러그인 MCP 도구는 수동으로 설정한 MCP 도구와 함께 표시된다 (Claude Code MCP docs). 문서는 또한 플러그인 MCP 서버가 수동 설정 서버와 같은 환경 변수를 사용한다고 말한다. 셸이 클라우드 토큰, 데이터베이스 URL, 내부 서비스 자격 증명을 내보내고 있다면 중요한 문제다.

커뮤니티의 불만은 구체적이다. MCP 도구 스키마가 도구를 호출하기도 전에 컨텍스트를 먹을 수 있다는 것이다. r/ClaudeCode의 토큰 오버헤드 스레드에서 사용자들은 비활성화된 플러그인과 무거운 MCP 서버 부재가 낮은 토큰 소모의 유력한 이유라고 지적했고, 한 댓글 작성자는 MCP 도구 스키마를 “거대한 숨은 비용”이라고 불렀다 (Reddit). 또 다른 스레드에서는 연결된 MCP 서버가 도구 스키마를 컨텍스트에 등록한다고 주장하며, 세션별로 서버를 가지치기하라고 권했다 (Reddit).

Reddit의 정확한 토큰 추정치는 자기 환경에서 재현하기 전까지는 일화로 받아들여라. 그래도 방향은 맞다. 많은 장황한 도구를 가진 상시 실행 서버는 공짜가 아니다.

커넥터형 플러그인을 설치하기 전에 이 의사결정 표를 사용하라.

필요더 안전한 기본값MCP를 쓸 때
GitHub 작업 실행Bash를 통한 gh CLIClaude가 이슈, PR, 메타데이터를 대화형으로 탐색해야 할 때
데이터베이스 쿼리읽기 전용 CLI 또는 로컬 스크립트Claude가 범위가 제한된 자격 증명으로 구조화된 도구 호출을 해야 할 때
클라우드 리소스 점검명시적 명령을 쓰는 벤더 CLIMCP 서버 권한이 좁고 감사 로그가 명확할 때
문서 가져오기정적 문서, 저장소 파일, 웹 링크리소스가 크고 동적이며 자주 참조될 때
정책 강제PreToolUse결정에 Claude가 볼 수 있는 컨텍스트나 도구 메타데이터가 필요할 때

CLI 도구는 필요한 때에만 호출되고 해당 턴에만 출력을 만들기 때문에 더 안전한 경우가 많다. MCP는 범위가 제한된 OAuth, 타입이 있는 도구, 감사 로그를 제공할 때 더 안전할 수 있다. 실수는 반사적으로 MCP부터 설치하는 것이다.

컨텍스트 비용, 권한 표면, 설정 등 네 행에 걸쳐 CLI 도구와 MCP 서버를 비교하는 압축 비교 차트

훅은 별도의 보안 리뷰가 필요하다

훅은 플러그인을 마법처럼 느끼게 만드는 기능이다. 동시에 내가 가장 빡세게 감사하는 기능이기도 하다.

Claude Code 훅은 SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, SessionEnd 같은 이벤트에서 실행될 수 있다. 플러그인 레퍼런스에 따르면 훅 타입에는 명령 훅, HTTP 훅, MCP 도구 훅, 프롬프트 훅, 에이전트 훅이 포함된다 (Claude Code plugin reference). 훅 가이드는 PreToolUse 훅이 종료 코드 2로 액션을 차단할 수 있고, UserPromptSubmit, UserPromptExpansion, SessionStart의 stdout이 Claude의 컨텍스트에 추가될 수 있다고 설명한다 (Claude Code hooks guide).

상당한 권한이다.

좋은 훅은 위험한 행동을 막거나 작고 결정적인 컨텍스트를 추가한다. 나쁜 훅은 모든 프롬프트를 비싼 RAG 파이프라인으로 바꾸고, 프롬프트 텍스트를 HTTP 엔드포인트로 유출하거나, 조용히 환경을 바꾼다.

훅은 네 가지 질문으로 감사하라.

  1. 어떤 이벤트가 실행시키는가?
  2. 어떤 matcher가 범위를 제한하는가?
  3. 어떤 데이터를 받는가?
  4. stdout, stderr, 디스크, 네트워크, 컨텍스트에 무엇을 쓰는가?

커뮤니티는 여기서 유용한 방식으로 갈린다. r/ClaudeCode 훅 스레드에서 어떤 개발자들은 규칙을 강제하고, 나쁜 git 액션을 막고, Claude에게 메모리를 쓰라고 상기시키는 유일하게 믿을 만한 방법이 훅이라고 설명한다. 다른 사람들은 UserPromptSubmit 위에 정교한 메모리와 RAG 흐름을 만들고 있다 (Reddit). 둘 다 타당할 수 있다. 차이는 예산과 폭발 반경이다.

팀 설치라면 컨텍스트 주입 훅보다 정책 훅을 먼저 허용하겠다. rm -rf 패턴을 막는 PreToolUse 훅은 추론하기 쉽다. 매 턴마다 메모리를 가져와 주입하는 UserPromptSubmit 훅은 측정, 상한, 명확한 소유권이 필요하다.

좁게 설치하고, 측정한 뒤, 승격하라

Claude Code는 사용자, 프로젝트, 로컬, 관리형 플러그인 범위를 지원한다. 문서는 사용자 범위를 프로젝트 전반의 개인용, 프로젝트 범위를 .claude/settings.json을 통해 공유되는 범위, 로컬 범위를 프로젝트별이지만 공유되지 않는 범위로 설명한다 (Claude Code docs).

이 범위를 롤아웃 메커니즘으로 써라.

  1. 먼저 로컬에 설치한다.
  2. 실제 작업 하나를 실행한다.
  3. /plugin 상세 정보와 /mcp를 확인한다.
  4. 활성화 전후에 /context/usage를 사용한다.
  5. 제값을 못 하는 것은 모두 비활성화한다.
  6. 리뷰 후에만 프로젝트 범위로 승격한다.

문서는 이제 Claude Code v2.1.143 이상에서 플러그인 상세 패널이 컨텍스트 비용 추정치를 보여줄 수 있고, v2.1.144 이상에서 마지막 업데이트 날짜를 보여줄 수 있으며, v2.1.145 이상에서 “설치될 항목” 인벤토리를 보여줄 수 있다고 말한다 (Claude Code docs). 설치를 누르기 전에 그 인벤토리를 사용하라. 포매터라고 주장하는 플러그인이 MCP 서버, 훅, 백그라운드 모니터를 설치한다면 멈추고 조사하라.

자동 업데이트도 주의하라. Anthropic은 공식 마켓플레이스는 기본적으로 자동 업데이트가 켜져 있고, 서드파티 및 로컬 마켓플레이스는 기본적으로 꺼져 있다고 말한다. 문서는 업데이트 동작을 제어하는 DISABLE_AUTOUPDATERFORCE_AUTOUPDATE_PLUGINS도 설명한다 (Claude Code docs). 자동 업데이트는 보안 수정에는 편리하지만, 런타임 공급망을 바꾼다. 규제가 있는 팀이라면 모든 노트북이 제각각 흘러가게 두지 말고, 검토된 내부 마켓플레이스에서 마켓플레이스 버전을 고정하라.

설치된 플러그인 인벤토리가 많은 MCP 서버와 훅에서 줄어드는 모습을 보여주는 감사 대시보드 전후 목업

설치 전에 내가 쓰는 체크리스트

Claude Code를 쓰는 팀의 어떤 개발자에게든 건넬 짧은 버전은 이렇다.

소스:

  • 마켓플레이스가 anthropics/claude-plugins-official, 내부 저장소, 아니면 서드파티 저장소인가?
  • 플러그인 소스가 SHA에 고정되어 있는가?
  • 홈페이지가 소스 소유자와 일치하는가?
  • 저장소에 최근의 예상 밖 변경, 생성된 blob, 설치 스크립트가 있는가?

구성요소:

  • MCP 서버를 추가하는가?
  • 훅을 추가하는가?
  • bin/에 실행 파일을 추가하는가?
  • 도구를 호출할 수 있는 에이전트를 추가하는가?
  • 로컬 바이너리가 필요한 LSP 서버를 추가하는가?

권한:

  • 어떤 자격 증명을 요구하는가?
  • 민감한 값이 플러그인 userConfig의 sensitive 필드로 저장되는가?
  • MCP 서버가 읽기 전용 접근을 받는가, 쓰기 접근을 받는가?
  • 훅이 HTTP로 외부에 연락하는가?
  • 어떤 스크립트가 광범위한 환경 변수를 상속하는가?

비용:

  • /plugin이 컨텍스트 비용을 얼마로 보고하는가?
  • 활성화 후 /context에서 무엇이 바뀌는가?
  • 플러그인이 모든 세션에서 가치를 더하는가, 아니면 드문 워크플로에서만 필요한가?
  • CLI 명령으로 더 적은 지속 컨텍스트를 쓰고 같은 결과를 낼 수 있는가?

운영:

  • /plugin disable name@marketplace로 깔끔하게 비활성화할 수 있는가?
  • 깔끔하게 제거할 수 있는가?
  • 설정, 자격 증명, 데몬, 캐시, 브라우저 인증을 남기는가?
  • 업데이트 소유자는 누구인가?
  • 플러그인 소스가 사라지면 무엇이 깨지는가?

내 고집 섞인 답은 이렇다. 원하는 것보다 적게 설치하라. 하나의 워크플로만 추가하는 작고 지루한 플러그인을 선호하라. 한 번성 작업에는 CLI를 선호하라. MCP는 서버가 범위 제한되고, 감사 가능하며, 정말로 대화형일 때 사용하라. 훅은 가드레일에 쓰고, 모델이 기억해줬으면 하는 모든 취향을 쏟아붓는 쓰레기통으로 쓰지 마라.

플러그인은 Claude Code의 워크플로용 패키지 형식이 되어가고 있다. 좋은 일이다. 팀이 부족 전승식 프롬프트 요령 대신 반복 가능한 설정을 공유할 수 있다는 뜻이니까. 하지만 그 패키지 형식은 의존성 리뷰, 권한 리뷰, 비용 리뷰를 받아야 할 만큼 강력하다. 어떤 도구를 읽어보지도 않고 curl | bash로 저장소에 들여놓지 않을 거라면, 친절한 마켓플레이스 UI에 보인다는 이유만으로 그 플러그인 버전을 설치하지도 마라.

조용한 푸터: Claude Fable 5를 직접 써보고 싶다면 Claude Fable 5 on OneHop을 통해 사용할 수 있다. 정가보다 약 30% 낮은 가격의 드롭인 엔드포인트다. 신규 계정은 카드 없이도 $10 무료 크레딧으로 시작할 수 있다.

더 읽어보기: Claude Fable 5 시작하기.