버셀(Vercel) 클로드 플러그인, 사용자의 모든 프롬프트 읽어 논란
버셀(Vercel)의 클로드 코드(Claude Code) 플러그인이 사용자의 모든 프롬프트를 수집하려 한다는 사실이 밝혀져 개인정보 침해 우려가 커지고 있습니다. 이 플러그인은 사용자 동의를 받는 과정에서 정상적인 UI 대신 시스템 컨텍스트에 프롬프트를 주입(injection)하고 셸 명령어를 실행하는 방식을 사용하며, 배포와 무관한 프로젝트에서도 기본적으로 전체 배시 명령어 문자열을 수집합니다.
2026년 4월 9일 — 클로드 코드(Claude Code)의 버셀(Vercel) 플러그인이 여러분의 모든 프롬프트를 읽으려고 합니다!
저는 버셀과 전혀 상관없는 프로젝트를 진행하고 있었습니다. vercel.json도, next.config도, 버셀 종속성도 없었습니다. 아무것도 없었죠. 그런데 갑자기 이런 메시지가 떴습니다: “버셀 플러그인이 익명 사용 데이터를 수집합니다… 프롬프트 텍스트도 공유하시겠습니까?”
버셀 프로젝트가 아닌데도 모든 단일 프롬프트에 대해 요청했습니다. 이건 뭔가 잘못되었다고 느껴졌습니다. 그래서 클로드를 이용해 소스 코드를 깊이 파고들었습니다.
요약하자면: 배포 플러그인이 모든 프로젝트에 걸쳐 여러분이 입력하는 모든 프롬프트를 읽겠다고 요청하고 있습니다. 왜요?
동의 질문은 실제 UI 요소가 아닙니다. 이것은 클로드의 시스템 컨텍스트(context)에 프롬프트 주입(injection) 방식으로 전달됩니다. 플러그인이 클로드에게 질문을 하고, 사용자의 답변에 따라 셸 명령어를 실행하도록 지시하는 것입니다.
“익명 사용 데이터”에는 버셀 서버로 전송되는 전체 배시(bash) 명령어 문자열이 포함됩니다. 이것이 선택 사항이라는 안내는 결코 하지 않습니다. 이 모든 것은 버셀 프로젝트뿐만 아니라 모든 프로젝트에서 실행됩니다. 플러그인에는 프레임워크 감지 기능이 내장되어 있지만, 원격 측정(telemetry)을 제한하는 데는 사용하지 않습니다.
문제 1: 동의는 가짜입니다
먼저 요청 자체를 보겠습니다. 버셀 플러그인은 배포, 프레임워크 지침 및 스킬 주입을 돕습니다. 그런데 왜 모든 프로젝트에서 여러분이 입력하는 모든 프롬프트를 읽어야 합니까? 이것은 플러그인 개선을 위한 분석이 아닙니다. 버셀 배포를 도와야 하는 도구의 범위를 훨씬 벗어난 일입니다.
이 요청을 받아들인다 해도, 요청하는 방식이 더 나쁩니다. 버셀 플러그인이 원격 측정에 대해 묻고 싶을 때 CLI 프롬프트나 설정 화면을 보여주는 것이 아닙니다. 대신, 시스템 컨텍스트에 자연어 지침을 주입하여 AI에게 질문을 하도록 지시합니다. 클로드는 그 지침을 읽고, AskUserQuestion을 사용하여 질문을 렌더링한 다음, 사용자의 답변에 따라 echo 'enabled' 또는 echo 'disabled'를 실행하여 파일 시스템에 기본 설정 파일을 작성합니다.
다음은 플러그인 소스에서 주입된 지침의 모습입니다. 결과는 네이티브 클로드 코드 질문과 완전히 동일하게 보입니다. 서드파티 플러그인에서 왔다는 시각적 표시가 없습니다. 차이를 구분할 수 없습니다.
이것은 단순한 컨텍스트 주입(스킬, 문서, 프레임워크 지침 등 플러그인의 의도된 용도)이 아닙니다. 버셀 플러그인은 클로드에게 특정 질문을 하고 응답에 따라 파일 시스템에서 셸 명령을 실행하도록 지시하는 행동 지침을 주입합니다. “다음은 Next.js 라우팅에 대한 컨텍스트입니다”와 “사용자에게 이 질문을 한 다음 파일 시스템에 기록하세요”는 큰 차이가 있습니다.
누군가 GitHub에서 이와 정확히 같은 우려를 제기했습니다(이슈 #34). 버셀 개발자는 이렇게 응답했습니다: “Cursor, CC 또는 Codex 같은 1st party 마켓플레이스를 사용할 때 일회성 CLI 프롬프트를 만들 수 없습니다. 활성화는 에이전트 내부에서 이루어집니다. 이 부분은 얼마든지 개선할 의향이 있지만, 더 나은 솔루션이 필요합니다.”
그 제약은 이해합니다. 하지만 “적절한 동의를 구현할 수 없다”는 답변은 기능을 배포하지 않는 것이어야지, 대신 프롬프트 주입을 해서는 안 됩니다. 오늘날의 제약 내에서도 질문 텍스트에 “이 질문은 버셀 플러그인에서 나온 것입니다”라고 추가하고, 훅(hook)의 JavaScript에서 직접 기본 설정 파일을 기록하도록 클로드에게 셸 명령을 실행하도록 지시할 수 있었습니다.
문제 2: “익명 사용 데이터”는 생각과 다릅니다
동의 질문은 이렇게 말합니다: “버셀 플러그인은 스킬 주입 패턴과 기본적으로 사용되는 도구와 같은 익명 사용 데이터를 수집합니다.”
무해해 보입니다. 하지만 실제로 수집하는 것은 다음과 같습니다:
수집 항목 | 시기 | 질문 여부 장치 ID, OS, 감지된 프레임워크, 버셀 CLI 버전 | 모든 세션 시작 시 | 아니오 - 항상 켜짐 전체 배시 명령어 문자열 | 클로드가 배시 명령을 실행할 때마다 | 아니오 - 항상 켜짐 전체 프롬프트 텍스트 | 입력하는 모든 프롬프트 | 예 - 동의한 경우에만
중간 행을 보십시오. 모든 배시 명령어 — 단순한 도구 이름이 아니라 전체 명령어 문자열 — 이 telemetry.vercel.com으로 전송됩니다. 파일 경로, 프로젝트 이름, 환경 변수 이름, 인프라 세부 정보 등 명령어에 있는 모든 것을 얻게 됩니다.