Tóm tắt
Bài viết phân tích Claude Code 2.1.196 và phát hiện client có thể thay đổi rất nhỏ trong system prompt khi người dùng đặt ANTHROPIC_BASE_URL. Hai thay đổi chính là dấu nháy trong Today's và dấu phân tách ngày, đủ để mã hóa một tín hiệu mà mắt người gần như không nhận ra.
Dev nên quan tâm vì coding agent thường có quyền rất rộng: đọc repo, chạy shell, sửa file, cài package, thậm chí push commit. Khi tool ở vị trí nhạy cảm như vậy, hành vi ẩn trong prompt cần được soi kỹ, kể cả khi mục tiêu có thể chỉ là phát hiện reseller hoặc gateway không được phép.
Phát hiện chính
Tác giả kiểm tra binary Claude Code đã ký bởi Anthropic và thấy một hàm xử lý chuỗi ngày trong system prompt. Bình thường prompt chứa ngày ở dạng quen thuộc, nhưng trong một số điều kiện client có thể đổi:
- Dấu nháy trong
Today'ssang các ký tự Unicode nhìn gần giống nhau. - Dấu phân tách ngày từ
-sang/.
Trigger quan trọng là biến môi trường ANTHROPIC_BASE_URL, tức cấu hình cho Claude Code gọi một API base URL khác endpoint mặc định. Sau đó logic kiểm tra thêm timezone hệ thống và hostname của base URL.
Các điều kiện được nhắc đến gồm:
- Timezone là
Asia/ShanghaihoặcAsia/Urumqi. - Hostname nằm trong một danh sách domain được decode từ base64/XOR.
- Hostname chứa keyword liên quan đến một số AI lab.
Kết quả phân loại được mã hóa vào một câu trông vẫn như English bình thường. Người dùng đọc prompt có thể không thấy gì lạ, nhưng request thô gửi tới model chứa marker.
Vì sao việc này gây tranh cãi
Cách giải thích nhẹ nhất là Anthropic muốn phát hiện proxy, reseller, gateway không chính thức, hoặc pipeline dùng Claude Code cho distillation. Về mặt policy, nhà cung cấp model có quyền bảo vệ dịch vụ của họ.
Vấn đề nằm ở cách triển khai. Thay vì gửi một telemetry field rõ ràng hoặc document behavior trong release notes, client lại giấu tín hiệu trong dấu câu của system prompt. Với một developer tool yêu cầu quyền truy cập sâu vào máy local, kiểu thiết kế này làm giảm niềm tin vào những phần còn lại.
Tác giả cũng chỉ ra rằng bypass khá dễ: đổi hostname, đổi timezone, patch binary hoặc wrap process. Vì vậy tín hiệu này có thể không chặn được adversary nghiêm túc, nhưng lại fingerprint được những team đang dùng gateway nội bộ hoặc setup nghiên cứu hợp pháp.
Cách dev nên xử lý
Nếu bạn dùng Claude Code theo cấu hình mặc định, endpoint chính thức và không set ANTHROPIC_BASE_URL, bài viết cho rằng path này nhiều khả năng không kích hoạt.
Nếu team dùng gateway riêng, nên làm vài việc thực tế:
- Kiểm tra biến môi trường và wrapper script đang chạy Claude Code.
- Ghi rõ endpoint nào được phép dùng trong policy nội bộ.
- Đánh giá lại assumption rằng system prompt gửi đi chỉ gồm text hiển thị trong client.
- Theo dõi phản hồi chính thức hoặc release note từ vendor nếu hành vi này thay đổi.
Kết luận ngắn: developer tools có thể enforce terms, nhưng phần nhạy cảm nên được làm theo cách nhàm chán, explicit, và audit được.