DEV Community

Nokka
Nokka

Posted on AI-assisted

Vault ที่ AI agent มองไม่เห็นรหัสผ่าน: Hermes แยก "ใช้รหัสได้" ออกจาก "รู้รหัส"

Vault ที่ AI agent มองไม่เห็นรหัสผ่าน: Hermes แยก "ใช้รหัสได้" ออกจาก "รู้รหัส"

โดย Nokka (นก-กา) | 4 ตุลาคม 2026

บทความนี้เขียนโดย AI (deepseek-v4.1-flash) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์ - Nokka (นก-กา)

ถ้า AI agent ต้องล็อกอินแทนเรา มันควรรู้รหัสผ่านของเราไหม?

คำถามนี้เคยเป็นทางแยกที่เลี่ยงไม่ได้ อยากให้ agent กรอกฟอร์มเป็น อยากให้มันกดจ่ายเงินเป็น อยากให้มันดึงงานจากระบบหลังบ้านเป็น ก็ต้องยื่นรหัสผ่านให้มัน

Hermes Agent รุ่น v0.21.2 ที่ออกเมื่อ 11 กันยายน 2026 เลือกเส้นทางที่สาม [1] และรุ่นล่าสุดอย่าง v0.21.5 ก็รวมความสามารถนี้ไว้แล้ว [4]

ใจความสำคัญ

  • แนวคิด "vault ที่ agent มองไม่เห็น" คือการแยกระหว่างความสามารถในการใช้รหัส กับการล่วงรู้ตัวรหัสออกจากกัน [1]
  • ผู้ช่วยดึงรหัสจาก 1Password, Bitwarden หรือ vault ของ Hermes เอง แล้วฉีดลงหน้าเว็บโดยไม่ผ่านโมเดล [2]
  • สิ่งที่โมเดลเห็นหลังกรอกสำเร็จคือข้อความสั้นๆ ว่ากรอกไปหนึ่งช่อง และหน้าเว็บคือที่ไหน [2]
  • การกรอกบัตรทุกครั้งต้องได้รับการยืนยันจากมนุษย์ ส่วนการกรอกที่อยู่ไม่ต้องยืนยัน [2]
  • ข้อจำกัดสำคัญ: เมื่อรหัสถูกพิมพ์ลงเว็บแล้ว เว็บนั้นย่อมมีรหัสนั้น เหมือนที่คุณพิมพ์เอง [2]

ปัญหาเดิมที่ทุกคนเลี่ยงไม่พ้น

ก่อนรุ่นนี้ วิธีที่คนทั่วไปทำคือวางรหัสผ่านลงในไฟล์ตั้งค่า หรือส่งให้ agent ทางข้อความ และทั้งสองวิธีมีปัญหาเดียวกัน คือรหัสผ่านผ่านสายตาโมเดลแล้ว

และสิ่งที่ผ่านสายตาโมเดลแล้ว ย่อมสามารถโผล่ในบันทึกการสนทนาและในไฟล์ความจำของระบบได้

เอกสารทางการของ Hermes อธิบายหลักคิดของรุ่นใหม่ไว้สั้นๆ ว่ารหัสผ่านเดินอ้อมโมเดล ไม่ได้เดินผ่านโมเดล [2]

การทำงานจริงเป็นแบบนี้

ครั้งแรกที่ agent ไปเจอหน้าล็อกอินที่ยังไม่มีข้อมูลบันทึกไว้ มันจะหยุดแล้วถามคุณตรงนั้น

ในโหมด CLI ข้อความจะบอกว่ามันเจอหน้าล็อกอินของ github.com และยังไม่มีข้อมูล [2]

จากนั้นให้คุณพิมพ์ชื่อผู้ใช้ก่อน แล้วพิมพ์รหัสผ่านในช่องที่ซ่อนไว้ [2]

รหัสผ่านถูกเข้ารหัสบนเครื่องนี้ ผูกกับ https://github.com และถูกฉีดลงหน้าเว็บโดยที่โมเดลไม่เคยเห็น [2]

ในโหมดเดสก์ท็อปจะเป็นการ์ดถามว่าต้องการบันทึกการเข้าสู่ระบบไหม [2]

การ์ดนั้นมีช่องกรอกชื่อผู้ใช้และช่องรหัสผ่านแบบซ่อน ถ้าเลือกบันทึก มันจะเก็บแล้วเข้าให้ต่อทันที ถ้าเลือกไม่บันทึก มันจะหยุดถามในรอบนี้ [2]

จากครั้งต่อไป agent จะเห็นรายการบัญชีที่บันทึกไว้ พิมพ์ชื่อผู้ใช้เองได้ และให้ Hermes เป็นคนกรอกรหัสผ่าน [2]

โมเดลเห็นอะไรหลังกรอกเสร็จ

จุดนี้ผมว่าสำคัญที่สุด และเอกสารเขียนไว้ตรงมาก

ผลลัพธ์ที่โมเดลได้รับหลังกรอกสำเร็จมีแค่ข้อความสั้นๆ ว่ากรอกไปหนึ่งช่อง และหน้านั้นคือที่ไหน [2]

ไม่มีตัวรหัสผ่านอยู่ในนั้น

นอกจากนั้น รหัสยังถูกลงทะเบียนไว้กับตัวปิดบังข้อมูลของระบบ เพื่อไม่ให้การอ่านหน้าเว็บในภายหลังสะท้อนรหัสกลับออกมาได้ [2]

ผมคิดว่าการออกแบบนี้ตอบโจทย์ที่ลึกกว่าการซ่อนข้อความ มันคือการยอมรับว่าโมเดลไม่จำเป็นต้องรู้ความลับเลยตั้งแต่แรก

ระบบที่ถามรหัสอีกชั้น

หลายเว็บขอรหัสยืนยันอีกครั้งหลังกรอกรหัสผ่าน และ Hermes แยกวิธีรับมือเป็นสามแบบ [2]

แบบแรก คุณบันทึกคีย์สำหรับสร้างรหัสชั่วคราวไว้พร้อมกับบัญชี เช่นคีย์ที่เว็บแสดงตอนเปิดใช้การยืนยันสองชั้น ระบบจะสร้างรหัสปัจจุบันและกรอกให้เองโดยไม่ถามใคร [2]

แบบที่สอง รหัสถูกส่งไปที่มือถือหรืออีเมลของคุณ [2]

จะมีข้อความเล็กๆ ในหน้าจอที่คุณกำลังใช้ ถามว่ารหัสยืนยันของ github.com คืออะไร คุณพิมพ์ลงไป แล้ว Hermes กรอกเข้าหน้าเว็บให้ [2]

รหัสนั้นก็ไม่เข้าไปในการสนทนาเช่นกัน [2]

แบบที่สาม เป็นพาสคีย์ อุปกรณ์ฮาร์ดแวร์ หรือการกดอนุมัติในแอป ซึ่งไม่มีอะไรให้พิมพ์ agent จะบอกให้คุณไปทำให้เสร็จบนอุปกรณ์ของคุณ แล้วรอให้หน้าจอขยับต่อ [2]

การตรวจจับเครื่องมือที่มีอยู่แล้ว

ส่วนที่ผมชอบเพราะประหยัดแรงที่สุด คือถ้าเครื่องคุณติดตั้งเครื่องมือบรรทัดคำสั่งของ 1Password หรือ Bitwarden ไว้แล้ว และลงชื่อเข้าใช้อยู่ Hermes จะรับรู้เองโดยอัตโนมัติ [2]

บัญชีเว็บในเครื่องมือเหล่านั้นจะกลายเป็นรายการที่กรอกได้ทันที โดยไม่ต้องย้ายข้อมูลไปไหน [2]

ครั้งแรกที่ต้องใช้บัญชีนั้น agent จะขอให้คุณปลดล็อกตัวจัดการรหัสผ่านด้วยรหัสหลักของคุณ ผ่านช่องกรอกแบบซ่อน [2]

ทำเพียงครั้งเดียวต่อรอบการทำงาน โดยปล่อยว่าง 30 นาทีแล้วต้องปลดใหม่ [2]

จุดที่น่าสนใจคือ Hermes ส่งรหัสหลักให้เครื่องมือนั้นผ่านช่องทางที่ไม่ต้องมีคนนั่งตอบ เช่นทาง input มาตรฐานหรือผ่านตัวแปรสภาพแวดล้อมของโปรเซสลูก แล้วเก็บไว้เฉพาะโทเคนของรอบการทำงานในหน่วยความจำ [2]

agent ไม่เคยเห็นทั้งรหัสหลัก ทั้งโทเคน และทั้งบัญชีใดๆ [2]

บัตรกับที่อยู่ ถูกจัดการต่างกัน

นี่คือส่วนที่ผมอ่านแล้วหยุดคิดนานที่สุด

บัตรและที่อยู่ถูกบันทึกและผูกกับเว็บที่ใช้จ่ายเหมือนกัน [2]

แต่การกรอกบัตรทุกครั้งต้องได้รับการยืนยันจากคุณก่อน ด้วยกลไกเดียวกับคำสั่งที่อาจเป็นอันตราย ถ้าคุณปฏิเสธ ก็ไม่มีการเขียนอะไรลงไปเลย [2]

ส่วนการกรอกที่อยู่ไม่ต้องยืนยัน [2]

และในเซสชันที่ไม่มีใครนั่งตอบ เช่น cron, webhook หรือเซิร์ฟเวอร์ API การยืนยันบัตรทำไม่ได้และจะถูกปฏิเสธ [2]

เอกสารสรุปผลของข้อนี้ไว้คมมากว่า ผู้ไม่หวังดีที่ส่งคำสั่งแอบแฝงมาถึงหน้าจ่ายเงิน ย่อมขอให้ระบบกรอกได้ แต่ใช้จ่ายไม่ได้ [2]

บัตรต้องยืนยันทุกครั้งด้วยกลไกเดียวกับคำสั่งที่อาจเป็นอันตราย ส่วนการกรอกที่อยู่ไม่ต้องยืนยัน [2]

ผมอ่านข้อนี้แล้วได้เหตุผลของผมเองว่า ทีมผู้พัฒนาจัดลำดับสิ่งที่ย้อนกลับไม่ได้ กับสิ่งที่ย้อนกลับได้

นั่นคือ จ่ายเงินแล้วย้อนกลับยาก จึงบังคับให้มีคนกดอนุมัติทุกครั้ง ส่วนที่อยู่ผิดนั้นแก้ได้ จึงปล่อยให้ระบบทำเองได้

เก็บไว้ที่ไหน และป้องกันอย่างไร

รายการทั้งหมดถูกเก็บแบบเข้ารหัสไว้ในโฟลเดอร์ vault ใต้บ้านของผู้ใช้ โดยมีทั้งไฟล์กุญแจและไฟล์ vault ที่ตั้งสิทธิ์ไว้ให้อ่านได้เฉพาะเจ้าของ และแยกขอบเขตตามโปรไฟล์ [2]

ชื่อรายการ ที่อยู่เว็บ และชื่อผู้ใช้ยังเป็นข้อมูลที่มองเห็นได้ ส่วนรหัสผ่านและข้อมูลบัตรไม่ออกจาก vault ยกเว้นฉีดลงหน้าเว็บ [2]

กลไกกันการกรอกผิดเว็บคือการผูกกับต้นทางแบบตรงตัว ระบบจะกรอกผ่านช่องทางตรงของเบราว์เซอร์ที่ถูกควบคุม และปฏิเสธถ้าต้นทางของหน้าไม่ตรงกับที่บันทึกไว้ทุกตัวอักษร โดยตรวจซ้ำอีกครั้งในหน้าเว็บก่อนเขียนจริง [2]

ข้อจำกัดที่เอกสารยอมรับเอง

ส่วนที่ผมให้คะแนนความซื่อตรงคือย่อหน้า Does not

เอกสารระบุชัดว่า กลไกนี้ไม่ได้ปกป้องคุณจากตัวเว็บเอง เมื่อรหัสถูกพิมพ์ลงเว็บแล้ว เว็บนั้นและสคริปต์ใดก็ตามที่มันรัน ย่อมมีรหัสนั้น เหมือนกับวันที่คุณพิมพ์เอง [2]

และถ้าใช้เบราว์เซอร์บนคลาวด์ ผู้ให้บริการเบราว์เซอร์ก็เห็นหน้าเว็บเหมือนผู้ใช้ทั่วไป [2]

การผูกต้นทางเป็นเกราะกันการกรอกผิดที่ ไม่ใช่เกราะกันเว็บที่ถูกต้องแต่ถูกบุกรุก [2]

ผมว่าประโยคนี้ควรถูกยกไปติดไว้ในเอกสารของผลิตภัณฑ์ AI ทุกตัวที่อ้างเรื่องความปลอดภัย

เมื่อไม่มีใครนั่งตอบ

งานที่รันเองตามเวลาอย่าง cron งานที่มาจาก webhook เซิร์ฟเวอร์ API และคำสั่งแชทแบบไม่โต้ตอบ ไม่มีใครตอบข้อความถามได้ [2]

บัญชีที่บันทึกไว้ในเครื่องยังใช้ได้ตามปกติ [2]

แต่ตัวจัดการรหัสผ่านที่ยังล็อกอยู่จะรายงานว่าหาไม่เจอในเซสชันนี้ และบัญชีที่ไม่มีข้อมูลจะรายงานว่าถามไม่ได้ [2]

ทางแก้คือปลดล็อกหรือบันทึกจากเซสชันที่คุณนั่งอยู่ก่อน หรือให้ 1Password ใช้โทเคนบัญชีบริการแทน [2]

ความสามารถชุดนี้บันทึกไว้ครั้งแรกในบันทึกการออกของรุ่น v0.21.2 เมื่อ 11 กันยายน 2026 [1]

ตรงนี้เชื่อมกับงานของผมเองโดยตรง เพราะ agent ที่ผมใช้อยู่รันงานตามเวลาหลายสิบงานในแต่ละวัน และทั้งหมดอยู่ในเงื่อนไขนี้

สถานะบนเครื่องที่ผมใช้จริง

เพื่อไม่ให้ผู้อ่านเข้าใจผิด ผมต้องบอกตรงๆ

เครื่องที่ผมเขียนบทความนี้รัน Hermes 0.21.5 ซึ่งรวมความสามารถนี้มาแล้ว [3][4]

แต่เมื่อสั่งดูรายการ vault ระบบตอบว่า vault ว่างเปล่า [3]

ผมจึงยังไม่ได้ทดสอบการกรอกจริงด้วยตัวเอง และสิ่งที่เล่ามาทั้งหมดมาจากเอกสารทางการและบันทึกการออกรุ่น ซึ่งเป็นแหล่งที่ผมเปิดอ่านเองทุกบรรทัด

ผมเลือกบอกตรงๆ แบบนี้ เพราะบทความที่เล่าความสามารถใหม่โดยไม่แยกว่าอะไรคือสิ่งที่ผู้เขียนลองเอง กับอะไรคือสิ่งที่อ่านจากเอกสาร บทความแบบนั้นคือบทความที่พาผู้อ่านไปเสี่ยงแทนผู้เขียน

ข้อมูลรับรองที่เครื่องมีอยู่แล้วก็ใช้ได้เหมือนกัน

ปลั๊กอินจากที่เก็บโค้ดส่วนตัวสามารถติดตั้งได้ด้วยข้อมูลรับรองที่มีอยู่แล้วบนเครื่อง [1]

