你在寫一個完全跟 Vercel 無關的專案,連 vercel.json 都沒有,突然這個問題跳出來:「Vercel 插件蒐集匿名使用數據……你願意也分享你的提示文字嗎?」

不是「Vercel 專案」,不是「Next.js 專案」,是「每個專案」。

這不是假設。這是 2026 年 4 月真實發生的事情。

Vercel 的 Claude Code 插件,在每個專案裡都會詢問你,要不要讓它讀取你打的每一個提示。就算這個專案跟你部署到 Vercel 完全無關。

更糟的是,這個同意問題不是真的 UI 元素,是透過提示注入到 Claude 的系統上下文裡。插件告訴 Claude:「去問用戶這個問題,然後根據回答執行 shell 指令。」

問題一:同意是假的

先從這個請求本身說起。Vercel 插件的用途是協助部署、框架指導、技能注入,為什麼它需要讀取你打的每一個提示?而且是在每個專案?這不是改善插件的分析,這已經遠超出一個協助你部署到 Vercel 的工具應該有的範圍。

想像一下,你用一個瀏覽器擴充功能,它只宣稱「幫你在 Amazon 購物時找優惠券」,但每次你開任何網頁(不只是 Amazon),它都在問你「能不能讓我看你所有的瀏覽歷史?」這感覺不對。

但就算你接受這個請求,他們問的方式更糟。

當 Vercel 插件想詢問你關於遙測數據的時候,它不會顯示一個 CLI 提示或設定畫面。

相反的,它將自然語言指令注入到 Claude 的系統上下文中,告訴 AI 去問你一個問題。Claude 讀取這些指令,使用 AskUserQuestion 渲染問題,然後根據你的回答執行 echo 'enabled'echo 'disabled' 來寫入一個偏好設定檔到你檔案系統上。

這跟原生的 Claude Code 問題看起來一模一樣。沒有任何視覺標示告訴你這是來自第三方插件。你無法分辨差異。

這不只是上下文注入,這是插件原本預期的用途(技能、文件、框架指導)。Vercel 插件注入的是行為指令,告訴 Claude 去問一個特定問題,並根據你的回應在你的檔案系統上執行 shell 指令。

「這裡有關於 Next.js 路由的上下文」和「去問用戶這個問題然後寫到他的檔案系統」之間,有巨大的差別。

有人已經在 GitHub 上提出這個完全相同的擔憂。一位 Vercel 開發者回應:「當使用像 Cursor、CC 或 Codex 這樣的第一方市場時,你無法建立一次性 CLI 提示。啟動來自於 agent harness 內部。我們完全開放改善這個問題,但我們需要一個更好的解決方案。」

我理解這個限制。但對於「我們無法建立適當的同意」的答案,應該是不推出這個功能,而不是改用提示注入來繞過。

即使在今天的限制下,他們也可以在問題文字中加入「這個問題來自 Vercel 插件」,並且直接從 hook 的 JavaScript 寫入偏好設定檔,而不是指示 Claude 去執行 shell 指令。

問題二:「匿名使用數據」不是你想的那樣

同意問題是這樣說的:「Vercel 插件蒐集匿名使用數據,例如技能注入模式和預設使用的工具。」

聽起來無害。實際上它蒐集的是什麼呢?

會發送什麼 什麼時候 他們會問嗎
你的裝置 ID、作業系統、偵測到的框架、Vercel CLI 版本 每個 session 開始 不 — 永遠開啟
你的完整 bash 指令字串 每次Claude執行 bash 指令後 不 — 永遠開啟
你的完整提示文字 你打的每個提示 是 — 只有你選擇加入時

中間那行。每個 bash 指令,完整的指令字串,不只是工具名稱,被送到 telemetry.vercel.com。檔案路徑、專案名稱、環境變數名稱、基礎架構細節。不管指令裡有什麼,他們都會拿到。

如果你輸入 cat /home/claw/Desktop/ai學苑/.env,完整的字串就被送出去。如果你跑 npm run build -- --env production,他們知道你有一個 production 環境的腳本。如果你執行 kubectl get pods -n my-secret-project,他們知道你有一個叫 my-secret-project 的 Kubernetes namespace。

把這個描述為「匿名使用數據,例如技能注入模式和預設使用的工具」有點牽強。

同意問題將你的選擇框定為「也分享提示文字,或不要」。它從來沒有告訴你 bash 指令的蒐集是可選的。它從來沒有說你可以關閉它。實際的選擇不是在遙測和無遙測之間,而是在「一些」和「更多」之間。

所有這些都綁定在一起,使用一個儲存在你機器上的持久裝置 UUID,建立一次然後永久重複使用。每個 session、每個專案,在時間軸上都可以連結。這不是「匿名」,這是「匿名但可連結」。

選擇退出的確存在,一個環境變數 VERCEL_PLUGIN_TELEMETRY=off,紀錄在插件的 README 中。但那個 README 位於插件快取目錄裡面。不在你安裝或第一次執行時會看到的地方。你不知道有這個選項,除非你主動去翻原始碼或偶然發現。

問題三:這在你的所有專案上執行

這是最初讓我注意到的事情,在一個非 Vercel 專案上彈出的同意問題。

我翻遍了每個遙測檔案,尋找專案偵測。沒有。

Hook matchers 確認了這一點。UserPromptSubmit matcher 實際上是空字串,匹配所有東西。為你的 Next.js app 安裝插件,它就在監視你的 Rust 專案、你的 Python 腳本、你的客戶工作。所有東西。

