วิธีส่งความลับให้ AI Coding Agent โดยไม่ต้องใส่ไว้ในพรอมต์
เอเจนต์ต้องใช้คีย์ Stripe หรือรหัสผ่านฐานข้อมูลเพื่อรันคำสั่งของมัน ถ้าคุณวางค่านั้นลงในแชต มันจะไปอยู่ในไฟล์ทรานสคริปต์บนดิสก์ของคุณ ไปอยู่ที่ผู้ให้บริการโมเดล และบางครั้งก็ไปอยู่ในคอมมิท กฎที่เราได้มาหลังจากพลาดเองสามครั้ง : ความลับไปถึงเอเจนต์ผ่านตัวแปรสภาพแวดล้อม และผ่านทางอื่นไม่ได้เลย
สถานการณ์เป็นแบบเดิมเสมอ เอเจนต์ทำงานไปได้ครึ่งทาง แล้วมันต้องเรียก Stripe test API ของคุณ รันไมเกรชันกับฐานข้อมูล staging หรือพุชขึ้น registry ส่วนตัว มันขอคีย์ คุณมีคีย์อยู่ในโปรแกรมจัดการรหัสผ่าน เอเจนต์กำลังรอ และสิ่งที่เร็วที่สุดในโลกก็คือวางคีย์นั้นลงในแชต
การวางครั้งนั้นคือจังหวะที่คีย์หลุดออกจากการควบคุมของคุณ ไม่ใช่เพราะโมเดลมีเจตนาร้าย แต่เพราะพรอมต์เป็นวัตถุที่ถูกเก็บและถูกส่งต่อ : มันไปอยู่ในไฟล์ทรานสคริปต์บนดิสก์ของคุณ มันไปถึงผู้ให้บริการโมเดล และมันถูกคัดลอกโดยการรันซ้ำทุกครั้งและโดย subagent ทุกตัวที่รับบทสนทนาต่อ
เราพัฒนา AgentsRoom แอปเดสก์ท็อปที่รันเอเจนต์เขียนโค้ด เราจึงต้องแก้เรื่องนี้ให้ตัวเองก่อน เราทำพลาดสามครั้งในเดือนกันยายน 2026 นี่คือกฎที่เราได้มาในท้ายที่สุด สามความผิดพลาดที่ทำให้เกิดกฎนั้น และวิธีนำไปใช้ ไม่ว่าคุณจะใช้แอปของเราหรือไม่ก็ตาม
คำตอบสั้น ๆ
- ความลับไปถึงเอเจนต์ผ่านตัวแปรสภาพแวดล้อม และผ่านทางอื่นไม่ได้เลย ไม่ใช่ข้อความ ไม่ใช่ทิกเก็ต ไม่ใช่ skill ไม่ใช่ออปชันบนบรรทัดคำสั่ง
- เอเจนต์ใช้
$NAMEไม่เคยใช้ค่าจริง เชลล์จะขยายมันตอนคำสั่งทำงาน - เก็บค่าจริงไว้ครั้งเดียว นอกที่เก็บโค้ด เข้ารหัสด้วยคีย์เชนของระบบปฏิบัติการ แล้วอ้างอิงมันด้วยชื่อในที่อื่นทั้งหมด
- ความลับที่ผ่านบทสนทนาไปแล้วถือว่าไหม้แล้ว เปลี่ยนมันใหม่ แล้วค่อยเก็บกวาด
- การปิดบังค่าเป็นตาข่ายนิรภัย ไม่ใช่แผน มันจับสิ่งที่หน้าตาเหมือนคีย์ ไม่ใช่รหัสผ่านฐานข้อมูลที่อ่านแล้วเหมือนคำธรรมดา
ทำไมการวางครั้งนั้นแย่กว่าที่เห็น
สามอย่างเกิดขึ้นพร้อมกัน และมีแค่อย่างแรกที่เห็นได้ชัด
มันไปถึงผู้ให้บริการโมเดล นี่คือส่วนที่ทุกคนมองเห็น ตอนนี้คีย์ของคุณอยู่ในเนื้อหาของคำขอบนโครงสร้างพื้นฐานของคนอื่น ภายในบทสนทนาที่คุณแก้ไขไม่ได้
มันลงไปอยู่บนดิสก์ของคุณ ในรูปข้อความธรรมดา Claude Code, Codex, Antigravity CLI และตัวอื่น ๆ เก็บทรานสคริปต์ของบทสนทนาไว้เพื่อให้คุณกลับมาทำต่อได้ ไฟล์นั้นวางอยู่ในโฟลเดอร์บ้านของคุณ ไม่ถูกเข้ารหัส นานเท่าที่ CLI ยังเก็บประวัติของมันไว้ ลองค้นสตริง sk- ในทรานสคริปต์ของคุณสักครั้งแล้วดูว่าเจออะไรบ้าง
มันแพร่ออกไปด้านข้าง บทสนทนาคือความจำของเอเจนต์ ดังนั้นทุกอย่างที่คัดลอกบทสนทนาก็คัดลอกคีย์ไปด้วย : เซสชันที่ถูกเปิดต่อ เอเจนต์ที่ถูกฟอร์ก subagent ที่ถูกเปิดพร้อมบริบทของตัวแม่ สรุปที่ถูกเขียนลงไฟล์ในโปรเจกต์ เราเคยเห็นคีย์เดินทางจากข้อความในแชตไปอยู่ในคำอธิบายทิกเก็ต แล้วไปอยู่ในข้อความแรกของเอเจนต์ตัวที่สอง โดยที่ไม่มีใครทำอะไรผิดเลย
และตาข่ายนิรภัยตามปกติก็รับไม่ไหว การปิดบังค่าในเอาต์พุตทำงานด้วยรูปแบบ : sk-…, glpat-…, รูปทรงของ JWT มันไม่มีทางรู้ว่า thursday-harbour-71 คือรหัสผ่านฐานข้อมูล staging ของคุณ ในแอปของเราเอง เราปิดบังค่าที่ตรงกับรายการในเอาต์พุตของเทอร์มินัล และเราก็ยังถือว่านั่นเป็นตาข่ายใต้ห่วงกายกรรม ไม่ใช่ตัวห่วงกายกรรมเอง
กฎประตูเดียว
กฎอยู่ตรงนี้ ในบรรทัดเดียว : ข้อมูลรับรองไปถึงเอเจนต์ผ่านตัวแปรสภาพแวดล้อมของโปรเซสที่เอเจนต์ทำงานอยู่ และไม่ผ่านช่องทางอื่นใดทั้งสิ้น
ทุกอย่างที่เหลือเป็นข้อความตามตัวอักษร ข้อความที่คุณพิมพ์ คำอธิบายทิกเก็ต ไฟล์ skill, system prompt, ออปชันบนบรรทัดคำสั่ง : ทั้งหมดนั้นถูกอ่านโดยมนุษย์หรือโดยโมเดล ดังนั้นความลับที่ถูกเขียนไว้ตรงนั้นคือความลับที่ถูกเผยแพร่แล้ว
บรรทัดคำสั่งสมควรมีประโยคของตัวเอง เพราะมันให้ความรู้สึกปลอดภัยกว่าข้อความในแชต ทั้งที่ไม่ใช่ ค่าที่อยู่ใน --api-key=… มองเห็นได้จากทุกโปรเซสบนเครื่องผ่าน ps มันไปตกอยู่ในประวัติเชลล์ของคุณ มันถูกบันทึกโดยทุกอย่างที่จดคำสั่งที่ถูกเปิดขึ้นมา และมันโผล่ขึ้นมาอีกในเครื่องมือวินิจฉัยที่พิมพ์บรรทัดของโปรเซสกลับมาให้คุณดู ส่วนตัวแปรสภาพแวดล้อมของโปรเซสเดียวนั้นอ่านได้โดยโปรเซสนั้นกับ root พื้นผิวเล็กกว่า ความสะดวกเท่าเดิม
ส่วนเอเจนต์เองก็ไม่เคยต้องใช้ค่าจริงเลย มันแค่ต้องเขียนแบบนี้ :
curl -H "Authorization: Bearer $STRIPE_SECRET_KEY" https://api.stripe.com/v1/charges
เชลล์จะขยาย $STRIPE_SECRET_KEY ตอนรัน เอเจนต์เขียนตัวอักษรสิบเจ็ดตัวกับเครื่องหมายดอลลาร์หนึ่งตัว ทรานสคริปต์ของมันก็เก็บตัวอักษรสิบเจ็ดตัวกับเครื่องหมายดอลลาร์หนึ่งตัว
มันทำงานอย่างไรในแอปของเรา
กลไกสำคัญน้อยกว่ารูปทรง แต่รูปทรงจะลอกตามได้ง่ายกว่าถ้าคุณได้เห็นการนำไปใช้จริงสักตัว
ห้องนิรภัยเดียว ไฟล์เดียว AgentsRoom เก็บความลับไว้ในไฟล์เดียวในโฟลเดอร์บ้านของคุณ สิทธิ์ 0600 เข้ารหัสผ่านคีย์เชนของระบบปฏิบัติการ และยืนยันซ้ำทุกครั้งที่เขียน ไม่มีอะไรถูกซิงก์ขึ้นเซิร์ฟเวอร์ และไม่มีอะไรข้ามไปยังคอมพิวเตอร์เครื่องอื่น : ความลับเป็นของเครื่องที่ถือมันไว้ ถ้าคีย์เชนใช้งานไม่ได้ การบันทึกจะล้มเหลว แทนที่จะถอยไปเขียนเป็นข้อความธรรมดา
คุณบันทึกค่าจริงครั้งเดียว คำสั่งและการเชื่อมต่อ > ข้อมูลลับ ในโปรเจกต์ไหนก็ได้ ชื่อหนึ่งชื่อ (ตัวอักษร ตัวเลข จุด ขีด ขีดล่าง ยาว 64 ตัว เพื่อให้ใช้เป็นชื่อตัวแปรสภาพแวดล้อมได้เลย) และค่าหนึ่งค่า ที่พิมพ์ลงในช่องแบบรหัสผ่าน แถวที่ปรากฏขึ้นจะแสดงชื่อกับการอ้างอิงของมัน {{secret:STRIPE_SECRET_KEY}} และปุ่มที่คัดลอกการอ้างอิงนั้น ไม่มีปุ่มเปิดเผยค่า และไม่มีปุ่มคัดลอกค่า เพราะไม่มีเส้นทางโค้ดใดที่คืนค่าจริงกลับไปให้อินเทอร์เฟซ
คุณอ้างอิงมันตรงที่สภาพแวดล้อมถูกประกอบขึ้น แก้ไขเอเจนต์ > ขั้นสูง > ตัวแปรสภาพแวดล้อม หรือการตั้งค่าของโปรเจกต์ หรือการตั้งค่าของ provider หรือบรรทัดคำสั่งสำหรับงานพัฒนา :
STRIPE_SECRET_KEY={{secret:STRIPE_SECRET_KEY}}
ตอนเปิดใช้งาน โปรเซสหลักจะแทนค่าจริงลงในสภาพแวดล้อมของเทอร์มินัลที่มันกำลังจะสร้าง ชั้นอินเทอร์เฟซไม่เคยเห็น เอเจนต์ไม่เคยเห็น โทรศัพท์ก็ไม่เคยเห็น หน้าตัวจัดการความลับ พาคุณดูทีละหน้าจอ
เอเจนต์ค้นพบชื่อ ไม่ใช่ค่าจริง เอเจนต์ที่ต่อกับเครื่องมือ MCP ของเราเรียก secrets_list ได้ และจะได้รายการชื่อที่มีอยู่บนเครื่องนั้นกลับไป แค่นั้นก็พอให้มันมีประโยชน์แล้ว : มันพูดได้ว่า "คุณมี STRIPE_SECRET_KEY บันทึกไว้ ลองเพิ่ม STRIPE_SECRET_KEY={{secret:STRIPE_SECRET_KEY}} เข้าไปในสภาพแวดล้อมของเอเจนต์ตัวนี้ แล้วผมจะใช้ $STRIPE_SECRET_KEY" มันอ่านค่าจริงไม่ได้ แม้ในขณะที่กำลังรันคำสั่งที่ใช้ค่านั้นอยู่
สามความผิดพลาดที่เราปล่อยออกไป
กฎข้างบนฟังดูชัดเจนเมื่อเขียนออกมาแล้ว แต่มันคือแผลเป็นจากบั๊กสามตัว ทั้งหมดเกิดในเดือนกันยายน 2026 และทั้งหมดถูกแจ้งโดยผู้ใช้
การอ้างอิงที่เขียนไว้ในทิกเก็ตกลับออกมาเป็นค่าจริง
19 กันยายน Robert เขียนการจับคู่ไว้ในคำอธิบายทิกเก็ต ซึ่งก็คือ STRIPE_SECRET_KEY={{secret:STRIPE_SECRET_KEY}} ที่สมเหตุสมผลทุกประการ เพื่อให้ใครก็ตามที่หยิบทิกเก็ตนี้ไปทำรู้ว่าต้องตั้งค่าอะไร เมื่ออ่านทิกเก็ตผ่าน API ระบบคืนการอ้างอิงมาเหมือนเดิมไม่มีผิดเพี้ยน แต่เอเจนต์ที่ถูกเปิดจากทิกเก็ตนั้นกลับได้รับ ค่าจริง ในข้อความแรกของมัน
สาเหตุเป็นรายละเอียดของท่อน้ำภายในที่มีผลจริงจัง บรีฟของทิกเก็ตจะกลายเป็นพรอมต์แรกของเอเจนต์ ซึ่งเดินทางอยู่ภายในตัวแปรสภาพแวดล้อมของคำสั่งเปิดใช้งาน ตัวแก้การอ้างอิงของเราแทนค่าทุกค่าในสภาพแวดล้อม มันจึงแทนค่าในพรอมต์ไปด้วย คีย์เลยลงไปบนดิสก์และไปถึงผู้ให้บริการโมเดล ต้องเปลี่ยนคีย์ใหม่ ไม่มีทางเลี่ยง
การแก้ไขคือทำให้คำสั่งเปิดใช้งานของเอเจนต์เป็นข้อความตามตัวอักษร : เมื่อสภาพแวดล้อมมีไอดีของเอเจนต์อยู่ ตัวแปรที่ถือพรอมต์แรกจะไม่ถูกแตะต้อง ส่วนคำสั่งสำหรับงานพัฒนาที่ใช้ตัวแปรเดียวกันจะไม่มีไอดีของเอเจนต์ และยังแทนค่าเหมือนเดิม เรายอมรับผลข้างเคียงอย่างตั้งใจ : การอ้างอิงที่พิมพ์ไว้ในออปชัน CLI ของเอเจนต์ก็จะไม่ถูกแทนค่าเช่นกัน ซึ่งถูกต้องแล้ว เพราะบรรทัดคำสั่งลงเอยอยู่ใน ps และในล็อกอยู่ดี
บทเรียน : ประตูต้องแคบอย่างตั้งใจ "แทนค่าทุกที่ที่มันอาจมีประโยชน์" คือวิธีที่ทำให้ความลับไปจบลงในที่ที่มันไม่ควรอยู่เลย
การอ้างอิงที่ถูกวางลงในข้อความ ซึ่งไม่เคยถูกแทนค่า
22 กันยายน Cs040618 แจ้งปัญหาตรงกันข้าม : "ผมวางการอ้างอิงลงในบทสนทนา แล้วเอเจนต์ก็ไม่เข้าใจว่าคีย์นี้คืออะไร"
ไม่ใช่บั๊ก ข้อความเป็นข้อความตามตัวอักษรโดยการออกแบบ ซึ่งก็คือการแก้ไขจากสามวันก่อนหน้านั้นพอดี แต่ไม่มีอะไรในแอปที่บอกเรื่องนี้ในจังหวะที่ผู้ใช้ลงมือ และเอเจนต์ที่ได้รับ {{secret:…}} ในข้อความก็ไม่รู้เลยว่าจะตอบอะไร
เราแก้สามจุด ทั้งหมดเพื่อบอกว่าประตูอยู่ตรงไหน : คำแนะนำที่โผล่ขึ้นมาเมื่อคุณวางการอ้างอิงลงในช่องพิมพ์ข้อความและชี้ไปที่ตัวแปรสภาพแวดล้อม ข้อความช่วยเหลือเหนือรายการความลับที่ระบุชื่อสามช่องซึ่งการอ้างอิงจะถูกแทนค่า พร้อมบอกว่า "ไม่ใช่ในข้อความเด็ดขาด" และอีกหนึ่งบรรทัดในคำสั่งประจำตัวของเอเจนต์เอง ที่บอกมันว่าต้องตอบอะไรเมื่อมีการอ้างอิงมาถึงในข้อความ
"การตั้งค่า > ข้อมูลลับ" ไม่มีอยู่จริง
28 กันยายน เอเจนต์ของ Mohammad ส่งรายงานเข้ามา : ผู้ใช้บอกว่าเขาเพิ่ม OTPIQ_API_KEY ไว้ใน การตั้งค่า > ข้อมูลลับ บันทึกซ้ำหลายรอบตลอดสามสิบนาที แต่ secrets_list ก็ยังคืนความลับเก่าสามตัวเดิมอยู่ดี
เส้นทางการบันทึกไม่มีปัญหาเลย ความลับไม่เคยไปถึงห้องนิรภัยต่างหาก เพราะ ไม่มีหน้าความลับอยู่ในการตั้งค่า ข้อความช่วยเหลือหกจุดในแอปเดสก์ท็อป หนึ่งหน้าบนเว็บไซต์นี้ และคำสั่งประจำตัวของเอเจนต์ ต่างก็ส่งผู้คนไปยังหน้าจอที่ไม่มีอยู่จริง สิ่งที่มีอยู่จริงในการตั้งค่าคือบล็อกตัวแปรสภาพแวดล้อม เขาจึงพิมพ์โทเค็นลงไปตรงนั้น ในวงเล็บปีกกา ซึ่งไม่ใช่การอ้างอิง : ไม่เคยถูกแทนค่า ถูกส่งให้เอเจนต์ตามตัวอักษร และถูกซิงก์ไปกับโปรเจกต์ โทเค็นจึงออกจากเครื่องไปเรียบร้อย
เราแก้ข้อความให้ระบุเส้นทางจริง ทำให้เครื่องมือฝั่งเอเจนต์บอกได้ว่าความลับถูกเพิ่มที่ไหน และเพิ่มการตรวจสอบบนบล็อกสภาพแวดล้อมที่คอยเตือนเมื่อเจอข้อมูลรับรองที่ดูเหมือนค่าดิบ ชื่อในวงเล็บปีกกาที่ไม่ใช่การอ้างอิง และการอ้างอิงถึงความลับที่ไม่มีอยู่บนเครื่องนี้
บทเรียนตรงนี้ไม่เกี่ยวกับความลับเลยด้วยซ้ำ : เส้นทางที่ผิดในข้อความช่วยเหลือคือบั๊กด้านความปลอดภัย มันพาผู้ใช้ไปยังช่องที่ใกล้ที่สุดซึ่งดูเหมือนจะใช่
ถ้าคุณไม่ได้ใช้ AgentsRoom
กฎนี้เดินทางไปได้ เลือกวิธีที่เข้ากับการตั้งค่าของคุณ ทุกวิธีจบลงที่จุดเดียวกัน คือตัวแปรสภาพแวดล้อมในโปรเซสที่เอเจนต์ทำงานอยู่
- CLI ของโปรแกรมจัดการรหัสผ่าน
op run -- claudeกับ 1Password หรือตัวเทียบเท่าใน Bitwarden และ Doppler : เครื่องมือจะอ่านการอ้างอิงจากเทมเพลต ฉีดค่าจริงเข้าไปในสภาพแวดล้อมของโปรเซสลูก และไม่มีอะไรถูกเขียนลงดิสก์ direnvกับ.envrcที่อยู่ใน gitignore ง่าย อยู่บนเครื่อง แยกตามไดเรกทอรี เพิ่ม.envrcและ.env*ลงใน.gitignoreก่อนที่ค่าแรกจะเข้าไป ไม่ใช่หลังจากนั้น- ไฟล์
.envที่เอเจนต์ไม่เคยอ่าน เก็บมันไว้นอกที่เก็บโค้ดและโหลดมันในเชลล์ที่เปิดเอเจนต์ ถ้าไฟล์อยู่ในที่เก็บโค้ด สุดท้ายเอเจนต์ก็จะเปิดมัน ยกมันมาอ้างในข้อความ และพาคุณกลับไปที่จุดเริ่มต้น - ข้อมูลรับรองบนคลาวด์ : ใช้แบบอายุสั้น ใช้ GitHub OIDC ใน CI แทนคีย์ AWS ที่มีอายุยาว และใช้ workload identity แทนไฟล์คีย์ของ service account
ไม่ว่าคุณจะเลือกอะไร ใส่กฎนี้ลงในคำสั่งประจำตัวของเอเจนต์ด้วย เพื่อให้มันเลิกถาม แค่ย่อหน้าเดียวใน CLAUDE.md หรือ AGENTS.md ก็พอ : ห้ามขอค่าของข้อมูลรับรอง ห้ามเขียนค่านั้นลงในไฟล์ ให้ใช้ $NAME และบอกผู้ใช้ว่าต้องตั้งตัวแปรไหน เราเผยแพร่ skill เล็ก ๆ ตัวหนึ่ง ที่พูดแบบนั้นเป๊ะ ๆ และมันยาวแค่ห้าบรรทัด
ถ้าคีย์ผ่านบทสนทนาไปแล้ว
ทำตามลำดับนี้ และขั้นแรกไม่ใช่ทางเลือก
- เปลี่ยนคีย์ใหม่ คุณเรียกพรอมต์กลับคืนไม่ได้ ให้ถือว่าค่านั้นถูกเปิดเผยแล้วและออกค่าใหม่ออกมา
- ตามหาทรานสคริปต์ CLI เก็บไฟล์บทสนทนาไว้ในโฟลเดอร์บ้านของคุณ ค้นหาค่าเก่าในนั้นแล้วลบหรือตัดส่วนที่ตรงกันทิ้ง
- ตรวจที่ทางที่คัดลอกข้อความ ประวัติของโปรแกรมจัดการคลิปบอร์ด ทิกเก็ตหรืออิชชูที่ใช้บรีฟเอเจนต์ สรุปทุกอันที่เอเจนต์เขียนลงในที่เก็บโค้ด และ
git log -pถ้าเอเจนต์คอมมิทระหว่างที่ถือคีย์นั้นอยู่ - แล้วค่อยสร้างประตู ค่าใหม่อยู่หลังตัวแปรสภาพแวดล้อม อ้างอิงด้วยชื่อ และอัปเดตคำสั่งประจำตัวของเอเจนต์เพื่อให้ตัวถัดไปไม่ต้องถาม
ขั้นที่ 4 มาท้ายสุด เพราะกลไกที่สะอาดสะอ้านรอบคีย์ที่รั่วไปแล้วก็เป็นแค่การรั่วที่จัดวางเรียบร้อยขึ้นเท่านั้น
คำถามที่คนถามกันจริง ๆ
ทำไมคีย์ API ถึงไม่ควรอยู่ในพรอมต์ที่ส่งให้เอเจนต์ AI ?
เพราะพรอมต์เป็นสิ่งที่ถูกเก็บและถูกส่งต่อ Claude Code, Codex และ CLI ตัวอื่นเขียนบทสนทนาลงในไฟล์ทรานสคริปต์บนดิสก์ของคุณ และตัวข้อความเองก็ถูกส่งไปที่ผู้ให้บริการโมเดล จากตรงนั้นคีย์ยังอยู่ในประวัติคลิปบอร์ดของคุณ อยู่ในล็อกทุกตัวที่พิมพ์ข้อความซ้ำ และอยู่ในการรันซ้ำกับ subagent ทุกตัวที่คัดลอกบทสนทนาต่อไป การปิดบังค่าแบบจับรูปแบบจะจับสิ่งที่หน้าตาเหมือน sk- หรือ glpat- ได้ แต่จับรหัสผ่านฐานข้อมูลที่อ่านแล้วเหมือนคำธรรมดาไม่ได้
เอเจนต์เขียนโค้ดใช้ความลับที่มันอ่านไม่ได้อย่างไร ?
ผ่านตัวแปรสภาพแวดล้อม คุณใส่ค่าจริงไว้ในตัวแปรสภาพแวดล้อมของโปรเซสที่เอเจนต์ทำงานอยู่ แล้วเอเจนต์เขียน $STRIPE_SECRET_KEY ลงในคำสั่งแทนค่าจริง เชลล์จะขยายมันตอนคำสั่งทำงาน เอเจนต์ไม่เคยเห็นตัวอักษรเหล่านั้น ค่าจริงจึงไม่เคยเข้าไปในบทสนทนาหรือในทรานสคริปต์ของมัน
ส่งความลับเป็นอาร์กิวเมนต์บนบรรทัดคำสั่งแทนได้ไหม ?
ได้ แต่ไม่ควรทำ บรรทัดคำสั่งมองเห็นได้จากทุกโปรเซสบนเครื่องผ่าน ps มันเข้าไปอยู่ในประวัติของเชลล์ ในล็อกของโปรเซส และในเครื่องมือวินิจฉัยทุกตัวที่อ่านคำสั่งที่ถูกเปิดขึ้นมา ส่วนตัวแปรสภาพแวดล้อมของโปรเซสเดียวนั้นอ่านได้โดยโปรเซสนั้นกับ root เท่านั้น ซึ่งเป็นพื้นผิวที่เล็กกว่ามาก
AgentsRoom เก็บความลับที่เอเจนต์ใช้ไว้ที่ไหน ?
ในไฟล์เดียวในโฟลเดอร์บ้านของคุณ สิทธิ์ 0600 เข้ารหัสผ่านคีย์เชนของระบบปฏิบัติการ และอยู่บนเครื่องนั้นเครื่องเดียว ไม่มีอะไรถูกซิงก์ขึ้นเซิร์ฟเวอร์ และไม่มีปุ่มสำหรับแสดงค่าจริงอีกครั้ง แอปแสดงชื่อ เอเจนต์เห็นชื่อ และค่าจริงจะถูกถอดรหัสในโปรเซสหลักเท่านั้น ในจังหวะที่เทอร์มินัลหรือคำสั่งเริ่มทำงาน
จะเกิดอะไรขึ้นถ้าผมวางการอ้างอิงความลับลงในข้อความถึงเอเจนต์ ?
ไม่มีอะไรถูกแทนค่า และนั่นคือความตั้งใจ ข้อความ คำอธิบายทิกเก็ต skill และ system prompt ล้วนเป็นข้อความตามตัวอักษร การอ้างอิงที่เขียนไว้ตรงนั้นจึงไปถึงเอเจนต์ในสภาพเดิม มีเพียงค่าของตัวแปรสภาพแวดล้อมเท่านั้นที่ถูกแทนค่า เราเรียนรู้เรื่องนี้จากความเจ็บปวดจริง : การอ้างอิงที่เขียนไว้ในคำอธิบายทิกเก็ตเคยออกมาเป็นค่าจริงในข้อความแรกของเอเจนต์ที่ถูกเปิดจากทิกเก็ตนั้น
คีย์ผ่านบทสนทนาไปแล้ว ต้องทำอย่างไร ?
เปลี่ยนคีย์ใหม่ก่อนเป็นอย่างแรก ก่อนทำอะไรทั้งหมด เพราะคุณเรียกพรอมต์กลับคืนไม่ได้ : มันอยู่ฝั่งผู้ให้บริการแล้ว และอยู่ในไฟล์ทรานสคริปต์บนดิสก์ของคุณ จากนั้นลบหรือตัดทรานสคริปต์ที่มีคีย์อยู่ ตรวจโปรแกรมจัดการคลิปบอร์ดของคุณ และ grep ในที่เก็บโค้ดเผื่อว่าเอเจนต์เขียนคีย์ลงไฟล์ไว้ แล้วค่อยเอาค่าใหม่ไปไว้หลังตัวแปรสภาพแวดล้อม
สรุปสั้น
เอเจนต์ไม่จำเป็นต้องอ่านคีย์ของคุณ มันต้องการโปรเซสที่สภาพแวดล้อมของมันถือคีย์นั้นอยู่แล้วต่างหาก
บันทึกค่าจริงไว้ครั้งเดียว นอกที่เก็บโค้ด เข้ารหัสโดยระบบปฏิบัติการ อ้างอิงมันด้วยชื่อตรงที่สภาพแวดล้อมถูกประกอบขึ้น ปล่อยให้เอเจนต์เขียน $NAME และเก็บช่องทางอื่นทั้งหมดให้เป็นข้อความตามตัวอักษร รวมถึงช่องทางที่การแทนค่าน่าจะสะดวกดี เพราะช่องทางที่สะดวกนั่นแหละคือช่องทางที่ถูกเก็บและถูกส่งต่อ
และเมื่อคุณพลาด ซึ่งคุณจะพลาดแน่ ๆ ให้เปลี่ยนคีย์ก่อน แล้วค่อยเก็บกวาดทีหลัง
ดาวน์โหลด AgentsRoom
รันเอเจนต์ AI ทั้งหมดของคุณในทุกโปรเจกต์ จากหน้าต่างเดียว
แอปคู่หู: ตรวจสอบเอเจนต์ของคุณได้ทุกที่
นำของคุณเอง: Claude, Codex, Antigravity CLI, หรือผู้ให้บริการ AI อื่น ๆ
ส่งข้อบกพร่องและคำขอไปยังแบ็คล็อกสาธารณะของคุณโดยตรง
อ่านต่อ
Claude Code Routines: อะไรรันบนคลาวด์ อะไรอยู่บนเครื่องของคุณ และจะเลือกอย่างไร
Routines คือวิธีที่ Claude Code ใช้รันพรอมต์ที่บันทึกไว้โดยไม่ต้องมีคุณอยู่: ตามกำหนดเวลา เมื่อมีการเรียก API หรือเมื่อเกิดเหตุการณ์บน GitHub ในรูปแบบ cloud session บน clone ใหม่ของ repository ของคุณ ตอนนี้ยังอยู่ในสถานะ research preview Claude Code ยังมีวิธีจัดตารางงานในเครื่องอีกสองแบบ คืองานที่กำหนดเวลาของแอปเดสก์ท็อปและ /loop และทั้งสามแบบทำงานไม่เหมือนกัน: ช่วงห่างขั้นต่ำ การเข้าถึงไฟล์ในเครื่องของคุณ การขออนุญาต และสิ่งที่เกิดขึ้นเมื่อแล็ปท็อปเข้าสู่โหมดสลีป คู่มือนี้วางทั้งสามแบบเทียบกันพร้อมข้อจำกัดจากเอกสาร แล้วอธิบายว่าทำไมเอเจนต์เจ็ดตัวที่รันทุกคืนของเราจึงรันบนเครื่องในพื้นที่แทน
อ่านบทความวิธีการสื่อสารกับ AI Agents ของคุณ: Claude, Codex, Antigravity, Grok Build
โค้ดไม่ใช่ปัญหาหลักอีกต่อไป แต่การสื่อสารคือ นี่คือวิธีการพูดคุยกับ AI agents ของคุณ Claude, Codex, Antigravity และ Grok Build เพื่อให้ส่งมอบได้เร็วขึ้น แม่นยำขึ้น และใช้โทเคนให้น้อยลง
อ่านบทความบัญชี Claude เดียวบนคอมพิวเตอร์สองเครื่อง หรือใช้สองคน: อะไรทำได้บ้าง
บัญชี Claude เดียวลงชื่อเข้าใช้ได้บนทุกอุปกรณ์ของคุณ และทุกเครื่องใช้ขีดจำกัด 5 ชั่วโมงและขีดจำกัดรายสัปดาห์ชุดเดียวกัน ทั้ง Claude และ Claude Code รวมกัน การใช้บัญชีเดียวสองคนขัดกับข้อกำหนดของ Anthropic และไม่มีแพ็กเกจครอบครัว สิ่งที่เราตรวจสอบเมื่อวันที่ 25 ตุลาคม 2026 และวิธีดูว่าคอมพิวเตอร์เครื่องไหนใช้ไปเท่าไร
อ่านบทความ