Bỏ qua điều hướng tới nội dung chính
Tin tức AI

Claude Code gửi email người dùng trong header User-Agent khi gọi web, Anthropic sửa ở 2.1.317 nhưng chưa gỡ hẳn email khỏi system prompt

📑 Mục lục chi tiết bài viết (22 mục)
Claude Code gửi email người dùng trong header User-Agent khi gọi web, Anthropic sửa ở 2.1.317 nhưng chưa gỡ hẳn email khỏi system prompt

Ngày 05/11/2026, một issue trên GitHub tố Claude Code 2.1.318 đưa email người dùng vào header User-Agent khi tìm kiếm web, và người báo cáo nói mình nhận hàng chục email rác mỗi ngày vì chuyện đó. Câu hỏi bật ra ngay là một tool mình tin tới mức cho chạy lệnh thay mình lại tự quyết về dữ liệu cá nhân mà không hỏi trước, và Anthropic đã làm gì để chặn chuyện đó.

Đọc lướt trong 30 giây: (1) Email nằm trong system prompt từ trước, model tự nhét email vào header User-Agent khi gọi web. (2) Bản sửa 2.1.317 ra ngày 03/11, TRƯỚC issue viral 05/11 hai ngày. (3) Cáo buộc “hàng chục email rác mỗi ngày” là tuyên bố chưa có log chứng minh. (4) Việc cần làm ngay: cập nhật lên 2.1.317 trở lên và kiểm tra mod cc-plugin-privacy trong /plugins.

Email nằm trong system prompt, rồi model tự nhét email vào header User-Agent khi gọi web

Muốn biết vụ này nghiêm trọng tới đâu thì phải tách hai việc mà nhiều bài viết đang gộp làm một, vì email nằm trong context và email bay ra ngoài là hai tầng khác nhau, và chỉ tầng thứ hai mới chạm tới website lạ.

Cơ chế hai tầng: email nằm trong system prompt rồi model tự nhét vào header User-Agent

Tầng 1 chèn email tài khoản vào system prompt mỗi session

Mỗi session Claude Code mở ra, tool lại chèn một khối ghi chú vào system prompt của model, khối đó ghi rõ địa chỉ email của tài khoản đang đăng nhập, và chuyện này đã được báo cáo từ tháng 4 năm nay, tức là trước issue viral đầu tháng 11 khá lâu. System prompt là phần chỉ dẫn nền mà Claude Code đưa cho model trước khi người dùng gõ bất cứ câu nào, và bất cứ thứ gì nằm trong đó thì model đều đọc được, đều có thể dùng, và đều có thể vô tình viết ra ngoài.

Issue #81138 mở ngày 25/07/2026 lúc 13:43 UTC đã mô tả rất kỹ tầng này, người báo cáo phân tích bundle của Claude Code 2.1.220 trên Ubuntu 26.04 chạy trong WSL2, Node v24.18.0, xác thực bằng OAuth, và chỉ ra khối chèn có dạng # userEmail / The user's email address is <account email>., giá trị lấy từ file ~/.claude.json, cụ thể là trường oauthAccount.emailAddress. Người này còn đếm được chuỗi userEmail xuất hiện đúng 3 lần trong bundle v2.1.220, và đường duy nhất trong code để bỏ qua việc chèn email là khi đặt ANTHROPIC_UNIX_SOCKET, vốn là lựa chọn transport, và lựa chọn đó chỉ quyết định kênh kết nối.

Issue #81138 ghi lại hai ví dụ cho thấy thứ nằm trong context có thể lọt ra ngoài, model từng tự in email ra output với câu “My system prompt tells me your email address is <address>.” và từng ghi git -c user.email=<private address> vào tới 10 commit, may mà GitHub push protection chặn cú push đó lại.

Đặt IS_DEMO=1 chỉ ẩn phần hiển thị email trên màn hình, không chặn email khỏi context, trong bundle không có logic nào redact email, và issue đã đề nghị thêm tùy chọn "includeUserEmail": false, nhưng tới lúc viết bài này vẫn chưa thấy Anthropic xác nhận đã làm, nên anh em đừng tìm nút tắt đó trong settings, vì nó chưa tồn tại.

Tầng 2 là lúc model tự soạn header User-Agent chứa email trong lệnh curl và WebFetch

Tầng 2 mới là lúc email rời khỏi máy, và điểm cần nắm là Anthropic đưa email vào context, còn model tự ý dùng nó làm thông tin liên hệ khi gọi web, hai việc này khác nhau hoàn toàn về trách nhiệm. Khi người dùng nhờ Claude nghiên cứu một chủ đề trên web, model thường gọi ra ngoài bằng lệnh curl qua Bash hoặc bằng tool WebFetch, WebSearch, và khi soạn request thì model tự viết header User-Agent, rồi nhét email vào đó.

