- Claude Code
2.1.198 เปิดใช้ ฟีเจอร์ดำเนินการต่ออัตโนมัติ เป็นค่าเริ่มต้น โดยหาก AskUserQuestion ไม่มีคำตอบเป็นเวลา 60 วินาที โมเดลจะตัดสินใจเองและทำงานต่อ แต่ตอนเปิดตัวไม่ได้บันทึกไว้ใน changelog หรือเอกสาร
- แม้จะไม่ได้อนุมัติคำขอสิทธิ์โดยอัตโนมัติ แต่ในสภาพแวดล้อมที่ใช้เครื่องมือที่อนุญาตไว้แล้วหรือ
--dangerously-skip-permissions ก็อาจผ่าน ด่านตัดสินใจ เช่น “staging หรือ production” แทนผู้ใช้ได้ และหากป้อนคำตอบเพียงบางส่วน โมเดลก็จะเลือกส่วนที่เหลือเอง
2.1.200 ที่ออกมาหลังมีการตั้งประเด็นประมาณสองวัน ไม่ได้ลบฟีเจอร์ออก แต่เพียงปิดค่าเริ่มต้น และเปลี่ยนเป็น แบบ opt-in ให้เลือกหนึ่งใน 60s, 5m, 10m, never จาก /config
- แม้ repository สาธารณะจะไม่มีซอร์สจริงของผลิตภัณฑ์หรือ commit ที่นำฟีเจอร์เข้า/ย้อนกลับ แต่จากการเปรียบเทียบ JavaScript bundle ที่อยู่ในไฟล์รันไทม์ Bun บน npm ยืนยันได้ว่าใน
2.1.198 มีการเพิ่มสตริง AFK, schema และ event ด้าน analytics เข้ามาพร้อมกัน
- เมื่อการอัปเดตอัตโนมัติเป็นค่าเริ่มต้นมารวมกับบันทึกการเปลี่ยนแปลงที่ไม่สมบูรณ์ สมมติฐานด้านความปลอดภัยอาจเปลี่ยนไปโดยไม่ต้องมีผู้ใช้เข้ามาเกี่ยวข้อง หากต้องการตรึง CLI ไว้แต่ยังอัปเดตปลั๊กอิน ต้องตั้งค่า
DISABLE_AUTOUPDATER=1 และ FORCE_AUTOUPDATE_PLUGINS=1 ร่วมกัน
2.1.198 ที่ตัดสินใจแทนคนหลัง 60 วินาที
- Claude Code
2.1.198 ซึ่งออกเมื่อ 1 กรกฎาคม 2026 จะปลดการบล็อกเมื่อ AskUserQuestion รอคำตอบจากคนครบ 60 วินาที แล้วสั่งให้โมเดลตัดสินใจตามบริบทให้ดีที่สุดและทำงานต่อ
- ในเอาต์พุตจะแสดง
No response after 60s — continued without an answer
- มีข้อความบอกว่าสามารถถามใหม่ได้ แต่การถามซ้ำก็ยังใช้ timeout เดิม
- หากผู้ใช้ตอบคำถามเพียงบางส่วนแล้วลุกออกไป ระบบจะไม่ทิ้งอินพุต แต่จะ ส่งคำตอบบางส่วน นั้นไป
- หากในสามคำถามตอบเฉพาะข้อแรก งานจะดำเนินต่อด้วยคำตอบนั้นและคำตอบที่โมเดลเลือกให้ในข้อที่เหลือ
- ข้อความบนหน้าจอจะเลือกแสดง
continued with the answers selected so far หรือ continued without an answer ตามว่ามีคำตอบหรือไม่
- ไม่ใช่ว่าบนหน้าจอไม่มี countdown เลย
- เมื่อกดปุ่ม ตัวจับเวลาจะเริ่มใหม่ และมีข้อความเช่น
auto-continue in 12s · any key to stay ปรากฏ
- แต่ค่าเริ่มต้นของ
CLAUDE_AFK_COUNTDOWN_MS คือ 20 วินาที ทำให้ช่วง 40 วินาทีแรกดูเหมือนคำถามบล็อกตามปกติ และคำเตือนจะแสดงเฉพาะ 20 วินาทีสุดท้าย
- ผู้ใช้ที่รันหลาย agent ในแท็บต่างกัน หรือไม่อยู่หน้าจอ อาจไม่เห็นคำเตือนได้
ขอบเขตการใช้งานและข้อจำกัดของ safety gate
- timeout ใช้กับ
AskUserQuestion เท่านั้น และไม่ได้เชื่อมกับ permission prompt เช่น การอนุมัติแผนหรือ Do you want to allow …
- ในไฟล์รันไทม์ ส่วนประกอบ countdown และ timer hook เชื่อมอยู่กับกล่องโต้ตอบคำถามเท่านั้น
- tool reference ก็ระบุว่า permission prompt จะไม่ถูก resolve อัตโนมัติเมื่ออยู่ในสถานะ idle
- ในรูปแบบการรันที่ permission prompt ไม่ปรากฏตั้งแต่แรก การแยกส่วนนี้จึงไม่เป็นกลไกป้องกัน
- สามารถใช้
bypassPermissions, acceptEdits, allowedTools, --dangerously-skip-permissions, hook PreToolUse ได้
- หากคำสั่ง deploy อยู่ใน allowlist หรือมีการ bypass การตรวจสอบสิทธิ์ ตัวเลือกใน
AskUserQuestion เช่น “staging หรือ production?”, “config ไหน?” อาจเป็น gate สุดท้ายที่เหลืออยู่
- แม้ timer จะไม่ได้มอบสิทธิ์ แต่สามารถปล่อยให้โมเดลรับผิดชอบ การเลือกเอง สำหรับงานที่มีสิทธิ์อยู่แล้วได้
- ใน tool schema ไม่มีอินพุต
timeout และโมเดลก็ไม่สามารถตั้งค่าหรือควบคุมได้
- input parameter มีเพียง
questions, answers, annotations, metadata
- ผู้ที่ข้ามคำตอบไม่ใช่โมเดล แต่เป็น agent harness ที่คืน response โดยอัตโนมัติ
ไทม์ไลน์การเปิดตัวและการย้อนกลับ
- บันทึกสาธารณะที่ตรวจสอบได้เรียงตามลำดับดังนี้
- 2026-06-29: ออก
2.1.196 ซึ่งผู้รายงานคาดว่าเป็นเวอร์ชันสุดท้ายที่ปกติ
- 2026-06-30: ออก
2.1.197 โดย changelog มีเพียงบรรทัดเดียวเรื่องการเปิดตัว Sonnet 5
- 2026-07-01: ออก
2.1.198 ที่มีการดำเนินการต่ออัตโนมัติ
- 2026-07-02 02:54 UTC: Aleksey Nogin เปิด issue #73125
- 2026-07-02 03:45 UTC: มีการแชร์
CLAUDE_AFK_TIMEOUT_MS ซึ่งเป็นทางออกที่ไม่เปิดเผยในคอมเมนต์
- 2026-07-02: ออก
2.1.199 ระหว่างที่ issue ยังเปิดอยู่ พร้อมรายการ 24 รายการ แต่ยังไม่กล่าวถึงการดำเนินการต่ออัตโนมัติ
- 2026-07-03: ย้อนค่าเริ่มต้นใน
2.1.200
- 2026-07-04 18:04 UTC: ปิด issue
- issue นี้มี 384 👍 และ 143 คอมเมนต์ โดยสภาพแวดล้อมที่รายงานคือ
2.1.198, Opus, AWS Bedrock, VS Code terminal
- ใช้เวลาประมาณ สองวัน ตั้งแต่การรายงานปัญหาจนถึงการเปลี่ยนค่าเริ่มต้น
วิธีที่ 2.1.200 แก้ไข
2.1.200 ไม่ได้ลบฟีเจอร์ แต่ ปิดใช้งานการดำเนินการต่ออัตโนมัติเป็นค่าเริ่มต้น และเปลี่ยนให้ opt-in ผ่าน /config
- ก่อนแก้ไข ใน
2.1.198 ไม่มีการตั้งค่า askUserQuestionTimeout ใน /config และหากต้องการหลีกเลี่ยงผลกระทบต้องใช้ environment variable ที่ไม่ปรากฏในเอกสารเปิดตัว
- ใน
2.1.211 การ implement ทั้งหมดยังคงอยู่
- ชื่อรายการใน
/config คือ Question auto-continue timeout
- ค่าที่อนุญาตคือ
60s, 5m, 10m, never
- หากไม่ได้ตั้งค่า จะถือเป็น
never และฟีเจอร์จะปิดอยู่
- timeout ภายในยังคงเป็น 60,000ms และเกณฑ์ countdown คือ 20,000ms
CLAUDE_AFK_TIMEOUT_MS และ CLAUDE_AFK_COUNTDOWN_MS สามารถ override ค่าที่ตั้งไว้ได้
- การแก้ไขไม่ได้ลบ timer แต่เป็นการ เพิ่มเงื่อนไข gate หนึ่งข้อ ให้เปิดใช้งานเฉพาะเมื่อมีค่าตั้งหรือ environment variable เท่านั้น
- ผู้ใช้ที่ตรึงอยู่กับเวอร์ชันที่ได้รับผลกระทบ สามารถใส่ค่าที่ใหญ่มากใน
CLAUDE_AFK_TIMEOUT_MS ใน settings.json เพื่อหลีกเลี่ยงชั่วคราวได้
การนำฟีเจอร์ที่หายไปจากบันทึกการเปลี่ยนแปลงเข้ามา
- โน้ตการเผยแพร่ถูกโพสต์ด้วยเนื้อหาเดียวกันทั้งใน บันทึกการเปลี่ยนแปลงอย่างเป็นทางการ และ
CHANGELOG.md ของรีโพซิทอรี
- เมื่อดูบันทึกในเวลานั้นโดยอิงจากคอมมิตที่ตรึงไว้ การเพิ่มการดำเนินการต่ออัตโนมัติไม่ปรากฏในเวอร์ชันใดเลย
2.1.197: มีเพียงหนึ่งบรรทัดเรื่องการเปิดตัว Sonnet 5
2.1.198: มีประมาณ 30 รายการ แต่ไม่มีการดำเนินการต่ออัตโนมัติ
2.1.199: ไม่มีอยู่ใน 24 รายการที่โพสต์หลังมีการเปิด issue เช่นกัน
AskUserQuestion เป็นเครื่องมือที่ตามปกติถูกบันทึกไว้ในบันทึกการเปลี่ยนแปลง โดยปรากฏรวม 15 ครั้งใน 13 เวอร์ชันหลัง 2.0.55
- แต่ในช่วงที่มีการเปลี่ยนแปลงเข้ามา ตั้งแต่
2.1.181 จนก่อน 2.1.200 ไม่ปรากฏเลยแม้แต่ครั้งเดียว
- จากการเปลี่ยนพฤติกรรมสองครั้งคือเปิดและปิด มีการบันทึกไว้เฉพาะตอนปิดเท่านั้น
- รายการเดียวที่บันทึกการดำเนินการต่ออัตโนมัติเป็นครั้งแรกคือข้อความใน
2.1.200 ที่ระบุว่า “โดยค่าเริ่มต้นจะไม่ดำเนินการต่ออัตโนมัติอีกต่อไป และให้ opt-in ผ่าน /config”
CLAUDE_AFK_TIMEOUT_MS ไม่ปรากฏทั้งในบันทึกการเปลี่ยนแปลงและ README
เอกสารที่เพิ่มหลังย้อนพฤติกรรมกลับ
- ปัจจุบัน เอกสารอ้างอิงตัวแปรสภาพแวดล้อม บันทึกตัวแปรสภาพแวดล้อม AFK สองตัว และระบุชัดว่าใน
2.1.198 และ 2.1.199 การดำเนินการต่ออัตโนมัติหลัง 60 วินาทีถูกเปิดใช้เป็นค่าเริ่มต้น
- เอกสารนี้ไม่อาจเป็นเอกสารที่สะท้อนสถานะในวันเปิดตัวได้
askUserQuestionTimeout ที่ข้อความปัจจุบันแนะนำไม่มีอยู่ในไฟล์ปฏิบัติการ 2.1.198
- ในภาพเก็บถาวรของ Wayback Machine วันที่ 23 มิถุนายน และวันที่ 1 กรกฎาคม เวลา 12:11·21:35 UTC พบ
CLAUDE_AFK และ AskUserQuestion อย่างละ 0 ครั้ง
- รายการเปรียบเทียบอย่าง
DISABLE_AUTOUPDATER พบ 2 ครั้งในทุกภาพเก็บถาวร จึงไม่ใช่การตกหล่นจากการเก็บหน้าเว็บไม่สำเร็จ
2.1.198 ถูกโพสต์ขึ้น npm เวลา 16:50:16 UTC วันที่ 1 กรกฎาคม แต่ในเอกสาร หลังจากนั้น 4 ชั่วโมง 45 นาที ก็ยังไม่มี AFK, การดำเนินการต่ออัตโนมัติ, เครื่องมือถามคำถาม หรือการนับถอยหลัง
- ข้อความที่เกี่ยวข้องถูกเพิ่มระหว่างวันที่ 1 กรกฎาคม เวลา 21:35 ถึงวันที่ 5 กรกฎาคม เวลา 13:58 และช่วงนี้รวมการย้อนกลับใน
2.1.200 ด้วย
- เอกสารใหม่บันทึกเฉพาะสถานะหลังแก้ไขที่ “ปิดเป็นค่าเริ่มต้น” แล้ว จึงไม่เคยมีช่วงเวลาที่พฤติกรรมค่าเริ่มต้นจริงของวันที่ 1–2 กรกฎาคมถูกจัดทำเป็นเอกสาร
ซอร์สผลิตภัณฑ์และคอมมิตที่ไม่มีในรีโพซิทอรีสาธารณะ
- ไม่มีทั้งคอมมิตสาธารณะที่นำฟีเจอร์เข้ามาและคอมมิตสาธารณะที่ย้อนกลับ
- ในประวัติ Git สาธารณะเหลือเพียงคอมมิตอัตโนมัติสองรายการที่อัปเดตเฉพาะบันทึกการเปลี่ยนแปลงและ
feed.xml
75709ea: โพสต์โน้ตการเผยแพร่ 2.1.198
1322e9b: โพสต์โน้ตการเผยแพร่ 2.1.200
- รีโพซิทอรี
anthropics/claude-code มีไฟล์ที่ติดตาม 216 ไฟล์ โดย 104 ไฟล์เป็น Markdown และไม่มีซอร์สของผลิตภัณฑ์ที่แจกจ่ายจริง
- ไฟล์ที่รันได้เป็นตัวอย่างหรือสคริปต์อัตโนมัติสำหรับติดตาม issue
plugins/ และ examples/ ก็มีปลั๊กอินตัวอย่าง, การตั้งค่า Terraform สำหรับเกตเวย์ GCP, โปรไฟล์ MDM เป็นต้น
- ความแตกต่างระหว่างแท็ก
2.1.197 กับ 2.1.198 มีเพียง CHANGELOG.md และ feed.xml ที่ทำซ้ำเนื้อหานั้นเป็น RSS
- การเผยแพร่ต่อเนื่องสิบครั้งตั้งแต่
2.1.196 ถึง 2.1.206 ก็เปลี่ยนแค่สองไฟล์เดียวกันนี้
- แท็กจึงไม่ใช่ซอร์สรีลีส แต่แทบจะเป็น แท็กโน้ตการเผยแพร่
- ไม่สามารถตรวจสอบพฤติกรรมที่แจกจ่ายจริงได้จากบันทึกการเปลี่ยนแปลงหรือการเปรียบเทียบรีโพซิทอรี·แท็ก และซอร์สที่เขียนไว้ไม่ได้ถูกเผยแพร่สู่สาธารณะ แต่แจกจ่ายเฉพาะเป็นไฟล์ปฏิบัติการที่คอมไพล์แล้ว
ร่องรอยของการออกแบบและการวัดผลอย่างตั้งใจ
- ไม่มีเอกสารออกแบบอย่างเป็นทางการ, PR หรือข้อความในบันทึกการเปลี่ยนแปลงที่ใช้ยืนยันเหตุผลของการนำฟีเจอร์นี้เข้ามา
- ชื่อและข้อความเป็น หลักฐานแวดล้อม ที่ชี้ว่ามุ่งแก้สถานการณ์ที่เอเจนต์แบบขนานถูกบล็อกไม่มีกำหนดเพราะผู้ใช้ไม่อยู่
- ชื่อภายใน
AFK หมายถึง away from keyboard
- ข้อความตั้งสมมติฐานว่า “ผู้ใช้อาจอยู่ห่างจากคีย์บอร์ด”
- ผู้ร่วมสนทนาใน issue ระบุว่าพวกเขาใช้เวิร์กโฟลว์ที่มีเอเจนต์หลายสิบตัวรอคำตอบจากคนเป็นเวลาหลายวัน
- ใน
2.1.198 มีการเพิ่มฟิลด์ afkTimeoutMs ซึ่งบ่งชี้ว่าถูกแก้ไขอัตโนมัติหรือไม่ เข้าไปในสคีมาผลลัพธ์ของเครื่องมือ
- ไม่มีในเส้นทางที่คนตอบ และจะบันทึกเวลาว่างเมื่อมีการแก้ไขอัตโนมัติ
- ใช้เพื่อแจ้งโมเดลว่าเป็นคำตอบที่ถูกแก้ไขอัตโนมัติ และใช้เลือกองค์ประกอบเอาต์พุตในเทอร์มินัล
- ในเวอร์ชันเดียวกันยังเพิ่ม อีเวนต์วิเคราะห์
tengu_ask_user_question_afk_auto_advance ด้วย
- ส่ง
timeoutMs, จำนวนคำถาม, สถานะว่าอยู่ในโหมดวางแผนหรือไม่ และมีคำตอบบางส่วนหรือไม่
- ไม่ส่งข้อความคำถามต้นฉบับ แต่ใช้
source_hash และตัวนับ
- เนื่องจาก
hadPartialAnswers ถูกวัดแยกต่างหาก เส้นทางคำตอบบางส่วนจึงมีโค้ดและการวัดผลเป็นของตัวเองด้วย
- พฤติกรรม, UI นับถอยหลัง, ฟิลด์สคีมา และอีเวนต์วิเคราะห์เข้ามาพร้อมกันในเวอร์ชันเดียว จึงไม่ใช่บรรทัดเดียวที่เกิดขึ้นโดยบังเอิญ แต่เป็นฟีเจอร์ที่มีระบบวัดผลประกอบ
- หลักฐานเท่านี้ไม่สามารถบอกได้ว่าใครเป็นผู้เขียน·ตรวจทาน·อนุมัติ·merge หรือมีมนุษย์เข้ามาเกี่ยวข้องในขั้นตอนไหน
ไฟล์ปฏิบัติการ Bun ที่เป็นซอร์สปิดแต่ยังอ่านได้
- Claude Code ที่ติดตั้งเป็น ไฟล์ปฏิบัติการเนทีฟขนาดประมาณ 250MB ที่ไม่ได้ตัดสัญลักษณ์ออก
- รูปแบบไฟล์ปฏิบัติการเดี่ยวของ Bun จะต่อกราฟโมดูลไว้หลัง runtime และในไฟล์ปฏิบัติการของ Claude Code ก็พบเครื่องหมาย
---- Bun! ---- ได้
- เนื่องจาก Bun ฝังบันเดิล JavaScript ไว้ภายในไฟล์ปฏิบัติการ จึงสามารถใช้
strings อ่านชื่อการตั้งค่า, ข้อความ, อีเวนต์วิเคราะห์ ฯลฯ ได้
- ไดเรกทอรีติดตั้งในเครื่องเก็บไว้เฉพาะบางเวอร์ชันล่าสุด แต่ใน npm ยังมีไฟล์ปฏิบัติการแยกตามแพลตฟอร์มของแต่ละเวอร์ชันอยู่
@anthropic-ai/claude-code เป็นสตับสำหรับติดตั้งขนาดประมาณ 152KB
- แพ็กเกจ
2.1.198 สำหรับ Linux x64 จริงมีขนาดประมาณ 249MB
- แม้ไม่มีซอร์สสาธารณะ แต่สามารถดาวน์โหลดอาร์ติแฟกต์ของแต่ละรีลีสเพื่อตรวจสอบพฤติกรรมที่แจกจ่ายได้ จึงไม่ใช่กล่องดำโดยสมบูรณ์
เปรียบเทียบไฟล์ปฏิบัติการ 2.1.197 กับ 2.1.198
- เมื่อค้นหาสตริงที่เกี่ยวข้องกับ AFK ในไฟล์ปฏิบัติการทั้งสอง จะเห็นเส้นแบ่งชัดเจน
2.1.197: away from keyboard, CLAUDE_AFK_TIMEOUT_MS, CLAUDE_AFK_COUNTDOWN_MS ทั้งหมดปรากฏ 0 ครั้ง
2.1.198: ปรากฏอย่างละ 2 ครั้ง, 3 ครั้ง, 3 ครั้งตามลำดับ
- หลังการแก้ไข gate ของตัวจับเวลาใน
2.1.211 ถูกเพิ่มเงื่อนไขว่าต้องมีค่า /config หรือตัวแปรสภาพแวดล้อมอยู่
- ใน
2.1.198 ก็มี gate ที่ตรวจสอบสิ่งต่าง ๆ เช่น มีการรันคู่แข่งภายนอกอยู่หรือไม่อยู่แล้ว
- แต่ไม่มีเงื่อนไขที่ผู้ใช้สามารถปิดได้ และการแก้ไขก็เป็นรูปแบบที่เพิ่มเงื่อนไข
&& เข้าไปอีกหนึ่งเงื่อนไขตรงนี้
- การเปรียบเทียบรีลีสทั่วไปโดยไม่รู้ชื่อฟีเจอร์และเวอร์ชันที่เกิดปัญหานั้นยากกว่ามาก
- หากเทียบแบบง่าย ๆ ด้วย
strings -n 8 จะมี 21,903 สตริง ที่ต่างกัน
- จำนวนอาจเปลี่ยนเป็น 81,289 หรือ 29,910 ตามความยาวสตริงขั้นต่ำ ดังนั้น 21,903 จึงไม่ใช่คุณลักษณะคงที่ของรีลีส
- ในแต่ละบิลด์ minifier จะเปลี่ยนชื่อ identifier ทำให้ส่วนใหญ่เป็น noise ไม่ใช่การเปลี่ยนแปลงฟีเจอร์จริง
- หากกรองเฉพาะประโยคภาษาอังกฤษที่เพิ่มเข้ามาซึ่งขึ้นต้นด้วยตัวพิมพ์ใหญ่ เป็นรูปประโยคทั่วไป และมีอย่างน้อย 5 คำ จะลดเหลือ 156 บรรทัด
- ภายในนั้นมี
Before going idle the user had selected: รวมอยู่ด้วย
- เนื่องจากเป็นสตริงที่กล่องโต้ตอบแทรกเข้าไปในบทสนทนาเมื่อตอบแทนมนุษย์ ต่อให้อ่านโดยไม่มีข้อมูลล่วงหน้าก็เป็นการเปลี่ยนแปลงที่ควรหยุดตรวจสอบ
- แม้จะค้นพบได้ภายในราว 5 นาทีด้วย
curl, strings, diff แต่วิธีให้ผู้ใช้ตรวจไฟล์ปฏิบัติการของทุกรีลีสที่อัปเดตอัตโนมัติไม่สามารถทดแทน changelog ได้
ปัญหาด้านความปลอดภัยที่ใหญ่กว่าค่าใช้จ่าย
- หากเลือกเส้นทางผิดโดยอัตโนมัติ ก็อาจใช้โทเค็นโดยไม่จำเป็น
- ปัญหาที่ใหญ่กว่าคือ hook และกฎที่ตั้งสมมติฐานว่า
AskUserQuestion เป็น safety gate แบบบล็อก จะกลายเป็นการนับถอยหลัง 60 วินาที
- Claude Code ถูกใช้งานแม้ในสภาพแวดล้อมที่มีความเสี่ยง เช่น deployment, infrastructure และสคริปต์ที่อยู่ใกล้ production
- เนื่องจาก Claude Code อัปเดตอัตโนมัติโดยค่าเริ่มต้น เมื่อรวมกับการเปลี่ยนพฤติกรรมแบบเงียบ ๆ สมมติฐานด้านความปลอดภัยเดิมอาจเปลี่ยนไปได้โดยที่ผู้ใช้ไม่ต้องทำอะไรเลย
- ประเด็นว่านโยบายที่รับเวอร์ชันล่าสุดทันทีอาจเป็นทางเลือกที่มีความเสี่ยงเองนั้นเชื่อมโยงกับ On Cooldowns and Dependabot Tuning
วิธีปิดการอัปเดตอัตโนมัติและลำดับความสำคัญ
- การพิจารณาว่าปิดการอัปเดตหรือไม่จะตรวจตัวแปรสภาพแวดล้อมต่อไปนี้ตามลำดับ และใช้ค่าที่ตรงกันค่าแรก
DISABLE_UPDATES=1: บล็อกทุกเส้นทางการอัปเดต รวมถึง claude update แบบสั่งเอง
DISABLE_AUTOUPDATER=1: หยุดเฉพาะการตรวจสอบเบื้องหลัง อนุญาตให้อัปเดตด้วยตนเอง และมีลำดับความสำคัญเหนือการตั้งค่า autoUpdates
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1: หยุดการอัปเดตอัตโนมัติ คำสั่ง feedback การรายงานข้อผิดพลาด และ telemetry พร้อมกัน
- หากใส่ไว้ในบล็อก
env ของ ~/.claude/settings.json แทน shell profile จะสามารถมีผลกับทุกเซสชัน รวมถึง CI, cron, systemd และเทอร์มินัลของ IDE
{
"env": {
"DISABLE_AUTOUPDATER": "1"
}
}
- ขอบเขตการตั้งค่ามีพลังมากขึ้นตามลำดับคือ shell profile,
~/.claude/settings.json รายผู้ใช้, .claude/settings.json ราย repository, และ managed-settings.json สำหรับการจัดการจากศูนย์กลาง
- เส้นทางของ
managed-settings.json มีดังนี้
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux/WSL:
/etc/claude-code/managed-settings.json
- Windows:
C:\Program Files\ClaudeCode\managed-settings.json
- เส้นทางเดิม
C:\ProgramData\ClaudeCode จะไม่ถูกอ่านอีกต่อไป
- ไม่มี CLI flag สำหรับปิดการอัปเดตอัตโนมัติ และ
/doctor จะแสดงชนิดการติดตั้งกับช่องทางอัปเดต
หากปิดการอัปเดต CLI ปลั๊กอินก็หยุดด้วย
- หากปิดตัวอัปเดตอัตโนมัติไม่ว่าด้วยวิธีใด เช่น ตัวแปรสภาพแวดล้อมหรือ
autoUpdates: false การอัปเดตปลั๊กอินอัตโนมัติก็จะหยุดด้วย
- เอกสารสำรวจปลั๊กอิน ระบุว่าเมื่อตั้ง
DISABLE_AUTOUPDATER พร้อมกับ FORCE_AUTOUPDATE_PLUGINS=1 จะสามารถตรึง CLI ไว้และยังให้ปลั๊กอินอัปเดตต่อได้
- ในทางกลับกัน
/setup documentation ที่อธิบายการปิดอัปเดตอัตโนมัติจริง ๆ และตารางตัวแปรสภาพแวดล้อมสำหรับการตั้งค่า กลับไม่มีผลกระทบต่อปลั๊กอินและ FORCE_AUTOUPDATE_PLUGINS
- ในไฟล์ปฏิบัติการ เส้นทางที่ทำให้การอัปเดตปลั๊กอินหยุดมีสี่แบบ
DISABLE_UPDATES
DISABLE_AUTOUPDATER
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
autoUpdates: false
- ระหว่างรันจะเหลือเพียง debug log
Plugin autoupdate: skipped (auto-updater disabled) แทนที่จะมีคำเตือนว่าปลั๊กอินหยุดอยู่
- การตั้งค่าที่ตรึง CLI แต่คงการอัปเดตปลั๊กอินไว้มีดังนี้
{
"env": {
"DISABLE_AUTOUPDATER": "1",
"FORCE_AUTOUPDATE_PLUGINS": "1"
}
}
FORCE_AUTOUPDATE_PLUGINS, DISABLE_AUTOUPDATER, DISABLE_UPDATES ตีความ 1, true, yes, on เป็นจริงโดยไม่สนตัวพิมพ์เล็กใหญ่ และถือว่า 0 เป็นเท็จ
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC ตรวจเฉพาะการมีอยู่ ไม่ใช่ค่า ดังนั้นแม้ =0 ก็เปิดใช้งาน และในกรณีนี้ทั้งตัวอัปเดตอัตโนมัติและการอัปเดตปลั๊กอินจะหยุด
กับดักเพิ่มเติมของการตั้งค่าอัปเดต
- แม้ใช้
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC เพื่อวัตถุประสงค์ด้านความเป็นส่วนตัวหรือจำกัดการสื่อสารภายนอก CLI และปลั๊กอินก็จะถูกตรึงไปด้วยกัน
autoUpdates: false ที่ไม่มีในเอกสารอาจ ถูกละเว้นได้ หาก autoUpdatesProtectedForNative เปิดใช้งานในการติดตั้งแบบ native
- ตัวแปรสภาพแวดล้อมจะถูกตรวจสอบก่อนการตั้งค่านี้และมีผลโดยไม่มีเงื่อนไข
2.1.98 แก้ปัญหาในการติดตั้งผ่าน npm ที่ DISABLE_AUTOUPDATER ไม่สามารถบล็อกการตรวจสอบเวอร์ชัน registry และการแก้ไข symbolic link ได้อย่างสมบูรณ์
- ปัญหาที่ตัวอัปเดตอัตโนมัติเขียนทับ launcher แบบกำหนดเองหรือ symbolic link ของผู้ใช้ที่
~/.local/bin/claude ทุกรีลีสก็ได้รับการแก้ไขแล้ว และปัจจุบัน /doctor จะแสดง launcher ที่จัดการจากภายนอก
- การติดตั้งแบบ native และ npm จะอัปเดตตัวเองโดยค่าเริ่มต้น
- Homebrew, WinGet, apt, dnf, apk ไม่ใช่เป้าหมายการอัปเดตตัวเองโดยค่าเริ่มต้น
- Homebrew และ WinGet สามารถ opt in ได้ด้วย
CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1
ปัญหาความเชื่อมั่นที่เหลืออยู่ในกระบวนการเผยแพร่
- หากมนุษย์กำกับดูแลเอเจนต์หลายตัวพร้อมกัน ก็ยากที่จะตรวจทุกคำถามภายใน 60 วินาที และไม่อาจรู้ล่วงหน้าว่าหลังเลือกผิดจะใช้โทเค็นหรืองานไปมากเพียงใด
- ไม่สามารถตรวจสอบจากบันทึกสาธารณะได้ว่า Anthropic ใช้บุคคลและกระบวนการใดในขั้นตอนการเขียน ตรวจทาน อนุมัติ merge จัดทำเอกสาร และเปรียบเทียบรีลีสของฟีเจอร์นี้
- ฟีเจอร์ถูกแก้เป็นรูปแบบ opt-in ที่เหมาะสมภายในประมาณสองวัน แต่เหตุการณ์นี้เผยให้เห็นว่าด้วยรอบการออกรีลีสรายวันและการอัปเดตอัตโนมัติโดยค่าเริ่มต้น ฟีเจอร์ที่ไม่คาดคิดสามารถถูกเผยแพร่โดยไม่มี changelog ได้
- การวิเคราะห์ไฟล์ปฏิบัติการเป็นทางอ้อมที่ใช้ได้ในการตรวจสอบสิ่งที่เผยแพร่จริง แต่ไม่สามารถทดแทน changelog ที่ถูกต้องและผ่านการเรียบเรียงอย่างดี ได้
- ไม่มีหลักฐานให้สันนิษฐานว่ามีเจตนาร้าย และการที่เหตุการณ์ประเภทเดียวกันจะเกิดซ้ำหรือไม่จะเป็นฐานในการตัดสินว่าอะไรได้รับการปรับปรุงในกระบวนการเผยแพร่นี้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมคือ Thariq จากทีม Claude Code ผู้สร้าง AskUserQuestion เมื่อโมเดลทรงพลังขึ้น เราได้รับฟีดแบ็กว่างานที่ใช้เวลานานมักติดค้างตั้งแต่คำถามช่วงต้น จึงปรับเปลี่ยนเพื่อแก้ปัญหานี้ แต่ผลลัพธ์ยังไม่ถึงมาตรฐานคุณภาพที่คาดหวัง และนี่ก็ไม่ใช่วิธีปล่อยฟีเจอร์ตามปกติของ Claude Code
แม้การประเมินภายในจะออกมาดี ก็ควรเปิดให้ใช้แบบ opt-in ตั้งแต่แรกและบันทึกไว้ใน changelog เราไม่ได้ออกแบบ AskUserQuestion ให้เป็นกลไกป้องกันความปลอดภัย แต่เข้าใจว่าผู้ใช้บางส่วนมองและใช้งานมันแบบนั้น เราจะหาวิธีอื่นในการสร้างสมดุลระหว่างงานระยะยาวกับอินพุตจากผู้ใช้ และเรียนรู้จากการปล่อยครั้งนี้
บริษัทระดับ Anthropic ควรยอมรับและแก้ไขความล้มเหลวของ PR และกระบวนการองค์กรที่ปล่อยให้มีการเผยแพร่แบบนี้ ไม่ใช่โยนเป็นเรื่องของบุคคล
สงสัยว่านี่คือกระแสใหม่ในยุคอินเทอร์เน็ต หรือเป็นวัฒนธรรมของบริษัทเทคโนโลยีที่กำลังเปลี่ยนไป
สิ่งที่น่าหงุดหงิดเป็นพิเศษคือข้อความว่า “ไม่ใช่ทุกฟีเจอร์จะปรากฏใน changelog เสมอไป” และการที่ Anthropic ไม่อธิบายว่าทำไมจึงไม่ดูแล changelog ให้เป็นประวัติที่ครบถ้วนอีกต่อไป เราไม่รู้เลยว่าจะมีอะไรถูกปล่อยออกมาแบบเงียบ ๆ อีก(1)
สิ่งที่ Boris Cherny ทำในการถกเถียงนั้นมีเพียงลบคำว่า “extreme danger” ออกจากชื่อ issue บน GitHub เท่านั้น(2) อย่างน้อยก็ยังดีที่ Anthropic เพิ่มตัวเลือกและปิดไว้เป็นค่าเริ่มต้น แต่ OpenAI ยังยืนยันไม่ให้ปิด timeout 60 วินาที อยู่(3) อย่างไรก็ตาม เครื่องมือรันของ Codex เปิดซอร์สมากกว่า ผู้ใช้จึง fork เองเพื่อเพิ่มตัวเลือกได้
ผมคงไม่ไว้ใจเครื่องมือรันที่สร้างโดยบริษัทซึ่งเมื่อการอุดหนุนต้นทุน token จบลงแล้วก็จะเริ่มคิดค่าคอมพิวต์ด้วย ตอนนี้ผลประโยชน์ยังสอดคล้องกัน แต่ทันทีที่ จำนวน token ที่เพิ่มขึ้นเท่ากับกำไรที่เพิ่มขึ้น แรงจูงใจที่บิดเบือนก็จะมากเกินไป
สุดท้ายเครื่องมือรันแบบโอเพนซอร์สน่าจะเป็นฝ่ายชนะ ดังนั้นบริษัทต่าง ๆ ก็ควรเปิดซอร์สเองจะดีกว่า
เมื่อเร็ว ๆ นี้ผมคลิกเมาส์เพื่อโฟกัสหน้าต่าง terminal แต่ Claude Code กลับตีความว่าเป็นการคลิกตัวเลือก ทำให้ปวดหัวมาก
วันนี้เจอกับตัวเอง ระหว่างอ่านคำตอบของ agent มีคำถามเด้งขึ้นมา แต่ก่อนจะทันอ่านคำถาม มันก็เลือกอะไรบางอย่างให้อัตโนมัติไปแล้ว ไม่รู้ว่า software engineering หายไปไหนหมด
ถึงขั้นเห็นมันเติม flag อนุมัติอัตโนมัติให้
terraform applyซึ่งอันตรายมากไม่เข้าใจว่า Claude Code ดูเหมือนจะตั้งค่า virtual machine ที่ค่อนข้างหนักไว้ในคอมพิวเตอร์ แต่โดยค่าเริ่มต้นกลับแทบไม่ทำ sandbox isolation เลย โมเดลรุ่นใหม่ ๆ แก้ไขคอมพิวเตอร์อย่างก้าวร้าว และแม้ผมขอให้ช่วย debug โค้ด UI ฝั่ง frontend มันก็เริ่มเขียนทับไฟล์ระบบ Linux ที่เข้าถึงได้ด้วยสิทธิ์ผู้ใช้
พอเอาเข้า sandbox แล้วจึงเห็นว่ามันพยายามออกนอกขอบเขตบ่อยแค่ไหนด้วยเหตุผลเล็ก ๆ น้อย ๆ และยิ่งทำให้มีเหตุผลมากขึ้นที่จะใช้ OpenCode กับ local LLM
มีปฏิกิริยาจำนวนมากที่ตีความว่าเป็นเจตนาร้าย แต่ในความเป็นจริงดูเหมือนใกล้เคียงกับการที่ทีมพัฒนาสร้างฟีเจอร์ที่พวกเขาเองอยากใช้มากกว่า สถานการณ์ที่เปิดเซสชัน Claude ทิ้งไว้แล้วกลับมาพบว่ามันติดอยู่กับคำถามเดียวและไม่ได้ทำงานอะไรเลยนั้น น่าหงุดหงิดมากจริง ๆ
และก็ไม่ควรเชื่อว่าการที่ Claude ถามคำถามคือกลไกเดียวที่จะป้องกันหายนะได้ ต้องกำหนด ขอบเขตความปลอดภัย ไว้ที่สิทธิ์ที่มอบให้จากภายนอก ไม่ใช่การตัดสินใจภายในของ Claude เอง อีกอย่าง ในบทความนี้มีประโยคอย่าง “Which cuts less far than it looks.” อยู่ด้วย แต่ก็ดูไม่น่าเป็นไปได้ที่ Claude จะถามและหยุดเพราะประโยคนี้
ด้วยเหตุผลเดียวกับที่ไม่ให้ LLM ไขปริศนาอักษรไขว้แทน จึงไม่เผยแพร่ ร้อยแก้วที่เขียนโดย LLM ซึ่งทำให้ความสนุกหายไป
ไม่ได้มองว่าเป็นเจตนาร้าย แต่เป็นความบุ่มบ่ามและไม่รอบคอบ และแม้จะเกิดเรื่องคล้ายกันซ้ำ ๆ ก็ยังไม่เห็นว่าทีมได้เรียนรู้อะไร Claude Code ไม่ใช่เครื่องมือที่เสถียรและเชื่อถือได้ แต่ใกล้เคียงกับการทดลองระดับล้ำหน้าสุด และนี่คือราคาที่ต้องยอมรับเมื่อเลือกใช้แทนเครื่องมือรันงานอื่น
ไม่มีแม้แต่พารามิเตอร์ให้ Claude ระบุระดับความร้ายแรงของคำถามหรือเวลาตอบโดยประมาณ และ timeout ก็มีแค่ 60 วินาที เท่านั้น แค่จะหาคำตอบของคำถามโดยไปดูเอกสารบนจอที่สองแล้วกลับมา มันก็ข้ามไปแล้ว และ 60 วินาทียังแทบไม่พออ่านบริบทของคำถามด้วยซ้ำ
ต่อให้ไม่ใช่เจตนาร้าย ก็เผยให้เห็นช่องว่างใหญ่ด้านวิจารณญาณในกระบวนการนำไอเดียไปสู่การปล่อยใช้งานจริง
ก่อนหน้านี้ปลั๊กอิน Codex สำหรับ VS Code ก็เคยมีฟีเจอร์คล้ายกันเข้ามา แล้วถูกถอดออกอย่างรวดเร็ว LLM จากผู้ให้บริการต่างกันมักลู่เข้าหาแนวคิดและอคติคล้าย ๆ กันอยู่บ่อย ๆ จึงน่าสงสัยเหมือนกันว่า สำหรับผู้จัดการผลิตภัณฑ์หรือผู้รับผิดชอบของ Claude นั้น LLM อาจแนะนำไอเดียเดียวกันนี้ให้หรือไม่
AskUserQuestion ไม่ใช่กลไกอนุมัติสิทธิ์ ดังนั้นในฐานะพฤติกรรมเริ่มต้นก็ดูโอเค อาจจำเป็นต้องมีฟีเจอร์เตือนแยกต่างหาก แต่เมื่อโมเดลดีพอ ให้มันเลือกและดำเนินการเองก่อน แล้วให้ผู้ใช้แก้ไขทีหลัง น่าจะจัดการ เอเจนต์หลายตัว ได้ง่ายกว่าสำหรับหลายกรณี
การที่ Anthropic สามารถเปลี่ยนพฤติกรรมของ Claude Code ได้ทั้งชุด เป็นหนึ่งในเหตุผลที่ทำให้มีการสร้าง Pi coding agent ขึ้นมา หากผู้ใช้ลงทุนเวลาไม่น้อยเพื่อสร้าง workflow บนผลิตภัณฑ์ใดผลิตภัณฑ์หนึ่ง ความสม่ำเสมอถือว่าสำคัญมาก