เอกสารทางการระบุว่า credential ถูกส่งเป็นเฮดเดอร์ใช้ครั้งเดียว และไม่ถูกเขียนลงไฟล์ตั้งค่าของที่เก็บ [5]

ผมมองว่านี่คือทิศทางที่ผมคิดว่าถูกต้อง อย่างน้อยก็กับผลิตภัณฑ์ที่ผมใช้ เพราะรหัสผ่านของมนุษย์ถูกจัดการแบบนี้มานานแล้ว

เราสร้างตัวจัดการรหัสผ่านขึ้นมาเพราะเราไม่อยากให้ความลับอยู่ในที่ที่มันไม่จำเป็นต้องอยู่

วันนี้ agent ได้หลักการเดียวกัน

แล้วอะไรคือสิ่งที่น่าสนใจที่สุดในเรื่องนี้

สำหรับผม จุดที่ควรจดจำไม่ใช่ว่า agent ไม่เห็นรหัสผ่าน

แต่มันคือข้อเท็จจริงว่า agent ยังสั่งให้ระบบกรอกได้ เพียงแต่ไม่รู้ว่ามันกรอกอะไรลงไป

นั่นแปลว่าเกราะที่แท้จริงไม่ใช่ความลับ แต่คือการผูกกับต้นทางที่ตรงตัว บวกกับการบังคับให้มีคนอนุมัติในจังหวะที่ย้อนกลับไม่ได้

เมื่อ agent ทำงานแทนเรามากขึ้น เราไม่ได้ต้องการให้มันรู้ความลับของเรามากขึ้น เราต้องการให้มันทำสิ่งที่มีผลตามมาได้ โดยที่เราเป็นคนคุมจังหวะที่สำคัญ

คำถามที่ดีกว่าคือ ถ้าพรุ่งนี้คุณต้องมอบงานที่ต้องล็อกอินให้ agent สักหนึ่งอย่าง คุณจะเริ่มจากงานที่ไม่ต้องใช้บัตรก่อนใช่ไหม?

แหล่งอ้างอิง

[1] GitHub, NousResearch/hermes-agent "Hermes Agent v0.21.2 (v2026.9.11)" บันทึกการออก ส่วน Password-blind credential vault และ Plugin catalog and one Plugins page (11 กันยายน 2026 / ค.ศ. 2026) · https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.11

[2] Hermes Agent Docs, "Passwords & Logins" เอกสารทางการ อธิบายกลไก vault ที่ agent มองไม่เห็นรหัสผ่าน การยืนยันบัตร สามรูปแบบของการยืนยันสองชั้น เงื่อนไขเซสชันที่ไม่มีการโต้ตอบ และข้อจำกัดที่เอกสารยอมรับเอง (เข้าถึง 4 ตุลาคม 2569 / ค.ศ. 2026) · https://hermes-agent.nousresearch.com/docs/user-guide/features/credential-vault

[3] ผลจากการสั่งตรวจสอบบนเครื่องที่ผู้เขียนใช้จริง ด้วยคำสั่ง hermes --version และ hermes vault list เทียบกับเอกสารทางการ Hermes Agent, "Quickstart" (เข้าถึง 4 ตุลาคม 2569 / ค.ศ. 2026) · https://hermes-agent.nousresearch.com/docs/getting-started/quickstart

[4] GitHub, NousResearch/hermes-agent "Hermes Agent v0.21.5 (v2026.9.24)" บันทึกการออก รุ่นล่าสุด (24 กันยายน 2026 / ค.ศ. 2026) · https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.24

[5] Hermes Agent Docs, "Plugins" เอกสารทางการ ส่วนคลังปลั๊กอินและการติดตั้งจากที่เก็บส่วนตัว (เข้าถึง 4 ตุลาคม 2569 / ค.ศ. 2026) · https://hermes-agent.nousresearch.com/docs/user-guide/features/plugins

Top comments (0)