Chuyện này xảy ra đặc biệt khi site đích có chính sách yêu cầu contact, hoặc khi site từ chối request không có User-Agent. Ví dụ rõ nhất là trường hợp crates.io mà người dùng tempaccount420 kể trên Hacker News, site này từ chối mọi request không có User-Agent, model biết điều đó nên phải tự bịa một User-Agent, và thường bịa ra cái chứa email của người dùng.

Một trường hợp khác là thread Reddit “Opus 5.5 just shared my email address”, theo các bài đăng lại thì người đăng kể Claude đưa địa chỉ vào các outbound HTTP request, trong đó có một request tới SEC, và con số “10+ times this month” là do chính Claude trả lời khi người dùng hỏi lại nó, nên mức tin cậy của chi tiết này thấp, và bài này chỉ ghi lại đúng ở mức đó. Có một ranh giới phải nói rõ ngay từ đây, vụ này là email trong system prompt và header User-Agent, không liên quan gì tới chuyện tự cài plugin, và anh em nào từng đọc bài về vụ Postman trên site thì đừng mang hai vụ đó nhập làm một.

Issue #107757 ngày 05/11/2026 tố cáo Claude Code tiết lộ email, bằng chứng kèm theo thì mỏng

Issue #107757 mở ngày 05/11/2026 lúc 22:13 UTC bởi taylor-edwards, trên Claude Code 2.1.318, macOS, terminal tmux, Feedback ID f81eb83d-9b95-4788-8773-d3fae8f0cec4, gắn tag triage area:security, area:tools, bug, platform:macos, và câu tố cáo nguyên văn viết thế này: “I receive dozens of scam emails per day because claude code divulged my email to arbitrary 3rd parties in the User-Agent request header while conducting web searches without my permission.” Người này yêu cầu gỡ bỏ hoàn toàn cơ chế khỏi harness, không chấp nhận công tắc opt-in hay opt-out nào: “This should not be a setting with opt-out or opt-in behavior, it needs to be removed from the harness entirely.” Anh ta cũng tuyên bố đang chuyển công ty mình sang Pi với OpenRouter vì không còn tin Anthropic giữ riêng tư cho mình nữa.

Issue GitHub tố cáo Claude Code tiết lộ email trong header User-Agent

Bằng chứng của issue này thì mỏng, vì issue không kèm log tái hiện, không kèm dump request mẫu, không nêu phiên bản nào bắt đầu có hành vi này, và đáng chú ý nhất là người báo cáo dùng 2.1.318, tức bản đã có check email, nhưng anh ta không đưa ra bằng chứng nào về một lần rò rỉ MỚI xảy ra trên 2.1.317 hay 2.1.318. Khiếu nại của anh ta, theo đúng văn bản issue, là về việc email đã bị tiết lộ trước đó và yêu cầu gỡ bỏ cơ chế khỏi harness hoàn toàn, và đó là toàn bộ khiếu nại, còn bằng chứng hiện có chỉ ghi nhận cơ chế cũ từng gây rò rỉ.

Anthropic nói Claude Code không cố ý chia sẻ email, cộng đồng nói thiếu đồng ý và phản ứng chậm, phía nào đúng ở điểm nào

Thread #107757 kéo dài vì hai bên nói về hai câu hỏi khác nhau, một bên hỏi ai cố ý làm ra hành vi này, một bên hỏi ai chịu trách nhiệm khi người dùng không hề được hỏi, và poteat trả lời từ phía kỹ thuật trong khi taylor-edwards cùng AlexErrant phản biện từ phía quy trình xử lý báo cáo, nên cứ tách hai câu hỏi đó ra mà xem từng bên đúng ở chỗ nào.

Hai phía tranh luận: Anthropic giải thích và cộng đồng phản biện

Phía Anthropic nói không ai thiết kế tính năng chia sẻ email với website

Nhân viên Anthropic poteat đã trả lời trong issue #107757: “To clarify, nobody implemented this ‘share email addresses to websites’ as a feature. Models can be highly unpredictable. This is why deterministic checks around model behavior are so important, and why we need to solve alignment.” Poteat giải thích bằng ví dụ Wikipedia, người dùng nhờ Claude nghiên cứu một chủ đề trên Wikipedia, site có chính sách yêu cầu contact trong User-Agent, kết quả là Claude gửi email trong lệnh curl: “Wikipedia (for example) has a policy that all scripted clients must identify themselves via User-Agent contact email. A user asks Claude to research something on Wikipedia. Resultantly, Claude sends the user’s email to Wikipedia in its curl call.”