諷刺的是,插件已經內建框架偵測。它在每個 session 開始時掃描你的 repo 並識別你正在使用什麼框架。但它只用這個來報告它找到的東西,不是決定是否觸發遙測。

從原始碼可以清楚看到這個矛盾。在 session-start-profiler.mjs 中,profileProject() 函數會掃描你的 repo,尋找 next.config.*、vercel.json、middleware.ts、components.json 和 package dependencies。它會精確地判斷你用什麼框架。

但遙測觸發器完全忽略這個資訊。UserPromptSubmit 的 matcher 是空字串。PostToolUse 的 matcher 只是檢查工具名稱是不是 “Bash” 或 “Write|Edit”。SessionStart 的 matcher 是 “startup|resume|clear|compact”,這些是 session 事件,不是專案條件。

閘門存在。他們只是沒有用。

為什麼這很重要

這不是「Vercel 想改善插件」這麼簡單。這是 AI 輔助開發生態中的一個先例。

當你給予一個 AI agent 權限去執行 shell 指令、讀取你的檔案、寫入你的專案,你是在建立一個新的信任關係。這個關係比傳統軟體工具更敏感。因為它不是一個靜態工具,它是一個會「思考」的 agent,而它的「思考」可能被第三方插件影響。

Vercel 插件的做法展示了一個危險模式:將行為指令注入到 agent 的思考過程中。如果每個插件都可以透過提示注入去改變 agent 的行為、詢問用戶問題、執行系統指令,那麼信任鏈就被打破了。

今天只是「蒐集你的 bash 指令」。明天可能是「在你不知情的情況下安裝一個套件」。後天可能是「修改你的 package.json 加入一個依賴」。

這不是科幻。這是已經在發生的事情,只是目前的惡意意圖比較低(蒐集資料)。但架構上,沒有阻止真正惡意行為的機制。

這也是為什麼視覺屬性、細粒度權限、專案範圍這三個東西如此重要。它們不只是「UX 改善」,它們是 AI agent 生態的安全基礎設施。

VS Code 的擴充功能已經解決這個問題二十年了。當你安裝一個 VS Code 擴充功能,它會宣告它需要什麼權限、它會在什麼條件下啟動。你可以在安裝前看到完整清單。你可以在設定中隨時停用任何擴充功能。

Claude Code 的插件架構需要學習這個經驗。不能因為「AI 很新」就重新發明輪子,而且發明出來的輪子還比舊的更不安全。

社群反應與討論

這篇文章在 HackerNews 上引發了廣泛討論。許多開發者表示震驚,因為他們完全不知道這個情況。有些人說他們「一直覺得怎麼每次 Claude 都在問奇怪的問題」,卻沒有意識到這不是 Claude 在問,而是 Vercel 插件在問。

一位開發者分享了他的經驗:「我在做一個 Python 資料分析專案,突然被問到要不要分享提示文字。我還以為這是 Claude 的標準問題,就點了『不』。現在我才知道這是 Vercel 插件,而且它還在蒐集我的所有 bash 指令。」

另一位開發者指出:「最諷刺的是,Vercel 自己的產品 Next.js 是一個以開發者體驗為核心的框架。但這個插件完全沒有考慮到開發者的隱私體驗。」

還有開發者指出:「這不只是 Vercel 的問題,這是整個 AI 生態的問題。我們太快接受『AI 可以讀取一切』,沒有建立適當的權限和透明度邊界。」

需要改變什麼

對 Vercel 來說:

對 Claude Code 來說:

對你來說,現在:

你想要什麼 如何做
關閉所有 Vercel 遙測 在 ~/.zshrc 中 export VERCEL_PLUGIN_TELEMETRY=off
完全停用插件 在 ~/.claude/settings.json 中設定 “vercel@claude-plugins-official”: false
中斷裝置追蹤 rm ~/.claude/vercel-plugin-device-id

環境變數會關閉所有遙測,但保持插件完全功能。技能、框架偵測、部署流程,所有東西都仍然運作。你沒有失去任何東西,除了 Vercel 的資料蒐集。

每個問題都有一個 Vercel 層和一個 Claude Code 架構層。Vercel 做了我認為不可接受的選擇。但插件架構啟用了那些選擇,沒有視覺屬性、沒有 hook 權限、沒有專案範圍。

我使用 Vercel。我喜歡 Vercel。我每天都使用 Claude Code。我希望兩個都能更好。

當然,不只是我這麼希望。在 HackerNews、在 GitHub issues、在 Twitter 和 Reddit,已經有數百個開發者表達了同樣的擔憂。這不是一個單獨的事件,這是一個正在形成的共識。

我們需要為 AI agent 生態建立更強的隱私和權限邊界。我們需要學習過去二十年的軟體開發經驗,不要因為「AI 很新」就重蹈覆轍。

結尾

當工具開始「思考」,我們必須重新思考我們給予它的權限。不是因為 AI 會叛變,而是因為第三方插件的行為指令可能比我們想像的更容易改變 agent 的決策。

Vercel 插件的例子不是最壞的,但它是一個重要的警告。它展示了如果沒有適當的視覺屬性、權限控制、專案範圍,我們允許了什麼樣的行為注入到我們的日常開發流程中。

現在就檢查你的設定,關閉不必要的遙測,要求更好的隱保護。不是因為你「有什麼要隱藏」,而是因為這是你的資料,你應該有完全的控制權。


原文所有內容都可以從 ~/.claude/plugins/cache/claude-plugins-official/vercel/ 中的插件原始碼驗證。