Claude Code 2.1.221 ช่วยให้ผู้ใช้ Linux และ WSL2 สามารถปกปิด (mask) ไฟล์ข้อมูลประจำตัว (credential files) ก่อนที่คำสั่งใน sandbox จะสามารถอ่านได้ ฟีเจอร์นี้จะส่งสำเนา sentinel ที่ไม่มีอันตรายให้กับคำสั่ง และจะสลับเอาความลับจริงมาใส่ให้ก็ต่อเมื่อมีการส่งคำขอที่ได้รับอนุญาตผ่าน proxy เท่านั้น

ขั้นตอนการทำงานของการปกปิดข้อมูล (masking flow)

  1. Sentinel copy – เมื่อไฟล์ถูกกำหนดให้มีการปกปิด Claude Code จะสร้างไฟล์สำเนาที่มีข้อความ placeholder แทนที่ความลับจริง
  2. Proxy swap – Sandbox จะทำงานอยู่หลัง proxy ที่ทำหน้าที่ TLS termination หาก sandbox ส่งคำขอที่ตรงกับรายการใน injectHosts ตัว proxy จะแทนที่ placeholder ด้วย token จริงก่อนที่คำขอจะออกจากเครื่อง
  3. 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