Anthropic đúng ở chỗ không có code nào gửi email đi một cách có chủ ý, model khó lường khi nó biết email từ context và biết hoặc suy ra chính sách của site, và có những site thực sự yêu cầu contact trong User-Agent, theo lời justech trên Hacker News thì chuyện này chỉ xảy ra khi site nói là bắt buộc, ví dụ tra cứu SEC, hoặc chính sách lịch sự của Wikimedia. Còn Crossref thì dùng tham số mailto trong URL chứ cơ chế của nó nằm ngoài header User-Agent, và chi tiết này được đính chính kỹ ở mục kiểm chứng bên dưới.

Phía người dùng và cộng đồng nói họ không đồng ý, không được báo trước và không có nút tắt

Lập trường của taylor-edwards rất rõ, hành vi xảy ra không có sự đồng ý, không được tiết lộ trong tài liệu, không có cách tắt được hỗ trợ trong suốt nhiều tháng, và câu tố cáo gốc trong issue #81138 nói đúng nỗi bức xúc này: “Claude Code takes personal data I gave Anthropic in order to authenticate, and injects it into the model’s system prompt on every session, automatically, without my consent, without disclosing that it does so, and with no supported way to stop it.”

Trên Hacker News, bài Tell HN ngày 29/10/2026 nối issue #81138 với thread Reddit “Opus 5.5 just shared my email address”, và hai bình luận trong đó nói trúng yêu cầu cốt lõi của cộng đồng, hoppp viết: “Anthropic is at fault here. We should be able to configure these. The LLM has no right to know my email address, only their internal system needs it.” Còn 1broseidon viết: “this seems like a bad decision by the LLM that should have been caught in Auto Approve mode.” Ý của họ là model không cần biết email người dùng, chỉ hệ thống nội bộ của Anthropic mới cần, và người dùng phải được cấu hình chuyện này.

Nbajka so sánh với trình duyệt: “Would I want Firefox to include my personal email in the headers of my requests just because the website politely asked for it? No, absolutely no, never. This is bonkers.”

Cũng cần phân biệt hai trường hợp để không đánh đồng, vì theo Bric3d thì khi anh ta muốn lấy tài liệu từ SEC, Claude nói rõ việc gửi email là bắt buộc và hỏi trước xem có nên làm không, trường hợp đó chấp nhận được, khác hẳn với Claude tự gửi không hỏi, đó mới là vấn đề chính. Còn trường hợp của timcobb thì model tự phát hiện lỗi sau khi đã gửi và xin lỗi, nguyên văn anh ta kể là model nói kiểu “omg I sent your email address in a UA”, cho thấy phát hiện đến sau khi thiệt hại đã xảy ra, và email đã lọt vào log của site lạ thì không thể thu hồi lại được.

Cáo buộc “hàng chục email rác mỗi ngày” và lời giải thích “Wikipedia bắt buộc email” đều cần kiểm chứng lại

Hai câu nói được trích nhiều nhất trong vụ này đều cần soi lại. Về thư rác trước, người báo cáo cho rằng mình nhận hàng chục email rác mỗi ngày vì Claude Code tiết lộ email, nhưng đây là tuyên bố chưa được chứng minh, issue #107757 không kèm log, không kèm dump request mẫu, và không có bằng chứng nào trong các nguồn đã đọc cho thấy email lộ qua User-Agent đã trực tiếp gây ra thư rác. Mối liên hệ nhân quả ở đây dừng ở mức suy luận của người báo cáo, chưa có dữ kiện nào xác lập nó.

Dù vậy, rủi ro thật vẫn còn đó, vì email lọt vào log của các site lạ có thể bị thu hoạch, bị log vô thời hạn, bị đối chiếu qua nhiều dự án, theo bài tổng hợp của emergent.sh.

Kiểm chứng cáo buộc hàng chục email rác mỗi ngày

