Claude Code 2.1.216: อุด 'worktree' รั่ว — subagent แอบเขียน git ออกนอกกล่อง และ symlink ที่ .claude เบนไฟล์ออกนอกโปรเจกต์
เมื่อ 20 กรกฎาคม 2026 (22:14 UTC) Anthropic ปล่อย Claude Code 2.1.216 ออกมา และถ้าอ่าน changelog เรียงลงมา จะเห็นว่าเบื้องหลังรายการยิบย่อยหลายสิบบรรทัด มี ธีมเดียวที่หนักแน่น — การซ่อมเส้นแบ่ง “การแยกตัว” (isolation boundary) ของ agent ให้กลับมาแน่นหนา
นี่คือรีลีสที่มาถูกจังหวะพอดี หลังจากรายงาน “สัปดาห์แห่งการหนีออกจาก sandbox” ของ Pillar Security ที่เราเขียนถึงเมื่อเช้าวันเดียวกัน — ซึ่งชี้ว่าช่องโหว่คลาสใหม่ของ AI coding agent คือ “agent เขียนไฟล์ไว้ที่หนึ่ง แล้วเครื่องมือที่เชื่อถือได้อีกตัวไปหยิบไปรัน/ใช้นอก sandbox” พอดูรายการที่ 2.1.216 อุด จะเห็นว่าหลายจุดเป็นคลาสเดียวกันเป๊ะ
worktree ไม่ใช่แค่ความสะดวก — มันคือเส้นแบ่งความปลอดภัย
Claude Code รองรับการรัน background agent ใน git worktree แยก เพื่อให้ agent หลายตัวแก้โค้ดขนานกันได้โดยไม่ชนกัน แนวคิดคือ worktree = กล่องแยกของแต่ละ agent แต่ 2.1.216 ยอมรับกลาย ๆ ว่ากล่องนั้นมีรอยรั่วหลายจุด:
- subagent ใน worktree เบน git กลับ checkout หลัก — แก้ช่องที่ subagent ซึ่งถูกจำกัดให้อยู่ใน worktree ของตัวเอง สามารถ redirect คำสั่ง git กลับไปยัง checkout ที่ใช้ร่วมกันได้ผ่าน
git -C,--git-dirหรือ environment variableGIT_DIR/GIT_WORK_TREEพูดง่าย ๆ คือกำแพงบอกว่า “อยู่ในนี้นะ” แต่ตัว flag ของ git เองเดินทะลุกำแพงออกไปเขียนที่อื่นได้ - session ไปโผล่ใน worktree ที่ค้างของโปรเจกต์อื่น — แก้กรณีที่ working directory ไม่ตรงกับโปรเจกต์ที่เลือก แล้ว session ดันไปลงใน worktree ที่เหลือค้างจากโปรเจกต์อื่น
- background session ที่ worktree ไม่มี git repo เลยลบไม่ได้ — กลายเป็นขยะที่ค้างระบบ
claude daemon stop --anyอาจฆ่าโปรเซสอื่นที่ไม่เกี่ยว ผ่าน lockfile ของ daemon เก่าที่ค้างอยู่
จุดร่วมของทั้งกลุ่มนี้ชัดมาก: เมื่อคุณให้ agent รันอัตโนมัติในกล่องแยก ตัวกล่องต้องกันได้จริง ไม่ใช่กันได้แค่ในกรณีปกติ แล้วรั่วทันทีที่มี flag หรือ path แปลก ๆ เข้ามา
symlink: ทางลัดที่เบนไฟล์ออกนอกโปรเจกต์
อีกกลุ่มที่น่าสนใจเป็นพิเศษ เพราะมันคือคลาสเดียวกับที่ Pillar เตือน — การเขียนไฟล์ตาม symlink ไปโผล่ที่ที่ไม่ควร:
- แก้ช่องที่ การเซฟ workflow และการเขียน scheduled-task เดินตาม symlink ตรง
.claudeซึ่งอาจเบนการเขียนออกไปนอกโฟลเดอร์โปรเจกต์ทั้งดุ้น /rewindไม่เดินตาม symlink หรือ hardlink อีกต่อไป เวลากู้คืนหรือลบไฟล์ตาม tracked path และตอนนี้จะรายงานด้วยว่าข้ามไปกี่ path
ลองคิดภาพ: agent (หรือ repo ที่คุณ clone มา) วาง symlink ชื่อ .claude ชี้ไปที่ ~/.ssh หรือ ~/ ถ้าเครื่องมือเขียน config/workflow เดินตาม symlink นั้นตรง ๆ ไฟล์ที่ควรอยู่ในโปรเจกต์ก็จะไปโผล่นอกโปรเจกต์ทันที — นี่คือรูปแบบเดียวกับ “trusted tool ไปหยิบสิ่งที่ agent วางไว้ แล้วทำงานนอกขอบเขต”
สวิตช์ใหม่ และบั๊กประสิทธิภาพที่เจ็บจริง
นอกจากงานอุดช่อง รีลีสนี้ยังมีของใช้งานจริงสองอย่างที่ควรรู้:
- สวิตช์ใหม่
sandbox.filesystem.disabled— ปิดการแยกระบบไฟล์ (filesystem isolation) แต่ ยังคงคุม network egress อยู่ เป็น escape hatch สำหรับ workflow ที่ FS isolation ไปขวางการทำงาน โดยไม่ต้องยอมเปิดกว้างทั้งหมด (ควรใช้อย่างระวัง — คุณกำลังแลกชั้นป้องกันหนึ่งชั้นทิ้งไป) - แก้บั๊กประสิทธิภาพที่ session ยาว ๆ ช้าลงแบบ quadratic — ต้นเหตุคือ cost ของการ normalize ข้อความโตเป็นกำลังสองตามจำนวนเทิร์น ทำให้ session ที่คุยยาว ๆ ค้างหลายวินาทีต่อเทิร์นและ resume ช้า อันนี้เป็น UX win ที่คนใช้ agent ทำงานยาว ๆ จะรู้สึกได้ทันที
ยังมีการแก้ปลีกย่อยอีกยาว เช่น auto mode ที่เผลอ deny คำสั่งเพราะ classifier เจอ error “HTTP 401” หลัง OAuth token หมดอายุกลางคัน, การตรวจ permission ของคำสั่ง compound ที่มี redirect ใน &&, การตรวจอักขระ Unicode ล่องหนในเครื่องมือ PowerShell, และ telemetry ที่เคยนับ permission denial ผิดว่าเป็น “ผู้ใช้ปฏิเสธ” ทั้งที่จริงคือ request ล้มเอง
มุมมอง AI Curator
ถ้ามองแค่เลขเวอร์ชัน 2.1.216 ดูเหมือนรีลีสซ่อมบำรุงธรรมดา แต่ถ้าอ่านให้ทะลุ มันคือ ภาคต่อของเรื่องเดียวกับที่วงการกำลังเจ็บปวดอยู่ตอนนี้ — เมื่อ agent รันคำสั่งเองได้ ขอบเขตที่เราขีดไว้ (worktree, sandbox, tracked path) จะมีค่าก็ต่อเมื่อมัน กันได้จริงในทุกทางเข้า ไม่ใช่แค่ทางหน้าบ้าน
สิ่งที่น่าสังเกตคือ ช่องที่ถูกอุดรอบนี้ล้วนเป็น “ทางอ้อม” ทั้งนั้น — ไม่ใช่ bug ที่เจาะตรง ๆ แต่เป็น git -C ที่พา git ออกนอก worktree, symlink ที่พาการเขียนออกนอกโปรเจกต์, hardlink ที่พา /rewind ไปแตะไฟล์นอกขอบเขต นี่คือลายเซ็นของ security ยุค agent: ผู้โจมตี (หรือแค่ repo ที่ไม่น่าไว้ใจ) ไม่ต้องเจาะกำแพง แค่หา flag/link ที่ระบบลืมตรวจแล้วให้ agent เดินผ่านมันไปเอง
สำหรับนักพัฒนาไทยที่เริ่มปล่อย background agent / worktree ให้ทำงานขนานกันจริงจัง บทเรียนภาคปฏิบัติคือ อย่าเชื่อว่า “แยก worktree แล้ว = ปลอดภัย” โดยอัตโนมัติ — อัปเดตให้ทัน (2.1.216 เป็นอย่างน้อย), ระวัง repo ที่มี symlink แปลก ๆ ตรง .claude ก่อนเปิดใน agent, และคิดถึง sandbox.filesystem.disabled เป็น “ปุ่มที่ปิดชั้นป้องกัน” ไม่ใช่ปุ่มแก้ปัญหาชั่วคราวที่กดทิ้งไว้ตลอด ยิ่ง agent ทำงานเองได้มากเท่าไร เส้นแบ่งพวกนี้ยิ่งเป็นด่านสุดท้ายที่เหลืออยู่จริง ๆ
แหล่งข่าว
อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา
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