Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
探索AI智慧的思維邊界
claude-me.com
最新
Claude Code 收緊 MCP 允許規則:mcp__a 不再放行名為 a__b 的伺服器,名字含雙底線的要改寫法  ·  Claude Code 新增閒置壓縮:對話放著超過 54 分鐘,會在快取過期前先自動 compact  ·  Anthropic 自建 Scion 取代 Git:每日合併從 2,500 暴增到 3 萬,瓶頸從寫程式碼轉到版本控制  ·  Claude Haiku 5.5 上線:輸入價 $0.10/百萬 token,但 100K 之後價格跳 5 倍,遷移前先算這條線  ·  Claude Code hooks 新增 onFailure: "block":腳本打錯路徑,政策閘門不再默默放行  ·  Claude Code 的 Agent 工具新增 effort 參數:同一種 subagent,不必再為每個思考深度各養一個
practice

Claude Code 收緊 MCP 允許規則:mcp__a 不再放行名為 a__b 的伺服器,名字含雙底線的要改寫法

30 秒速讀
權限規則寫得比意圖寬,通常要出事才會發現;MCP 允許規則的這次收緊,至少讓這種歧義看得見。

完整解析 +
01 · 為什麼發生?

我的 MCP 伺服器名稱沒有雙底線,需要改規則嗎?

多半不需要。這次調整主要影響名稱含 __ 或以 _ 結尾的伺服器,一般名稱的 mcp__伺服器 與 mcp__伺服器__* 寫法依文件仍然有效。

仍建議升級後跑一次 claude doctor,確認沒有規則因為含括號或沒有錨點的萬用字元而被略過。

02 · 運作原理是什麼?

升級後我的自動化突然失敗,可能跟這個有關嗎?

有可能,特別是你用 dontAsk 模式,而且某台伺服器的名稱含 __。舊的寬鬆匹配消失後,工具不再被放行,而 dontAsk 不會詢問,呼叫會被直接拒絕。

先用 claude doctor 看有沒有被略過的規則,再把相關 allow 規則改成 mcp__完整名稱__* 的形式。

03 · 如何應用

deny 規則也受影響嗎?

這次 changelog 寫的是 allow 規則,我沒有查到對 deny 規則的相同說明,所以不能斷言。權限文件另外指出,deny 與 ask 規則可以使用 mcp__* 這種開頭的萬用字元。

涉及封鎖的規則,建議升級後各測一次,確認被擋的伺服器確實被擋。

04 · 我該怎麼做?

怎麼找出自己設定裡含雙底線的 MCP 伺服器?

最直接的方法是在 /mcp 列出已設定的伺服器名稱,再逐一檢查是否含有 __ 或以 _ 結尾。外掛提供的伺服器名稱則要看外掛範圍的完整形式。

找到之後,把對應的 allow 規則統一改成 mcp__完整名稱__*,並放進共用設定,讓全團隊用同一套寫法。

完整內容 +

Claude Code v2.1.299(2026 年 10 月 14 日)的 Changed 項目有一條安全相關的調整:MCP 的 allow 規則現在只會對上它所指名的那一台伺服器,mcp__a 不再放行名為 a__b 或 a_ 的伺服器;同版本也規定 agent 的 tools: 清單只會取到被點名的 MCP 伺服器的工具。伺服器名稱含有 __ 的人,需要把規則改成 mcp__<完整名稱>__*。

問題出在命名規則的歧義

MCP 工具在 Claude Code 裡的完整名稱是 mcp__<伺服器>__<工具>,而 __ 同時是分隔符。官方權限文件現在明確寫出:伺服器名稱若含 __ 或以 _ 結尾,要寫成萬用字元形式 mcp__<伺服器>__* 並帶完整名稱。例如伺服器叫 reports__v2,就寫 mcp__reports__v2__*;裸的 mcp__reports__v2 與較短的 mcp__reports 都不會匹配它的工具,因為 Claude Code 會把這兩種寫法讀成名為 reports 那台伺服器的規則。換句話說,舊版允許規則的範圍可能比寫的人想的更寬(這是我從 changelog 的「不再放行」措辭推得的,官方沒有逐條說明舊行為)。

名稱還會被正規化

文件還提到,伺服器名稱中的 . 或空白會變成 _,所以設定為 my.server 的伺服器要寫 mcp__my_server__*;外掛提供的伺服器則用外掛範圍的形式,例如 mcp__plugin_my-plugin_database-tools__*。允許規則的萬用字元也有限制:只能出現在字面的 mcp__<伺服器>__ 前綴之後,伺服器那一段不能含萬用字元;* 或 mcp__* 這類沒有錨點的允許規則會被略過並顯示警告,不會放行任何東西。含括號的 mcp__ 規則在載入時也會被跳過,需要依參數限制時,要改用 --disallowedTools 的 deny 規則。

升級後可能會看到什麼

如果你的某台伺服器名稱含 __,而 allow 規則是靠舊的寬鬆匹配才生效,升級後它的工具會重新開始詢問權限;在 dontAsk 模式下,因為不詢問,這些呼叫會直接被拒絕,自動化流程可能因此突然失敗。這是 fail-closed 的方向,比悄悄放行安全,但會造成中斷。建議升級前先列出所有 MCP 伺服器名稱,找出含 __ 或結尾為 _ 的,並用 claude doctor 檢查被略過的規則。

這跟你的錢有什麼關係

如果你的團隊用 managed settings 或共用的 settings.json 為 MCP 伺服器預先核准,這次調整是一個很便宜的稽核機會:花十分鐘列出每一條 mcp__ 允許規則,確認它指的就是你以為的那一台伺服器,並把含雙底線的改成完整萬用字元形式。權限規則寫得比實際意圖寬,通常到出事才會發現;這次升級至少讓這類歧義變得可見。

資料來源:Claude Code changelog (v2.1.299)、Claude Code: Configure permissions
圖解
MCP Allow Rule: Which Server Does It Name?同一個 allow 規則字串,在含雙底線的伺服器名稱下會被解讀為不同的伺服器MCP Allow Rule: Which Server Does It Name?Allow rule: mcp__reportsAllow rule: mcp__reports__v2__*Read as: server named reportsTools of server reports__v2: not matchedv2.1.299: no longer allowedRead as: server named reports__v2Tools of server reports__v2: matchedWhole name plus wildcardDots and spaces in names become underscores; plugin servers use plugin-scoped namesUnanchored allow globs (* or mcp__*) are skipped with a warningClaude Me · claude-me.com
歡迎截圖分享,轉載請註明來源
提問
請至少輸入 10 個字
相關文章
Claude Code 新增閒置壓縮:對話放著超過 54 分鐘,會在快取過期前先自動 compact
practice · 10/19
Claude Code hooks 新增 onFailure: "block":腳本打錯路徑,政策閘門不再默默放行
practice · 10/10
Claude Code 的 Agent 工具新增 effort 參數:同一種 subagent,不必再為每個思考深度各養一個
practice · 10/10
Claude Code 新增 --max-findings 參數:code review 不再被一次丟出一百條建議淹沒
practice · 10/06
更多相關主題