Claude Code v2.1.288 ปิดช่อง rm อันตรายที่ซ่อนใน bash -c แล้วรันได้โดยไม่ถามใน bypassPermissions เปลี่ยน PreToolUse hook ที่จับคู่พลาดจาก "ข้าม" เป็น "บล็อก" และให้ -p ทำงานต่อหลัง API timeout
2 ต.ค. 2026 (20:19 UTC) Anthropic ปล่อย Claude Code v2.1.288 ซึ่งออกมาหลัง 2.1.287 ที่เปิด Mods เพียงวันเดียว release notes ยาวกว่า 80 บรรทัด ส่วนใหญ่เป็นการแก้ resume, plugin และ cloud session แต่มีอยู่ 3 บรรทัดที่คนใช้ bypassPermissions, shell allow rule หรือใช้ hook เป็น guardrail ควรอ่านก่อน เพราะทั้งสามจุดเป็นกรณีที่ตัวตรวจสิทธิ์ ปล่อยคำสั่งผ่านไปเงียบ ๆ แทนที่จะถาม
นอกจากนี้ยังมีการแก้ที่ช่วยงานแบบ headless (claude -p) และ subagent ให้ทำงานต่อได้หลังเจอ API timeout กลางคำตอบ และฝั่ง Claude API หน้า model deprecations ก็เพิ่งระบุวันปลด Claude Sonnet 4.5 ไว้เมื่อ 30 ก.ย. ด้วย
3 จุดที่ตัวตรวจสิทธิ์เคยปล่อยผ่านเงียบ ๆ
1. rm อันตรายที่ห่อด้วย bash -c / sh -c — release notes เขียนว่า “Fixed a dangerous rm (such as one on / or the home directory) inside a bash -c or sh -c script running without a prompt in bypassPermissions mode or under a shell allow rule” อ้างถึง issue #96300 ที่เปิดไว้ตั้งแต่ 23 ก.ย. ผู้รายงานทดสอบบน 2.1.280 (Windows 10 + Git Bash) แล้วพบว่า ใน bypass mode การลบ working directory ถูกหยุดทุกรูปแบบ ไม่ว่าจะเป็น rm -rf <cwd>, (rm -rf <cwd>), { rm -rf <cwd>; } หรือ echo $(rm -rf <cwd>) ยกเว้น sh -c "rm -rf <cwd>" และ bash -c 'rm -rf <cwd>' ที่รันจริงและลบไฟล์ไปแล้ว
สาเหตุตาม issue คือตัวตรวจแกะ subshell, brace group และ command substitution ก่อนจะดูเฉพาะคำสั่งที่โปรแกรมคือ rm/rmdir แต่ใน sh -c "..." โปรแกรมคือ sh ส่วน rm อยู่ใน string argument ตัวตรวจจึงมองไม่เห็น ผู้รายงานชี้ว่าใน bypass mode นี่คือ prompt เดียว ที่คั่นอยู่ก่อนลบ working directory, home หรือ system directory และหมายเหตุไว้เองว่า “No check on the command text can cover every wrapper. A script file or python -c will always get past it.” แปลว่าการแก้ครั้งนี้ปิดเฉพาะ wrapper สองแบบที่โมเดลเขียนเองบ่อยในงานปกติ ไม่ได้ทำให้ bypass mode ปลอดภัยขึ้นโดยรวม
2. PreToolUse และ PermissionRequest hook ที่ถูกข้าม — “Fixed PreToolUse and PermissionRequest hooks being skipped when matching them failed or the tool’s input could not be serialized to JSON; the call is now blocked” ก่อนหน้านี้ถ้าการจับคู่ hook ล้มเหลว หรือ input ของ tool แปลงเป็น JSON ไม่ได้ hook จะไม่ถูกเรียกแต่ tool call ยังรันต่อ ตอนนี้เปลี่ยนเป็น fail-closed คือบล็อก call นั้นไว้แทน
3. การกำหนดค่า BASHPID แบบ arithmetic — “Fixed Bash tool permission check to prompt before a BASHPID assignment whose value the shell would evaluate as arithmetic, instead of allowing it silently” release notes ไม่ได้อธิบายว่าช่องนี้ใช้โจมตีได้อย่างไร จึงสรุปได้แค่ว่าเป็นอีกรูปแบบคำสั่งที่เคยผ่านไปโดยไม่ถาม และตอนนี้ต้องขออนุมัติแล้ว ต่อเนื่องจากที่ 2.1.271 เคยแก้จุดที่ตัวตรวจอ่านคำสั่ง Bash ผิดไป 4 จุด
งาน headless และ subagent ทนขึ้น
- API timeout กลางคำตอบ — “non-interactive sessions and subagents now continue from the partial response, and thinking-only responses are retried” เดิม turn จะล้มทั้ง turn
CLAUDE_CODE_RETRY_WATCHDOG— เดิม session ที่รันทิ้งไว้อาจ retry อยู่หลายชั่วโมงหลัง stream ยาว ๆ ล้ม ตอนนี้จะ stream ใหม่และ “gives up after three timeouts”- SIGTERM — session แบบ
-p/SDK เคยไม่สนใจ SIGTERM ในบางครั้งเมื่อ supervisor อย่างtimeoutหรือ systemd ส่ง SIGCONT มาพร้อมกัน แก้แล้ว - “Prompt is too long” — บทสนทนายาวที่ควร auto-compact แต่กลับล้ม เพราะคำตอบล่าสุดรายงาน token usage เป็นศูนย์ แก้แล้ว
/loginบอกว่าสำเร็จทั้งที่บันทึก credential ไม่ได้ — ตอนนี้แสดงข้อผิดพลาดและเสนอให้ลองใหม่
ของใหม่ที่ใช้ได้ทันที
CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS— สำหรับคนที่ใช้ผ่าน Mantle หรือ gateway ที่ไม่รับ structured outputs ซึ่งเคยทำให้ชื่อ session, memory recall และ prompt hook ล้ม/code-review --max-findings <n>|all— ปรับจำนวน finding ให้มากหรือน้อยกว่าค่าปกติ ระบบจะจำค่าที่ตั้งไว้จนกว่าจะสั่ง--max-findings default- ขอ re-authenticate เมื่อ MCP server ขอ OAuth scope เพิ่ม ระหว่าง tool call
- กู้ prompt ที่ลบด้วย Ctrl+C — กด ↑ ที่ช่องว่างเพื่อเอา draft กลับมา รวมถึงข้อความและรูปที่ paste ไว้
- ข้อควรรู้สำหรับ auto mode — classifier ฝั่ง client จะ ไม่สนใจ
ANTHROPIC_DEFAULT_SONNET_MODELที่ pin เป็น Sonnet 5.5 หรือ Opus 5.5 และจะใช้ Claude Sonnet 5 แทน ส่วน time limit ของ background command ตอนนี้ใช้เฉพาะ session ที่ไม่มีคนเฝ้า (-p, Agent SDK, CI, cloud)
ฝั่ง API: Sonnet 4.5 จะปลด 30 พ.ย. 2026
หน้า Model deprecations ระบุว่า Anthropic แจ้งผู้ใช้ Claude Sonnet 4.5 เมื่อ 30 ก.ย. 2026 และจะปลด claude-sonnet-4-5-20250929 ในวันที่ 30 พ.ย. 2026 โดยแนะนำให้ย้ายไป claude-sonnet-5-5 (ดูข่าวเปิดตัว Sonnet 5.5 ซึ่งมี breaking change เรื่องการปิด thinking ที่ต้องทดสอบก่อนย้าย) เอกสารเขียนไว้ชัดว่า “Requests to models past the retirement date will fail.” และวันที่นี้ใช้กับแพลตฟอร์มที่ Anthropic ดูแลเอง (Claude API, Claude Platform on AWS, Microsoft Foundry) ส่วน Amazon Bedrock และ Google Cloud กำหนดกำหนดการของตัวเอง
มุมมอง AI Curator
ทั้งสามจุดในส่วนแรกมีลักษณะเดียวกัน คือ ตัวตรวจทำงานแบบ fail-open เจอสิ่งที่ไม่เข้าใจก็ปล่อยผ่าน การแก้ hook ให้ “จับคู่ไม่ได้ = บล็อก” จึงสำคัญกว่าที่เห็นในบรรทัดเดียว เพราะทีมที่ใช้ PreToolUse hook เป็น guardrail ของตัวเอง (ห้ามแตะ production, ห้าม push ไป remote แปลก ๆ) เพิ่งได้รับการรับประกันว่า hook จะไม่หายไปเงียบ ๆ ในกรณีขอบ ข้อเสียคืออาจเจอ tool call ที่เคยผ่านแต่ตอนนี้ถูกบล็อก ถ้า matcher ของคุณเขียนไว้หลวม ๆ ควรลองรันงานปกติหลังอัปเดตแล้วดูว่ามี call ไหนถูกบล็อกโดยไม่ตั้งใจหรือไม่
เรื่อง bash -c ควรอ่านคู่กับคำยอมรับในตัว issue ว่าการตรวจข้อความคำสั่ง ไม่มีทางครอบคลุม wrapper ทุกแบบ นี่เป็นครั้งที่สี่ที่ตัวตรวจ rm ต้องตามแก้ wrapper ใหม่ (issue อ้างถึง 2.1.208, 2.1.261 และ 2.1.273) บทเรียนสำหรับคนที่รัน bypassPermissions ใน CI หรือบนเครื่อง dev คือ อย่าถือว่าตัวตรวจ rm เป็นเกราะ ควรรันใน container หรือ VM ที่ลบทิ้งได้ หรือเปิด sandbox แทน โดยเฉพาะเมื่อ Mods ใน 2.1.287 ก็อนุมัติ tool call แทนผู้ใช้ได้แล้ว พื้นที่ที่ต้องคิดเรื่องความปลอดภัยจึงกว้างขึ้นอีก
สิ่งที่ควรทำ: อัปเดตเป็น 2.1.288 แล้วทดสอบ hook ที่มีอยู่ ถ้ารัน claude -p ผ่าน cron หรือ systemd เพื่อทำงานอัตโนมัติ เวอร์ชันนี้ช่วยเรื่อง timeout และ SIGTERM ได้โดยตรง และไล่ grep หา claude-sonnet-4-5-20250929 ในโค้ดตั้งแต่วันนี้ เพราะเหลือเวลาไม่ถึงสองเดือน
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog