Vibe coding và GDPR: vì sao trang web do AI dựng lên có thể đang vi phạm pháp luật
Các agent lập trình như Claude Code và Codex dựng được một website chạy ngon trong vài giờ, nhưng âm thầm gài vào đó những vi phạm GDPR mà bạn chưa bao giờ yêu cầu: cookie đặt trước khi xin phép, dữ liệu cá nhân lưu mãi mãi, người dùng không có cách nào để xóa. Bài này giải thích vì sao điều đó xảy ra với mọi agent lập trình, cái giá bạn phải trả, và skill Claude Code miễn phí quét dự án để tìm và sửa các lỗi GDPR.
Bạn mô tả một ứng dụng cho agent lập trình, nó viết code, bạn deploy, và vài giờ sau bạn đã có một sản phẩm thật chạy online. Đó là lời hứa của vibe coding, và phần lớn thời gian nó giữ đúng lời. Trang web tải lên, phần đăng ký hoạt động, dashboard trông gọn gàng. Mọi thứ bạn nhìn thấy đều ổn.
Vấn đề nằm ở tất cả những gì bạn không nhìn thấy. Trong lúc đấu nối các tính năng, agent cũng đưa ra hàng chục quyết định nhỏ về cookie, theo dõi, lưu trữ dữ liệu và quyền của người dùng. Chẳng ai bảo nó nghĩ tới luật, nên nó không nghĩ. Đến lúc bạn ship, trang web bóng bẩy mới toanh của bạn có thể đã ngồi sẵn trên một đống vi phạm GDPR mà bạn hoàn toàn không hay biết.
Đây không phải lỗi riêng của Claude hay của Codex. Đây là một đặc tính mang tính cấu trúc trong cách các agent lập trình vận hành, và nó đúng với mọi agent. Hãy đi qua chính xác những gì trục trặc, cái giá bạn có thể phải trả, và skill Claude Code miễn phí tìm ra rồi sửa các lỗi này trước khi cơ quan quản lý làm điều đó.
Những gì agent lập trình âm thầm làm sai
Một agent lập trình tối ưu cho đúng một việc: làm cho tính năng chạy được. Bảo nó làm analytics, nó nhét vào một đoạn script theo dõi. Bảo nó làm form liên hệ, nó lưu mọi lần gửi vào một bảng. Bảo nó làm đăng nhập, nó giữ hồ sơ người dùng vô thời hạn. Tách riêng ra thì mỗi lựa chọn đều hợp lý. Ghép lại, chúng tạo thành đúng danh sách mẫu những vi phạm mà cơ quan quản lý xử phạt thường xuyên nhất.
Đây là những gì lọt lưới trên một website làm theo kiểu vibe coding điển hình:
- Cookie và mã theo dõi kích hoạt trước khi xin phép. Analytics, bản đồ nhúng, font chữ, pixel mạng xã hội và công cụ phiên đều tải ngay khoảnh khắc trang mở ra. Theo GDPR và quy định ePrivacy, cookie không thiết yếu cần có sự đồng ý từ trước và tự nguyện. Một trang gài chúng ngay lần hiển thị đầu tiên đã là không tuân thủ, và một banner cookie chỉ hiện lên sau khi mã theo dõi đã chạy thì cũng không cứu vãn được gì.
- Dữ liệu cá nhân được giữ mãi mãi. Agent tạo bảng
users, bảngsubmissions, bảnglogs, và không bao giờ thêm chính sách lưu trữ. GDPR yêu cầu bạn chỉ giữ dữ liệu cá nhân đúng khoảng thời gian thực sự cần. "Giữ mãi cho chắc" chính là vi phạm nguyên tắc giới hạn lưu trữ mà luật được viết ra để chặn lại. - Không có cách nào để xóa dữ liệu. Người dùng có quyền được xóa, tức cái gọi là quyền được lãng quên. Gần như không có ứng dụng vibe coding nào ship kèm luồng "xóa tài khoản của tôi" hay một quy trình được ghi chép để thực hiện yêu cầu xóa. Dữ liệu đi vào, và không có cánh cửa nào ghi chữ lối ra.
- Không có đường nào để truy cập hay mang dữ liệu đi. Người ta có thể yêu cầu một bản sao tất cả những gì bạn đang nắm về họ. Nếu câu trả lời duy nhất của bạn là một truy vấn cơ sở dữ liệu thủ công mà bạn chưa từng thử chạy, thì bạn chưa đáp ứng nghĩa vụ về quyền truy cập và quyền mang dữ liệu đi.
- Dữ liệu của bên thứ ba âm thầm rời khỏi EU. Cái script analytics hay font lưu trữ ngoài mà bạn thêm vào trong hai giây có thể đang gửi địa chỉ IP và định danh tới các máy chủ ngoài EU mà không có cơ chế chuyển dữ liệu hợp pháp nào.
- Không có hồ sơ về những gì bạn thu thập. GDPR kỳ vọng bạn biết và ghi chép lại các hoạt động xử lý dữ liệu của mình. Một ứng dụng mà các luồng dữ liệu chỉ tồn tại trong lịch sử chat đã bị quên của agent thì hoàn toàn không có sổ đăng ký nào.
Không có điều nào trong số này lộ ra khi demo. Ứng dụng chạy hoàn hảo. Lớp pháp lý đơn giản là thiếu, và nó cứ thiếu như thế cho tới khi có người khiếu nại hoặc cơ quan quản lý gõ cửa.
Agent lấp đầy cột bên trái không một sai sót. Cột bên phải là phần chẳng ai bảo nó dựng, nên nó cứ để trống.
Vì sao mọi agent lập trình đều làm vậy, không riêng Claude
Đổ lỗi cho một công cụ thì dễ, nhưng nguyên nhân sâu xa hơn thế. Các agent lập trình học từ code công khai, và phần lớn code công khai chưa bao giờ được viết với GDPR trong đầu. Khi một model đã thấy mười nghìn ví dụ "thêm Google Analytics" nhét script thẳng vào <head>, thì đó là mẫu nó tái tạo lại. Dữ liệu huấn luyện mã hóa thói quen xấu, nên đầu ra thừa hưởng nó.
Có dữ liệu cứng về phiên bản rộng hơn của vấn đề này. Báo cáo Bảo mật Code GenAI 2025 của Veracode đã kiểm thử đầu ra của hơn 100 mô hình ngôn ngữ lớn trên hàng chục tác vụ lập trình và phát hiện rằng 45% code do AI tạo ra có chứa lỗ hổng bảo mật. Cũng nghiên cứu đó cho thấy code do AI viết mang nhiều lỗ hổng gấp 2,74 lần so với code do con người viết, và đáng chú ý là, các model mới hơn và lớn hơn cũng không làm tốt hơn. Đây là vấn đề cấu trúc, không phải một bug mà bản phát hành kế tiếp vá đi là xong.
Tuân thủ quyền riêng tư cũng cùng một dạng vấn đề như bảo mật. Cả hai đều là những yêu cầu vô hình mà mục tiêu "cho nó chạy đi" cứ thế đi thẳng qua. Nên dù bạn điều khiển Claude Code hay Codex, Antigravity CLI, Cursor hay bất kỳ agent nào khác, bạn đều dính cùng một điểm mù. Công cụ thay đổi, lỗ hổng thì không.
Một vi phạm GDPR thực sự có thể tốn bao nhiêu
Đây là lúc nó thôi trừu tượng. Tiền phạt GDPR có mức trần là con số cao hơn giữa 20 triệu euro hoặc 4% doanh thu hằng năm toàn cầu, và các cơ quan quản lý đã bắt đầu dùng tới đầu trên của khoảng đó.
Riêng trong năm 2025, cơ quan bảo vệ dữ liệu của Pháp, CNIL, đã ra 486 triệu euro tiền phạt, gần gấp mười lần tổng của năm 2024. Hai quyết định trong cùng một ngày của tháng Chín chiếm phần lớn con số đó: 325 triệu euro nhắm vào Google vì các thiếu sót về cookie và minh bạch quảng cáo, và 150 triệu euro nhắm vào Shein vì gài mã theo dõi không xin phép. Đúng những loại lỗi mà một agent AI ship theo mặc định cũng chính là những loại lỗi đang lãnh các án phạt chín chữ số.
Rất dễ đọc những con số đó rồi cho rằng cơ quan quản lý chỉ săn các ông lớn. Không phải vậy. CNIL áp dụng một thủ tục rút gọn nhắm thẳng vào những vụ nhỏ, rõ ràng về mặt sự việc: một banner cookie không tuân thủ, một yêu cầu truy cập bị phớt lờ, một chính sách mật khẩu yếu. Đó là những điều thường gặp như cơm bữa ở một doanh nghiệp nhỏ, và đó đúng là những thứ một website vibe coding làm sai. Quy mô công ty của bạn quyết định mức tiền phạt, chứ không quyết định việc bạn có thể bị phạt hay không.
Các án phạt nổi đình đám nhắm vào những công ty lớn, nhưng các vi phạm đứng sau chúng, cookie không xin phép và thiếu minh bạch, lại chính là những thứ một agent lập trình ship trên một website nhỏ theo mặc định.
GDPR thực sự đòi hỏi điều gì (nói cho dễ hiểu)
Bạn không cần phải trở thành luật sư để lấp gần hết khoảng trống. Phần lớn việc tuân thủ thường ngày quy về một nhúm hành vi cụ thể mà code của bạn hoặc có hoặc không:
- Đồng ý trước khi đặt cookie không thiết yếu. Bất cứ thứ gì theo dõi, lập hồ sơ hay đo lường đều không được chạy cho tới khi người dùng chủ động đồng ý. Cookie thực sự cần thiết là ngoại lệ duy nhất.
- Một cơ sở pháp lý cho từng mẩu dữ liệu bạn thu thập. Sự đồng ý, hợp đồng, hoặc lợi ích chính đáng, được quyết định trước khi bạn lưu bất cứ thứ gì, chứ không phải sau đó.
- Tối thiểu hóa dữ liệu. Chỉ thu thập đúng những gì tính năng thực sự cần. Bản năng ghi log mọi thứ của agent là điều ngược lại hoàn toàn.
- Giới hạn lưu trữ. Mỗi loại dữ liệu cá nhân cần một vòng đời được xác định và một cách để xóa khi tới hạn.
- Các quyền của chủ thể dữ liệu. Truy cập, đính chính, xóa và mang dữ liệu đi đều cần một con đường thật, chạy được, chứ không phải một lời hứa trong chính sách quyền riêng tư.
- Một thông báo quyền riêng tư rõ ràng và một hồ sơ về hoạt động xử lý. Người ta phải thấy được bạn thu thập gì và để làm gì, còn bạn thì phải chứng minh được điều đó.
Đọc lại danh sách này đối chiếu với phần nói về những gì agent làm sai, độ trùng khớp gần như hoàn hảo. Tin tốt là vì đây đều là những hành vi cụ thể ở mức code, nên một công cụ có thể quét tìm chúng.
Lời giải: một skill Claude Code miễn phí quét và sửa
Đây là phần mà checklist thủ công không thể cho bạn: một lượt quét tự động trên chính codebase thật của bạn. Một lập trình viên tên Jeremy Longshore đã phát hành một skill Claude Code miễn phí, mã nguồn mở tên là scanning-for-gdpr-compliance (được liệt kê ở một số marketplace dưới tên GDPR Compliance Scanner) làm đúng việc này. Nó nằm trong repository claude-code-plugins-plus và chạy hoàn toàn bên trong Claude Code, nên không có dịch vụ riêng nào phải đăng ký.
Skill này đọc dự án của bạn theo cách một kiểm toán viên về quyền riêng tư sẽ làm. Nó soi các luồng dữ liệu, vị trí lưu trữ, hoạt động xử lý, cơ chế xin đồng ý, chính sách lưu trữ, kiểm soát truy cập, và cách bạn xử lý các quyền của chủ thể dữ liệu. Rồi nó làm ba việc đáng giá:
- Nó phát hiện. Các kiểm tra dựa trên luật đánh dấu những mẫu nêu trên: mã theo dõi kích hoạt trước khi xin phép, dữ liệu cá nhân không có giới hạn lưu trữ, thiếu đường xóa, hoạt động xử lý không được ghi chép.
- Nó phân loại theo mức độ nghiêm trọng. Các phát hiện trả về đã được chấm điểm và xếp ưu tiên, nên một mã theo dõi đang rò định danh sẽ xếp trên một dòng còn thiếu trong thông báo quyền riêng tư. Bạn sửa những thứ nguy hiểm trước thay vì chết chìm trong một danh sách phẳng lì.
- Nó sửa ngay trong code của bạn. Vì chạy bên trong agent, nó không chỉ tạo ra một báo cáo để bạn phải xử lý sau. Nó có thể triển khai trực tiếp các thay đổi được khuyến nghị, biến "chỗ này có vấn đề đây" thành một chỉnh sửa thật trong cùng một lượt.
Cài nó chỉ gói gọn trong một dòng lệnh. Với plugin marketplace, bạn thêm nguồn và cài skill:
/plugin marketplace add jeremylongshore/claude-code-plugins-plus
Rồi kích hoạt quét bằng ngôn ngữ tự nhiên. Skill phản hồi với những câu như:
scan GDPR compliance
check data privacy
validate GDPR
Bạn cũng có thể cài bằng cách thả thư mục skill vào thư mục .claude/skills/ của dự án, cách chuẩn để Claude Code nhận diện skill. Dù theo cách nào, lượt quét cũng chạy trên repository thật của bạn, chứ không phải một checklist trừu tượng.
Codebase vào, các phát hiện được xếp ưu tiên ở giữa, chỉnh sửa code thật ra. Cùng cái vòng lặp bạn đã dùng cho tính năng, giờ chĩa vào việc tuân thủ.
Một lời nhắc thận trọng cho công bằng, vì sự trung thực là một phần của niềm tin ở đây: một lượt quét không phải là cái gật đầu pháp lý. Skill bắt được những vi phạm máy móc ở mức code chiếm phần lớn rủi ro thường ngày, là cookie, là lưu trữ, là luồng xóa còn thiếu, và nó đưa bạn tới gần tuân thủ một cách rõ rệt chỉ trong vài phút. Nó không thay thế một luật sư bảo vệ dữ liệu cho bất cứ điều gì nhạy cảm, một Đánh giá Tác động Bảo vệ Dữ liệu, hay việc xử lý dữ liệu sức khỏe. Hãy coi nó là lượt rà soát kỹ thuật đầu tiên gỡ bỏ những vi phạm hiển nhiên, rồi đưa con người vào rà soát các trường hợp ngoại biên.
Vì sao điều này khó hơn khi bạn vận hành cả một đội agent
Một lập trình viên với một agent thì có một codebase để giữ cho ngay ngắn. Khoảnh khắc bạn cho nhiều agent chạy song song, mỗi cái đều ship tính năng vào cùng một sản phẩm, diện tích bề mặt cho các vi phạm âm thầm nhân lên. Một agent thêm script analytics, một agent khác dựng một bảng log, một agent thứ ba đấu nối một widget bên thứ ba, và không một con người nào từng rà soát hệ quả về quyền riêng tư của toàn bộ.
Đây cũng chính là lý do bối cảnh và tính nhất quán trở nên khó ở quy mô lớn, một chủ đề mà chúng tôi cứ quay lại mãi, dù là khi nói về chạy các agent lập trình song song hay vibe coding mà không chết chìm. Lời giải có cùng một hình dáng: biến chuẩn mực thành một phần của thiết lập dùng chung thay vì một thứ bạn cố nhớ kiểm tra ở phút chót.
Trong AgentsRoom, khoang lái đa agent, các skill và quy tắc bạn cấu hình một lần sẽ áp dụng cho mọi agent trong phòng, xuyên suốt Claude Code, Codex và các nhà cung cấp khác mà bạn điều khiển từ một chỗ. Đấu một lượt kiểm tra tuân thủ vào quy trình của bạn một lần và mọi agent đều thừa hưởng nó, thay vì hy vọng từng cái một tự nhớ ra một quy tắc mà chẳng ai từng dạy nó. Chính cái kỷ luật giữ cho một phiên làm việc sạch sẽ là thứ giữ cho cả một đội agent tránh khỏi rắc rối pháp lý.
Một checklist tuân thủ thực dụng cho website do AI dựng lên
Trước khi coi bất kỳ website do AI dựng nào là xong, hãy soi nó qua danh sách này. Phần lớn sẽ được trình quét bắt được, nhưng biết mình đang tìm gì sẽ giúp đọc báo cáo dễ hơn:
- Không cookie hay mã theo dõi không thiết yếu nào kích hoạt trước khi người dùng đồng ý.
- Mỗi kho dữ liệu cá nhân đều có một thời hạn lưu trữ được xác định và một cơ chế xóa.
- Người dùng có thể yêu cầu và nhận được một bản sao dữ liệu của họ.
- Người dùng có thể xóa tài khoản và được xóa dữ liệu của mình.
- Một thông báo quyền riêng tư giải thích bạn thu thập gì, để làm gì, và trên cơ sở pháp lý nào.
- Các script bên thứ ba và các đợt chuyển dữ liệu ra ngoài EU đều có một cơ chế hợp pháp.
- Bạn có thể xuất ra một hồ sơ về các hoạt động xử lý của mình nếu được yêu cầu.
Nếu bạn không tích được hết các ô, thì website do AI dựng của bạn đang mang theo rủi ro GDPR, và chỉ một khiếu nại là đủ để nó lộ ra.
Điều cần nhớ
Vibe coding nhanh thật, và chính tốc độ đó là cái bẫy. Agent lấp đầy mọi thứ bạn nhìn thấy và bỏ qua mọi thứ bạn không thấy, mà đó đúng là nơi GDPR cư ngụ. Cookie trước khi xin phép, dữ liệu giữ mãi mãi, không có cách nào để xóa: đây không phải những trường hợp ngoại biên kỳ lạ, chúng là đầu ra mặc định của mọi agent lập trình, và chúng là cùng những thiếu sót mà các cơ quan quản lý đã phạt tới hàng trăm triệu euro trong năm 2025.
Lời giải không phải là ngừng dùng agent. Mà là thêm vào cái lượt rà soát còn thiếu. Chạy skill miễn phí scanning-for-gdpr-compliance trên dự án của bạn, để nó phân loại và sửa các vi phạm hiển nhiên, rồi cho một con người rà soát phần còn lại. Vài phút quét rẻ hơn nhiều so với việc phát hiện ra lỗ hổng qua một lá thư của cơ quan quản lý.
Đang xây dựng với hơn một agent? Tải AgentsRoom để điều khiển Claude Code, Codex và nhiều hơn nữa từ một khoang lái duy nhất, xem mỗi cái hỗ trợ những gì trong ma trận tương thích nhà cung cấp, và đọc cách giữ nhịp độ nhanh trong vibe coding mà không chết chìm.
Tải AgentsRoom
Chạy các agent AI của bạn (Claude, Codex, Antigravity CLI, OpenCode, Aider) trên tất cả dự án, trong một cửa sổ duy nhất.
Ứng dụng đồng hành: theo dõi agent khi đi đường
Sử dụng Claude, Codex, Antigravity CLI hoặc nhà cung cấp AI khác.
Gửi lỗi và yêu cầu thẳng vào backlog công khai của bạn.
Một cái nhìn về AgentsRoom đang hoạt động.