Claude Code 2.1.221 ช่วยให้ผู้ใช้ Linux และ WSL2 สามารถปกปิด (mask) ไฟล์ข้อมูลประจำตัว (credential files) ก่อนที่คำสั่งใน sandbox จะสามารถอ่านได้ ฟีเจอร์นี้จะส่งสำเนา sentinel ที่ไม่มีอันตรายให้กับคำสั่ง และจะสลับเอาความลับจริงมาใส่ให้ก็ต่อเมื่อมีการส่งคำขอที่ได้รับอนุญาตผ่าน proxy เท่านั้น
ขั้นตอนการทำงานของการปกปิดข้อมูล (masking flow)
- Sentinel copy – เมื่อไฟล์ถูกกำหนดให้มีการปกปิด Claude Code จะสร้างไฟล์สำเนาที่มีข้อความ placeholder แทนที่ความลับจริง
- Proxy swap – Sandbox จะทำงานอยู่หลัง proxy ที่ทำหน้าที่ TLS termination หาก sandbox ส่งคำขอที่ตรงกับรายการใน
injectHostsตัว proxy จะแทนที่ placeholder ด้วย token จริงก่อนที่คำขอจะออกจากเครื่อง - Error handling – หาก regex ที่ใช้ดึงข้อมูลไม่พบความลับ sandbox สามารถสั่งยกเลิกการทำงานได้ทันที แทนที่จะดำเนินการต่อโดยที่ไฟล์ต้นฉบับยังคงถูกเปิดเผยอยู่
วิธีการนี้ใช้งานได้เฉพาะบน Linux และ WSL2 เท่านั้น ส่วน macOS ในปัจจุบันจะตั้งค่าเริ่มต้นเป็น hard deny ซึ่งหมายความว่า sandbox จะไม่สามารถอ่านไฟล์ได้เลย
รายการตรวจสอบเพื่อการใช้งานอย่างปลอดภัย (Checklist for a safe rollout)
ตรวจสอบเวอร์ชัน
- ยืนยันว่าคุณกำลังใช้งาน Claude Code 2.1.221 หรือใหม่กว่า การตรวจสอบจาก version string ใน terminal เป็นวิธีเดียวที่เชื่อถือได้ เนื่องจากไฟล์ package lock อาจทำให้เข้าใจผิดได้
ใช้ token แบบใช้แล้วทิ้ง
- อย่าทดลองกับ GitHub หรือ cloud credentials หลักของคุณ ให้สร้าง token ที่มีอายุการใช้งานสั้นๆ ซึ่งชี้ไปยัง endpoint แบบ "canary" ที่ไม่มีอันตราย และให้ยกเลิก (revoke) ทันทีหากเกิดข้อผิดพลาด
เลือกโหมดการปกปิดที่เหมาะสม
| โหมด | เมื่อใดควรใช้งาน |
|---|---|
| File Deny | บล็อกโดยเด็ดขาด; ทุกความพยายามในการอ่านไฟล์จะล้มเหลว |
| Whole-File Mask | ไฟล์มีข้อมูลความลับเพียงอย่างเดียว (เช่น API key แบบ plain-text) |
| Structured Mask | ไฟล์มีการผสมข้อมูลความลับกับข้อมูลอื่น (JSON, YAML, .netrc) ให้ใช้โหมด extract และใช้ regex ที่ดึงข้อมูลความลับมาไว้ใน group 1 วิธีนี้จะช่วยให้ไวยากรณ์ (syntax) รอบข้างยังคงถูกต้องสำหรับโปรแกรมฝั่ง client |
ตั้งกฎการจัดการข้อผิดพลาดที่เข้มงวด
- ตั้งค่า
onExtractNoMatchเป็น error หาก regex ไม่ตรงกับข้อมูล sandbox จะหยุดทำงาน การปล่อยไว้ที่ค่าเริ่มต้นคือ warn อาจทำให้ไฟล์ต้นฉบับหลุดรอดไปได้โดยไม่รู้ตัว
เปิดใช้งาน TLS termination
- Proxy จะต้องทำ TLS termination เพื่อทำการสลับข้อมูล หากไม่มี TLS termination ตัว proxy จะไม่สามารถมองเห็น request payload ได้ และการแทนที่ข้อมูลจะไม่เกิดขึ้น
จำกัดขอบเขตของ host
- ระบุ hostname ที่ชัดเจนจาก
allowedDomainsลงในinjectHostsหลีกเลี่ยงการใช้ wildcard เช่น*.example.comเพราะรูปแบบที่กว้างเกินไปจะเพิ่มพื้นที่การโจมตี (attack surface) และทำให้จุดประสงค์ของการปกปิดข้อมูลเสียไป
ตรวจสอบผลลัพธ์
- ตรวจสอบ logs, process arguments และข้อความแสดงข้อผิดพลาดว่ามี token จริงปรากฏขึ้นหรือไม่ ค่า sentinel ควรเป็นค่าเดียวที่ปรากฏในข้อมูลเหล่านั้น
ข้อจำกัดที่ควรระลึกไว้
การปกปิดข้อมูลจะช่วยรักษาความปลอดภัยของ token เฉพาะ จากมุมมองของระบบไฟล์ (file-system view) ของคำสั่งใน sandbox เท่านั้น แต่มัน ไม่ได้ ป้องกันไม่ให้คำสั่งทำการเรียกเครือข่าย (network calls) ตามใจชอบ และไม่ได้ป้องกันเครื่องมือในตัวของ Claude ที่อาจมีสิทธิ์การเข้าถึงระดับสูง (privileged access)
สรุป
ฟีเจอร์การปกปิดข้อมูลประจำตัว (credential-masking) ของ Claude Code 2.1.221 ช่วยให้นักพัฒนาบน Linux และ WSL2 มีวิธีที่ใช้งานได้จริงในการเก็บความลับให้อยู่พ้นจากกระบวนการใน sandbox
