
Claude Code 2.1.296 อุด permission drift และ secret redaction หลายทาง
Anthropic ออก Claude Code 2.1.296 วันที่ 9 ตุลาคม 2026 พร้อมรายการแก้ยาว แต่แกนด้านความปลอดภัยชัดมาก: managed hook ที่ปฏิเสธ tool ต้องหยุดเฉพาะ call ไม่ใช่จบทั้ง turn, MCP ที่ปิดในโฟลเดอร์ต้องไม่ฟื้นหลังเปลี่ยน directory, คำสั่งที่เล่นกับ BASH_ARGV0 ต้องถาม approval และ secret redaction ต้องไม่หลุดค่าบางรูปแบบใน transcript/debug log ครับ
ผมตรวจ immutable release, metadata ของ npm 2.1.296, security documentation และ public advisory แบบอ่านอย่างเดียว ไม่ติดตั้ง package, ไม่รัน CLI/plugin/MCP และไม่ให้เครื่องมือแตะ credential หรือ private network รุ่นนี้ ผ่านเกณฑ์คัดกรอง ณ วันที่ตรวจ 2026-10-11 สำหรับ rollout แบบ pin, canary และทดสอบ managed policy ขององค์กรซ้ำ
สรุป 30 วินาที
- 2.1.296 แก้ managed
PreToolUse/prompt hook ให้การ deny ไม่เปลี่ยน flow เกินเจตนา และแก้PostToolUseให้updatedMCPToolOutputถูกใช้ใน session ที่เคยพลาด - แก้ folder
.mcp.jsonหรือ plugin MCP ที่ปิดไว้ไม่ให้เริ่มเองหลังเปลี่ยน directory หรือ reload plugin - แก้ permission check ที่เคย auto-approve บางคำสั่งเมื่อกำหนด
BASH_ARGV0; รุ่นนี้ให้ถาม approval - แก้ secret redaction ใน shared transcript/debug log สำหรับค่าบางรูปแบบที่ตาม key ไม่มี value และ JSON ใน shell string
- Chrome/browser actions ใน VS Code เปลี่ยนให้ถามทุก session จนกว่าจะ allow site สำหรับ session นั้น
- npm integrity ที่ตรวจคือ
sha512-OX/k/rpcthMqnFKOWcpNcbiLsMKtAjLOpQNJHlYiDCFUznWCIwdRTyl/p9SdHVrsrzZuPMCNqZjnpakIni6upw==; shasum คือc07c326b6fdff6f1c20c8a1b863a9af7fa395ba5 - public advisory ไม่พบ high/critical ที่ระบุว่ากระทบรุ่นนี้โดยไม่มี mitigation ณ เวลาตรวจ แต่ changelog จำนวนมากสะท้อนว่าพื้นที่สิทธิ์ยังซับซ้อนและต้อง regression test เอง
ทำไมเรื่องนี้เกี่ยวกับคุณ
AI agent ไม่ได้เสี่ยงเฉพาะตอนรัน rm หรือ push code สิทธิ์อาจ drift ตอนเปลี่ยน directory, reload plugin, resume session หรือสลับ background/cloud runner เหตุการณ์เหล่านี้เกิดระหว่างงานยาวและผู้ใช้มักไม่สังเกต ถ้า MCP ที่เคยปิดกลับมาเอง tool catalog และปลายทาง network ก็เปลี่ยนโดยไม่มี decision ใหม่
Secret redaction ก็คล้ายกระดาษคาร์บอนในร้านถ่ายเอกสาร ต่อให้ต้นฉบับถูกเก็บดี สำเนาที่แชร์หรือ debug log ยังรั่วได้ การแก้ pattern เพิ่มไม่ได้แปลว่า redactor ครอบคลุม secret ทุกชนิด แต่บอกว่าทีมต้องถือ transcript, hook output และ telemetry เป็นข้อมูลอ่อนไหวตั้งแต่ต้น ไม่ใช่หวังพึ่ง regex ชั้นสุดท้าย
สำหรับองค์กรไทยที่ใช้ managed settings จุดสำคัญคือ policy ต้องทำงานเหมือนเดิมใน terminal, headless runner, VS Code และ desktop gateway ถ้าแต่ละ surface ตีความ deny/allow ต่างกัน ผู้ใช้จะจำกฎจากหน้าหนึ่งแล้วเผลอคาดหวังกับอีกหน้าหนึ่ง
ทำงานยังไง: hook, permission และ tool lifecycle
Hook คือโค้ดนโยบายที่แทรกก่อนหรือหลัง event เช่นก่อนเรียก tool หรือหลัง MCP คืนผล PreToolUse สามารถปฏิเสธ call ได้ แต่ flag continue: false เคยทำให้ turn จบไปด้วย ทั้งที่เจตนาคือห้าม action แล้วให้โมเดลอธิบาย/เลือกทางใหม่ รุ่นนี้แยก outcome สองชั้นให้ชัดขึ้น ส่วน PostToolUse.updatedMCPToolOutput ต้องแทนผลที่ส่งต่อจริง มิฉะนั้น sanitizer หรือ policy transform ที่องค์กรตั้งไว้จะไม่มีผลในบาง session
Folder MCP และ plugin MCP เป็น capability ที่ผูกกับ context ของ project เมื่อผู้ใช้ปิดสำหรับโฟลเดอร์นั้น สถานะปิดต้องตาม session หลัง cd หรือ reload ไม่ใช่ถูก lifecycle event ปลุกกลับมา เปรียบเหมือนป้ายปิดแก๊สของห้องครัว ต่อให้ย้ายโต๊ะหรือเปิดสมุดรายการใหม่ วาล์วไม่ควรเปิดเอง
BASH_ARGV0 เป็นตัวแปร shell ที่เปลี่ยนค่า argument ศูนย์หรือบริบทการตีความบางคำสั่ง Permission parser ที่พิจารณาแค่รูปทรงคำสั่งอาจเห็น assignment ธรรมดาแล้ว auto-approve ทั้งบรรทัด รุ่นนี้บังคับ prompt ในกรณีที่เคยเล็ดลอด แต่ parser-based approval ยังต้องรับมือ quoting, expansion, subshell และ interpreter อื่น จึงไม่ใช่ sandbox แท้
ฝั่ง browser รุ่นนี้ให้ Chrome action ขออนุญาตทุก session และ allow site ได้แค่ session นั้น การผูก grant กับอายุสั้นลด ambient authority แต่ผู้ใช้ยังต้องดู origin จริง เพราะหน้าเว็บสามารถมี prompt injection และ action บน session ที่ login แล้วอาจเปลี่ยนข้อมูลภายนอกได้ทันที
หลักฐานที่ตรวจ
GitHub ระบุ release เป็น immutable และผูก tag v2.1.296 กับ commit ทางการ Changelog ระบุ fix เรื่อง managed hooks, disabled MCP lifecycle, BASH_ARGV0, secret redaction, Chrome checks และ Windows Git Bash อย่างชัด Metadata npm ตรงกับชื่อแพ็กเกจทางการและมี integrity/shasum ข้างต้น การตรวจ registry ยืนยัน tarball ที่ registry อ้าง ไม่ใช่ reproducible build หรือ audit source ทุก dependency
เอกสาร security อธิบาย permission model, sandbox และแนวทาง trust boundary ส่วน public advisory listing ไม่แสดง known high/critical ที่บอกว่ารุ่น 2.1.296 ยังได้รับผลโดยไม่มี mitigation ณ เวลาตรวจ อย่างไรก็ดี plugin marketplace, MCP server, hook command และ self-hosted runner มี publisher/dependency ของตนเอง ไม่ถูกทำให้ปลอดภัยเพียงเพราะ CLI หลักอัปเดต
รายการ release ยังระบุ Windows fix ที่ rm -rf /c/Users/<name> ใน Git Bash ไม่ถามเมื่ออยู่ bypass permissions mode รุ่นนี้แก้กรณีดังกล่าว แต่คำว่า bypass permissions แปลว่า environment ตั้งใจข้ามด่านบางชั้นอยู่แล้ว ทีมไม่ควรใช้ mode นี้เป็นค่าเริ่มต้นหรือให้เข้าถึง home directory จริง
Install/update path ถูกตรวจผ่าน release และ npm metadata แบบอ่านอย่างเดียว ผมไม่ได้รัน npm install, native installer, plugin marketplace หรือ remote script ไม่ได้เปิด gateway/cloud runner และไม่ได้ทดสอบกับ repository จริงหรือ production credential
เงินและผลกระทบ
Fix ที่ทำให้ deny hook ไม่ฆ่าทั้ง turn อาจลด token และเวลาที่เสียจากการเริ่ม session ใหม่ ส่วน secret redaction ลดโอกาส incident จาก log sharing แต่ retention, access control และ deletion ของ transcript ยังมีต้นทุนที่ต้องบริหาร แก้ regex อย่างเดียวไม่แทน data governance
การเพิ่ม description/instruction budget ของ MCP จาก 2,048 เป็น 4,096 ตัวอักษรในรุ่นเดียวกันช่วยให้ tool อธิบายข้อจำกัดได้มากขึ้น แต่เพิ่ม prompt surface และ token usage Tool description เป็น untrusted metadata เช่นเดียวกับผลลัพธ์ ต้อง pin server และตรวจการเปลี่ยน catalog ก่อน rollout
องค์กรที่ใช้ self-hosted runner หรือ gateway ควรเผื่อเวลาทดสอบ concurrency, auth และ managed policy เพราะ changelog แตะหลาย surface การรีบอัปทั้ง fleet อาจทำให้ regression ที่ไม่เกี่ยวกับ security กลายเป็น downtime
สิ่งที่ยังไม่ชัดและแหล่งข่าวพูดไม่ตรงกัน
Release บอกว่าหลาย bypass/permission drift ถูกแก้แล้ว ขณะที่ security documentation เน้นว่าความปลอดภัยต้องอาศัย permission, sandbox และผู้ใช้ร่วมกัน ทั้งสองไม่ได้ขัดกัน แต่ changelog อธิบาย bug เฉพาะ ส่วนเอกสารไม่รับประกันว่าพฤติกรรมทุก shell/plugin จะถูกครอบคลุม
ยังไม่ชัดจาก release summary ว่า secret pattern ใดทั้งหมดอยู่ใน redaction corpus และ custom token format ขององค์กรจะถูกจับหรือไม่ ทีมจึงต้องทดสอบ synthetic secret ที่ไม่ใช่ของจริงและตรวจทั้ง shared transcript, debug log, telemetry exporter และ hook stderr
ไม่มีข้อมูลใน release note ว่า disabled MCP fix ครอบคลุม plugin ที่สร้าง subprocess ของตนเองหลังปิดหรือไม่ และไม่มีหลักฐานว่า browser approval ทุก session ป้องกันผู้ใช้อนุมัติผิด site ระหว่าง phishing ได้
วิธีใช้ให้ปลอดภัยขึ้น
- pin 2.1.296 ใน lock/deployment manifest และตรวจ integrity ของ tarball ที่ใช้จริง
- canary ใน worktree/repository ที่ไม่มี secret และใช้ sandbox แบบ workspace-write พร้อม network deny-by-default
- ทดสอบ managed hook: deny แล้ว turn ต้องอยู่, output transform ต้องถูกส่งต่อ, timeout/error ต้อง fail closed ตาม policy
- ปิด folder/plugin MCP แล้วทดสอบ
cd, reload, resume และ headless start ว่าไม่ฟื้นเอง - ใช้ synthetic canary secret ตรวจ redaction ทุก sink แต่ห้ามใส่ credential จริงลง test log
- ห้ามใช้ bypass permissions ในงานทั่วไป บังคับ approval สำหรับ shell, browser, push, publish, deploy และ destructive action
- pin plugin/MCP marketplace และตรวจ publisher, tag, checksum, advisory กับ default permission แยกทุกตัว
- จำกัด transcript/debug retention, เข้ารหัส, แยกผู้ดู และเตรียม revoke/rotate หากพบ leakage
แล้วเราควรทำอะไร
ผู้ใช้เดี่ยวที่ใช้ MCP, hook หรือ shared transcript ควรให้ความสำคัญกับ patch นี้มากกว่าผู้ใช้ chat-only แต่ยังต้องทดลองในโปรเจกต์จำลองก่อน ทีมองค์กรควรนำ policy regression suite มารันกับ terminal, headless และ IDE อย่างน้อยหนึ่งรอบ แล้วค่อย rollout แบบกลุ่มเล็ก
ถ้าระบบปัจจุบันต้องพึ่ง bypass permissions หรือ hook ที่คืนผลไม่ชัด ให้แก้ policy debt ก่อนเพิ่ม autonomy เพราะ release นี้ทำให้ด่านสอดคล้องขึ้น แต่ไม่ได้ทำให้ config ที่เปิดกว้างกลายเป็น least privilege
ความเสี่ยงคงเหลือ
Prompt injection ยังผ่านไฟล์, webpage, MCP, plugin และ hook output ได้ Permission prompt ยังถูก social-engineer ให้ดูเหมือนงานปกติ Browser session อาจ login บัญชีสำคัญอยู่และการอนุมัติครั้งเดียวสร้าง side effect ภายนอก Transcript/log ยังรั่ว secret รูปแบบใหม่หรือข้อมูลส่วนบุคคลที่ไม่ถูกนิยามว่า secret
Managed settings อาจถูก config ผิด, plugin อาจมี updater/dependency ที่เสี่ยง และ self-hosted runner อาจถือ cloud identity กว้างเกินไป Public advisory เป็นข้อมูล ณ วันตรวจ ไม่ปิด zero-day รุ่นนี้จึงผ่าน minimum gate แบบมีเงื่อนไข ไม่ใช่การรับรองว่าไร้ช่องโหว่
Recap
- 2.1.296 แก้ deny hook, MCP lifecycle, shell approval และ redaction หลายจุด
- pin npm integrity และแยกตรวจ artifact ช่องทางอื่น
- regression-test hook/MCP หลัง
cd, reload, resume และ headless - ใช้ synthetic secret ตรวจทุก log sink
- ไม่ใช้ bypass permissions เป็นค่าเริ่มต้น
- สถานะคือผ่านเกณฑ์คัดกรอง ณ วันที่ตรวจ พร้อม residual risks