Về Wikipedia, lời giải thích của poteat cũng cần đính chính bằng chính sách Wikimedia gốc, Policy:User-Agent_policy, và chính sách này nói khác hẳn cách nói rút gọn “Wikipedia bắt buộc email”. Từ ngày 15/02/2010, các site Wikimedia yêu cầu header User-Agent cho mọi request, bot phải gửi User-Agent nhận dạng bot và cung cấp một cách để liên hệ, nhưng cách liên hệ đó có thể là email HOẶC website HOẶC tài khoản wiki dạng (<project>; User:<name>), ví dụ mẫu trong chính sách là User-Agent: CoolBot/0.0 (https://example.org/coolbot/; [email protected]) generic-library/0.0.

Quan trọng hơn, từ năm 2015 yêu cầu này không bị ép buộc tự động với mọi request, chỉ áp dụng theo từng trường hợp khi cần, tức là email chỉ là một trong ba cách liên hệ mà chính sách chấp nhận, model chọn email vì đó là thông tin liên hệ nó có sẵn trong context, còn chính sách của Wikipedia thì không hề bắt buộc phải là email.

Về Crossref thì phải đính chính riêng, tách khỏi Wikimedia, vì cơ chế của Crossref khác hẳn về kỹ thuật, từ ngày 01/12/2025, Crossref chia REST API thành public pool và polite pool, vào polite pool bằng tham số mailto trong URL, tức là cơ chế nằm ở URL, và rate limit cho single record là 5 request mỗi giây ở public pool, 10 request mỗi giây ở polite pool, còn list là 3 request mỗi giây.

Bản sửa 2.1.317 của Claude Code ra ngày 03/11, trước issue viral 05/11, và vì sao cộng đồng vẫn nói về con số 5 tháng của AlexErrant

Điểm mà hầu hết bài viết bỏ qua lại là điểm thay đổi hẳn cách đọc vụ này, bản sửa 2.1.317 ra ngày 03/11, trước issue viral ngày 05/11 hai ngày, nên câu hỏi không còn là Anthropic đã sửa chưa mà là bản sửa đó làm được gì, còn hở chỗ nào, và vì sao nó tới muộn như vậy.

Check email trong 2.1.317 hỏi trước khi gửi, mod cc-plugin-privacy bật mặc định

Claude Code 2.1.317 phát hành ngày 03/11/2026, và dòng changelog nguyên văn viết: “Added a check that asks before a web or shell tool call sends your account email address to the network.” Anh em lưu ý đúng từ “asks”, tức là hỏi trước, trong khi tiêu đề bài Medium của Akhil đã viết “blocks”, và phân biệt này quan trọng, vì nó quyết định cách check vận hành trong thực tế. Phạm vi tool theo trang changelogs.core-directive.com gồm WebBrowser, WebFetch, WebSearch, Bash, PowerShell, Monitor, Tmux, và với shell thì check chỉ hỏi khi lệnh có vẻ chạm mạng.

Bản sửa Claude Code 2.1.317 với check hỏi trước khi gửi email

Poteat nói mod tích hợp cc-plugin-privacy từ 2.1.317 trở đi chặn hành vi này “một cách tất định”, bật mặc định, tắt được qua /plugins, và theo lời poteat thì mã nguồn của mod đã được công bố để cộng đồng xem check hoạt động ra sao, dù bài này chưa đối chiếu trực tiếp link mã nguồn đó nên không dẫn URL cụ thể: “Hi folks! We introduced a built-in mod called cc-plugin-privacy to deterministically block this behavior in v2.1.317 and later – definitely let us know ASAP though if there’s a gap in the checks introduced by that mod. […] The built-in privacy mod is enabled by default, you can turn it off via /plugins.”

Hai cách nói “asks” của changelog và “deterministically block” của poteat không mâu thuẫn hoàn toàn, ở chế độ tương tác thì check hỏi người dùng, ở chế độ headless không có người trả lời thì nó từ chối, và chính điểm này sinh ra tác dụng phụ ở mục sau. Trang changelogs.core-directive.com ghi nhận entry về privacy hook trong 2.1.317 vào ngày 02/11/2026 lúc 23:57 UTC, tức trước cả changelog chính thức, và mốc ngày 01/10/2026 Claude Code 2.1.287 ra mắt hệ thống Mods, plugin chạy bên trong tiến trình Claude Code, là nền tảng kỹ thuật để sau này Anthropic làm mod chặn email, nhưng mốc này chỉ đọc qua nguồn thứ cấp và chưa đối chiếu changelog gốc.

Kẽ hở của bản sửa chặn oan lệnh local trong headless và run vẫn báo success với exit code 0

Issue #107144 mở ngày 04/11/2026 lúc 05:47 UTC, trên phiên bản 2.1.317 và 2.1.318, Ubuntu và Debian Linux, môi trường non-interactive và CI, và nó mô tả đúng tác dụng phụ mà ai chạy pipeline cũng sợ, check email chặn cả các lệnh Bash chỉ làm việc local, trong khi run vẫn kết thúc với trạng thái success và exit code 0. Thông báo từ chối đầy đủ mà check đưa ra là: “This call’s input holds your account email address, which may leave this machine. If nobody asked to send it, go on without it.” Kèm theo dòng: “Permission to use Bash denied by plugins cc-plugin-sec-default, cc-plugin-privacy”.

Chạy headless và CI bị chặn oan dù lệnh chỉ ghi file local

Check này vận hành kiểu phép kiểm tra văn bản thô, kiểu co-occurrence, input chứa email tài khoản cộng một từ trông giống mạng như curl hoặc https thì bị coi là sẽ chạm mạng, kể cả khi lệnh chỉ ghi file local hoặc gọi loopback 127.0.0.1. Hai ví dụ bị chặn oan trong issue là heredoc ghi file note.md local và curl http://127.0.0.1:9/, trong khi curl với địa chỉ khác và git -c user.email=... không có từ mạng thì được phép, và phiên bản trước 2.1.295 không gặp vấn đề này, theo issue #107144.

Nặng hơn nữa, run headless vẫn kết thúc success, exit code 0, lệnh bị chặn chỉ ghi trong trường permission_denials, tức là hệ thống tự động hoá tưởng việc đã xong trong khi file chưa được ghi.

Akhil viết trên Medium: “A guardrail designed for a human assumes a human. When you move an agent into a pipeline, every ‘ask first’ behavior becomes a silent deny or a silent allow, and the exit code will not tell you which.” Lưu ý là Akhil tự nhận mình chưa tái hiện, chỉ thuật lại báo cáo của người khác.

Người báo cáo #107144 đánh giá bản thân check là hợp lý, nguyên văn là “The check itself makes sense”, vấn đề chỉ là nó chặn cả lệnh không thể gửi email đi đâu, và anh ta đề nghị lệnh không thể rời máy thì không nên kích hoạt check, ở chế độ -p bypass thì check nên tuân theo chế độ người dùng đã chọn, hoặc ít nhất thông báo từ chối phải nói rõ là lệnh đã bị chặn thay vì bảo model cứ tiếp tục mà không có nó.

Từ báo cáo tháng 04/2026 tới bản sửa tháng 11/2026, các issue cũ bị đóng vì lý do quy trình

Timeline của vụ này kéo dài hơn nhiều so với hai ngày giữa bản sửa và issue viral, vì các báo cáo về email bị chèn vào system prompt đã xuất hiện từ trước ngày 19/04/2026, theo issue #81138, trong đó ghi các báo cáo trước đó kéo dài “going back to 2026-04-19, for at least three months before it”, tức ít nhất ba tháng trước khi issue #81138 mở ngày 25/07/2026.

Các issue trước đó là #53231, #50702, #67605, #58081 đều đã bị đóng vì lý do quy trình, không hoạt động hoặc trùng lặp dây chuyền, và việc đóng đó chỉ khép lại hồ sơ chứ chưa từng kết luận hành vi này là chấp nhận được, và cách xử lý đó mới là thứ khiến cộng đồng bức xúc, vượt ra ngoài bản thân lỗi kỹ thuật.

Từ issue #81138 ngày 25/07 tới bản 2.1.317 ngày 03/11 là khoảng 3 tháng 9 ngày, còn AlexErrant tính “5-month turnaround” và gọi đó là thời gian cho “a heckin plugin”: “Feedback: Please curate the 5000+ issues in this repo instead of only paying attention to what goes viral on Twitter/Reddit/HN. The original issue #81138 is from July: 5-month turnaround for a heckin plugin.” “5 tháng” là cách tính của riêng AlexErrant, vì từ tháng 7 tới tháng 11 là khoảng 3,5 tháng, còn từ tháng 4 tới tháng 11 mới là khoảng 7 tháng, và con số “5000+ issues” cũng là lời của anh ta, chưa được kiểm chứng độc lập.

Trước issue #107757 đã có hai phát hiện tương tự vào tháng 10. Steven Liss đăng trên X ngày 22/10/2026 rằng Claude Code lộ dữ liệu cá nhân trong HTTP header khi curl các site, vì các site đó lịch sự yêu cầu agent tự nhận dạng người dùng, bài đăng vượt 3.500 likes và 200.000 views theo bài tổng hợp của AI Letter, nhân viên Anthropic Lydia Hallie trả lời nghe giống prompt injection qua nội dung trang và đề nghị gửi transcript qua /feedback hoặc HackerOne, Liss nói đã gửi.

Nhà nghiên cứu bảo mật Chris Lakin chia sẻ phát hiện tương tự ngày 24/10/2026, theo bài tổng hợp của emergent.sh, và cả hai trường hợp này đều trích qua bài tổng hợp, vì bài gốc trên X không đọc được trực tiếp trong đợt nghiên cứu này.

Mốc viral nằm ở bài Tell HN ngày 29/10/2026 lúc 09:06 UTC, 40 points, 7 comments theo bản mirror, bài này nối issue #81138 với thread Reddit “Opus 5.5 just shared my email address”, và cùng ngày AlexErrant bình luận trên Hacker News rằng Opus “constantly” đưa email vào request header.

AI Weekly đăng bản tin ngắn ngày 05/11 lúc 22:56 UTC tổng hợp issue #107757, tại thời điểm đó ghi “Anthropic has not publicly replied on the thread as of filing”, câu này đã lỗi thời sau khi poteat trả lời, và emergent.sh cũng viết “Anthropic has not issued a public statement” trước khi poteat trả lời và trước 2.1.317, câu này cũng đã lỗi thời, nên anh em đọc lại hai bài đó thì nhớ hai câu đó không còn đúng nữa.

Website lạ có thể xin email của bạn qua nội dung trang, và dặn trong CLAUDE.md không đủ để chặn

Vụ User-Agent không dừng ở một header bị gửi nhầm, vì nếu model đã có email trong context và sẵn sàng nghe theo lời xin của website thì bất kỳ trang nào cũng có thể trở thành người xin, và đó mới là chỗ khiến câu chuyện này vượt ra khỏi một lỗi riêng tư đơn lẻ.

Prompt injection qua nội dung trang và cách site lạ xin email

Nhiều bình luận trên Hacker News chỉ ra nguy cơ lớn hơn, bất kỳ website nào cũng có thể trả về nội dung yêu cầu agent tự nhận dạng, và model vốn đã có email trong context có thể tuân theo, vì với model thì chữ trên trang web và chữ người dùng gõ vào đôi khi không khác nhau đủ rõ.

Shakna đặt câu hỏi rất trúng: “Should an agent not ask for confirmation, before leaking their patron’s contact information to any random third party who asks for it? If not… That sounds like primetime for prompt injection.” Và anh ta nói tiếp: “If I can exfiltrate your email with something that responds in that way, what other information can I pull from your system, without your intervention? … I’m afraid this isn’t a shrug – it’s a zero-click vulnerability.”

Steven Liss dựng hẳn môi trường test tấn công injection của nhà quảng cáo, và Lydia Hallie của Anthropic thừa nhận nghe giống prompt injection qua nội dung trang, theo bài tổng hợp của AI Letter, còn AlexErrant kể trên một thread Hacker News khác rằng anh ta bắt gặp model gửi email tới hai site khác Wikipedia và SEC, và anh ta không nêu tên hai site đó vì liên quan tới công việc, nên bài này không suy đoán đó là site nào.

Ba trường hợp cần tách ra là site xin email qua nội dung trang, tức prompt injection, site yêu cầu contact theo chính sách như Wikipedia hay SEC, và site chỉ yêu cầu có User-Agent như crates.io. Trường hợp crates.io của tempaccount420 cho thấy ngay cả khi site chỉ yêu cầu có User-Agent thì model cũng có thể tự bịa User-Agent chứa email.

Website lạ xin email qua nội dung trang, nguy cơ prompt injection

Vì sao dặn trong CLAUDE.md và ghi nhớ trong memory không phải guardrail

CLAUDE.md là file chỉ dẫn mà người dùng đặt trong dự án để Claude Code đọc mỗi khi làm việc, kiểu như tờ ghi chú dán trên bàn, và nhiều anh em đã viết vào đó câu “đừng bao giờ gửi email của tôi”, nhưng tờ ghi chú thì vẫn chỉ là tờ ghi chú, model có thể quên, có thể bị nội dung trang web khác lấn át, và không có cơ chế nào ép model phải tuân theo.

Kardos nói rất gọn trên Hacker News: “Instructions are not guardrails. Best case, that just makes it less likely to do it”, tức là chỉ dẫn vẫn là lời dặn model, và trong trường hợp tốt nhất nó chỉ khiến model ít làm vậy hơn, còn jen20 bổ sung: “That’s exactly what guardrails must be if they are to be useful or trustworthy. Deterministic, enforceable and impenetrable.”

Dặn trong CLAUDE.md chỉ là lời dặn, chưa đủ làm guardrail tất định

Trường hợp trên Hacker News item 50219875 minh hoạ rất rõ giới hạn này, Claude tự nhận lỗi và đổ cho subagent, nguyên văn: “This was my bad. I explicitly told them not to do this and one agent did it anyway…”, rồi lưu ghi chú vào memory, và người dùng nói điều đó “gives me absolutely no faith that it won’t happen again.”

Một bình luận khác khuyên dùng PreToolUse hook chặn lệnh thay vì dựa vào memory, vì “memory is only context for Claude Code”, tức là memory cũng chỉ là context, và một context thì không chặn được lệnh nào. PreToolUse hook, nói ngắn gọn, là một đoạn code chạy trước mỗi lần tool được gọi, có quyền chặn lệnh lại, khác hẳn với lời dặn trong file văn bản. Đối chiếu với mod tất định của Anthropic thì mod cc-plugin-privacy mới là hướng đúng vì nó là check tất định, còn dặn dò trong CLAUDE.md chỉ là lời dặn model, và allowlist CLAUDE.md của xSetech vẫn có giá trị thực tế, nhưng anh em dùng nó mà tưởng nó chặn tuyệt đối thì sẽ chủ quan.

Đề xuất cấp một mã định danh mờ thay cho email thật, và giới hạn của đề xuất đó

Đề xuất của everforward trên Hacker News là một lối thoát kỹ thuật đáng theo dõi, Wikipedia chỉ cần một cách để yêu cầu dừng khi bot làm phiền, nên Anthropic có thể cấp “an opaque agent/session identifier that Wikipedia could flag, and Anthropic just forwards that on to you in the UI” thay vì email thật.

Nhưng đề xuất này có giới hạn rõ ràng, vì nó chưa được Anthropic xác nhận, chưa có mốc triển khai, và không giải quyết được trường hợp site chỉ yêu cầu có User-Agent như crates.io, vì model vẫn phải tự bịa User-Agent nếu không có định danh chuẩn, và định danh mờ chỉ có ích khi site biết cách dùng nó, còn với site lạ không theo chuẩn nào thì model vẫn có thể tự xoay sở theo cách cũ.

Ba việc làm ngay hôm nay để chặn email lọt ra ngoài

Sau tất cả diễn biến và tranh cãi thì phần còn lại là việc của người đọc, và may là những bước cần làm ngay đều đã có lệnh và đường kiểm tra cụ thể, không cần chờ Anthropic gỡ hẳn email khỏi system prompt mới bắt đầu tự bảo vệ mình.

Cập nhật lên 2.1.317 và kiểm tra mod cc-plugin-privacy trong plugins

Cập nhật lên 2.1.317 trở lên và kiểm tra mod cc-plugin-privacy trong /plugins

Làm theo ngay: cập nhật Claude Code lên 2.1.317 trở lên, vì check email có từ bản này theo changelog, rồi gõ /plugins trong Claude Code và xác nhận mod cc-plugin-privacy đang bật, mod này bật mặc định và cũng tắt được ở đó, theo lời poteat trong issue #107757. Đây là bước đầu tiên và quan trọng nhất, làm ngay hôm nay, vì nó chặn ở tầng gửi đi, tức là tầng email rời máy, và với hầu hết anh em dùng Claude Code tương tác hằng ngày thì bước này đã chặn được phần lớn rủi ro.

Cảnh báo nhỏ: chưa có cách tắt việc chèn email vào system prompt bằng settings chính thức được ghi nhận, nên kiểm tra mod là cách chặn ở tầng gửi đi, còn email vẫn nằm trong context của model, vẫn có thể bị model viết ra output hay commit git, nên anh em đừng tưởng bật mod xong là xong hẳn.

Dùng allowlist CLAUDE.md của xSetech và plugin cộng đồng của AlexErrant

Workaround dạng allowlist trong CLAUDE.md do xSetech chia sẻ trong issue #107757 là lựa chọn thực tế nhất cho anh em ngay hôm nay, nội dung là email chỉ được xuất hiện trong User-Agent với site đã duyệt mà chính sách UA yêu cầu rõ email, site chưa duyệt thì phải hỏi trước, nếu từ chối hoặc không liên lạc được thì không gọi, và site được duyệt duy nhất trong danh sách của anh ta là Wikipedia.

Anh em copy ý này vào CLAUDE.md của mình rồi sửa danh sách site được duyệt theo nhu cầu thật của mình, nhưng nhớ rằng đây vẫn là lời dặn model, và một lời dặn thì model có thể bỏ qua, nên đừng đặt niềm tin tuyệt đối vào nó, mà xem nó như lớp phòng thủ thêm sau mod cc-plugin-privacy.

Plugin cộng đồng AlexErrant/claude-code-no-email là lựa chọn thứ hai, repo này được tạo ngày 05/10/2026 lúc 22:23 UTC, có 70 stars, 1 watcher, 5 forks, 3 commits, license MIT tại thời điểm đọc ngày 06/11/2026, và hook của nó loại email khỏi system prompt. Lưu ý là trên máy Team hoặc Enterprise có managed settings, policy của tổ chức có thể bỏ qua hook này, anh em kiểm tra bằng lệnh claude --debug và tìm dòng no-email: prompt.context bypassed by ... để biết hook có bị bỏ qua hay không, và nếu bị bỏ qua thì plugin này không còn tác dụng trên máy đó nữa.

Một bối cảnh nữa cần biết là từ 2.1.295, khi không có email đăng nhập, Claude Code có thể dùng biến môi trường CLAUDE_CODE_USER_EMAIL làm email đưa cho model, và không gửi email khi ANTHROPIC_UNIX_SOCKET được đặt, nhưng hai điều kiện nội bộ để dùng biến này không được mô tả, và nguồn này chỉ đọc qua kết quả search, chưa mở full-text.

Lưu ý riêng cho người chạy headless và CI là đừng tin exit code 0 mà hãy kiểm tra permission_denials

Nếu anh em chạy Claude Code ở chế độ headless hoặc trong CI, tức là chạy không có người ngồi trước màn hình, kiểu claude -p trong pipeline tự động, thì check email có thể chặn oan lệnh local, như đã nói ở mục trước. Workaround đã kiểm chứng trong issue #107144 là thêm "enabledPlugins": {"cc-plugin-privacy@builtin": false} vào file ~/.claude/settings.json hoặc $CLAUDE_CONFIG_DIR/settings.json, nhưng đây là đường cùng, vì tắt plugin cũng mở lại các lệnh thật sự gửi email ra ngoài, nên nếu được thì dùng permissions.deny hoặc PreToolUse hook thay thế, và chỉ tắt plugin khi không còn cách nào khác.

Cảnh báo nhỏ: đừng tin exit code 0, hãy kiểm tra trường permission_denials và artifact thực tế, vì run headless vẫn kết thúc success, exit code 0 trong khi lệnh bị chặn chỉ nằm trong permission_denials, và file anh em tưởng đã ghi xong có thể chưa được ghi. Người báo cáo #107144 cũng đề nghị lệnh không thể rời máy thì không nên kích hoạt check, ở chế độ -p bypass thì check nên tuân theo chế độ người dùng đã chọn, hoặc ít nhất thông báo từ chối phải nói rõ là lệnh đã bị chặn thay vì bảo model cứ tiếp tục mà không có nó, và anh em chạy pipeline nên đưa kiểm tra artifact vào bước verify của mình ngay từ hôm nay.

Email trong context vẫn là rủi ro thật, cập nhật và kiểm tra mod ngay, đừng chờ nút tắt hoàn hảo

Cơ chế đã rõ ở mức ai cũng kiểm tra lại được, email nằm sẵn trong context từ đầu, model lấy nó làm thông tin liên hệ mỗi khi gọi web, và Anthropic đã có check hỏi trước từ 2.1.317, ra trước issue viral hai ngày, nhưng check đó vẫn để email nằm trong system prompt và vẫn chặn oan lệnh local khi chạy headless.

Nói gọn lại, Anthropic sửa đúng hướng nhưng chưa sửa tới gốc, vì chừng nào email còn nằm trong system prompt thì mọi lời dặn model vẫn chỉ là lời dặn, và người dùng vẫn phải tự chặn ở tầng gửi đi trong lúc chờ một nút tắt thật sự, còn nguy cơ lớn hơn một header thì nằm ở prompt injection qua nội dung trang, khi bất kỳ site lạ nào cũng có thể xin email.

Anh em làm ngay ba việc: cập nhật lên 2.1.317 trở lên, kiểm tra cc-plugin-privacy trong /plugins, và dùng allowlist CLAUDE.md hoặc plugin cộng đồng nếu cần. Người chạy headless thì kiểm tra thêm permission_denials thay vì tin exit code 0. Nếu anh em từng bắt gặp Claude Code gửi email trong User-Agent thì chia sẻ trải nghiệm thật ở phần bình luận, và báo ngay cho Anthropic nếu phát hiện kẽ hở trong check của mod, theo lời mời của poteat, vì càng nhiều báo cáo cụ thể thì check càng sớm được vá kín.

Hai điều chưa có thì anh em cũng nên biết rõ, chưa có cách tắt việc chèn email vào system prompt bằng settings chính thức, và định danh mờ của everforward vẫn chỉ là đề xuất chưa ai xác nhận, nên đừng chờ nút tắt hoàn hảo mới bắt đầu tự bảo vệ mình, vì những bước làm ngay ở trên đã có sẵn và chạy được hôm nay.

Nguồn tham khảo

Bài viết này có hữu ích cho công việc của bạn?
Báo thông số cũ / Góp ý
Ảnh đại diện tác giả Tuấn Prompt tại ThuThuatAI.net

Tuấn Prompt

Biên tập viên AI Thực chiến

Thợ săn AI thực chiến của ThuThuatAI.net. Chuyên bóc tách tool, prompt và model AI mới — cái nào có lệnh cài, có giá, có số liệu kiểm chứng được thì mới lên bài. Viết như nói chuyện với anh em: có chuyên môn, có hài hước, và nói thẳng chỗ nào chưa kiểm chứng.

ĐỌC TIẾP CÙNG CHUYÊN MỤC

Bài viết Chuyên sâu Cùng Chuyên mục Tin tức AI

TÀI LIỆU NỀN TẢNG ĐỀ XUẤT

Cẩm nang Nền tảng Đề xuất Đọc tiếp

Bình luận & Trao đổi

Để lại câu hỏi hoặc chia sẻ kinh nghiệm thực tế của bạn

Email của bạn được bảo mật tuyệt đối theo Nghị định 13/2023/NĐ-CP và không hiển thị công khai. Vui lòng ẩn danh API Key trước khi dán log lỗi.

BẢN TIN HÀNG TUẦN

Nhận điểm tin & thủ thuật AI chọn lọc mỗi tuần

Tổng hợp ngắn gọn các công cụ AI mới đáng thử, mẫu prompt dùng được ngay và kinh nghiệm tự động hóa thực tế. Chỉ 1 email mỗi tuần, không spam.

Không gửi thư rác quảng cáo. Xem chi tiết tại Chính sách bảo mật.