Vercel ได้เปิดตัว AI SDK เวอร์ชัน 7 พร้อมฟีเจอร์ scoped tool context ที่บังคับให้แต่ละเครื่องมือ (tool) ใน AI agent ได้รับเฉพาะความลับ (secrets) ที่ระบุไว้อย่างชัดเจนเท่านั้น การจำกัดการเข้าถึงนี้ช่วยให้นักพัฒนาสามารถป้องกันไม่ให้เครื่องมือจากบุคคลที่สามมองเห็นข้อมูลรับรอง (credentials) ทั้งหมดที่เก็บไว้ใน environment โดยไม่ตั้งใจ
Why the change matters
AI agent มักจะเชื่อมต่อบริการภายนอกหลายอย่างเข้าด้วยกัน เช่น การตรวจสอบคำสั่งซื้อ, การสร้างตั๋วสนับสนุน, หรือการประมวลผลการชำระเงิน ซึ่งแต่ละอย่างต้องใช้ API keys หรือ URL ของตัวเอง ทางลัดที่ใช้กันบ่อยคือการส่งออบเจกต์ process.env ทั้งหมดให้กับทุกเครื่องมือ:
execute(input, { context: process.env })
รูปแบบดังกล่าวทำให้เกิด การขยายสิทธิ์โดยนัย (implicit privilege expansion): การเพิ่มเครื่องมือใหม่จะทำให้เครื่องมือนั้นเข้าถึงความลับที่มีอยู่ทั้งหมดได้ทันที รวมถึงรหัสผ่านฐานข้อมูลหรือโทเคนการชำระเงิน โดยไม่มีการแจ้งเตือนในการตรวจสอบโค้ด (code review) ความเสี่ยงคือหากเครื่องมือถูกเจาะระบบหรือมีบั๊ก อาจทำให้ข้อมูลรับรองที่ไม่ได้มีไว้สำหรับเครื่องมือนั้นรั่วไหลออกมาได้
How scoped tool context works
ใน SDK เวอร์ชัน 7 เครื่องมือจะประกาศ context schema ซึ่งเป็นการกำหนดฟิลด์ที่จำเป็นต้องใช้โดยอิงจาก Zod เมื่อ agent เรียกใช้งานเครื่องมือ ผู้เรียกจะส่งออบเจกต์ toolsContext ที่มีเฉพาะฟิลด์ที่ประกาศไว้เท่านั้น SDK จะตรวจสอบรูปแบบ (shape) ก่อนการทำงาน และหากมีคีย์ที่ขาดหายไปหรือเกินมาจะทำให้เกิดข้อผิดพลาด
ตัวอย่างการสาธิตแบบง่ายแสดงให้เห็นเครื่องมือสองตัวที่มีความต้องการต่างกัน:
- lookupOrder – ต้องการ
baseUrlเพื่อเรียกใช้บริการคำสั่งซื้อภายใน - createTicket – ต้องการ
supportTokenเพื่อเปิดตั๋วสนับสนุน
แต่ละเครื่องมือจะส่งออก (export) contextSchema ที่ระบุคีย์ที่จำเป็นเพียงคีย์เดียว เมื่อ agent ทำงาน มันจะส่ง:
{
lookupOrder: { baseUrl: "https://orders.internal" },
createTicket: { supportToken: "s3cr3t-token" }
}
เฉพาะ lookupOrder เท่านั้นที่เห็น baseUrl; createTicket จะไม่สามารถเข้าถึงได้ และในทางกลับกัน SDK จะบังคับใช้ขอบเขตนี้ในขณะรันไทม์ (runtime) เปลี่ยนจากความสัมพันธ์ที่ซ่อนอยู่ให้กลายเป็นรายการความสามารถ (capability list) ที่ชัดเจนซึ่งผู้ตรวจสอบสามารถตรวจสอบได้
Security upside
- จำกัดการเปิดเผยข้อมูล – ข้อมูลรับรองจะถูกส่งไปยังที่ที่จำเป็นต้องใช้เท่านั้น
- ตรวจสอบบริบท (context) – หากฟิลด์ไม่ตรงกันหรือขาดหายไป การทำงานจะถูกยกเลิกทันที
- ทำให้ความสามารถชัดเจน – ผู้ตรวจสอบสามารถเห็นได้ชัดเจนว่าแต่ละเครื่องมือสามารถเข้าถึงอะไรได้บ้าง
- ลดขอบเขตความเสียหาย (blast radius) – หากเครื่องมือถูกเจาะระบบ ผู้โจมตีจะได้รับเพียงความลับที่เครื่องมือนั้นได้รับอนุญาตเท่านั้น
ฟีเจอร์นี้ ไม่ได้ มาแทนที่การทำ sandboxing แบบดั้งเดิม นักพัฒนายังคงต้องใช้การปกปิดข้อมูลใน Log (log redaction), การควบคุมการส่งข้อมูลออกทางเครือข่าย (network egress controls) และการหมุนเวียนโทเคน (token rotation) อย่างสม่ำเสมอ Scoped context เป็นเพียงการสร้างขอบเขต ไม่ใช่การปิดตายห้องทั้งห้อง
What developers need to adjust
- กำหนด schema สำหรับทุกเครื่องมือ – ใช้ไลบรารี Zod ที่มาพร้อมกับ SDK
- ส่ง
toolsContextที่จำกัดขอบเขต – หลีกเลี่ยงการใช้process.envแบบครอบจักรวาล - ตรวจสอบ agent ที่มีอยู่ – ระบุความลับใดๆ ที่สามารถนำออกจาก tool calls ได้
- เพิ่มการทดสอบอัตโนมัติ – เพื่อให้แน่ใจว่าการตรวจสอบ context จะล้มเหลวเมื่อมีการฉีดข้อมูลส่วนเกินเข้าไป
การเริ่มต้นใช้งานอย่างรวดเร็วมีลักษณะดังนี้:
mkdir scoped-tools && cd scoped-tools
npm init -y
npm install ai zod
npm install -D typescript tsx @types/node
สร้าง demo.ts, ประกาศ contextSchema ของแต่ละเครื่องมือ และรันด้วย tsx demo.ts SDK จะแจ้งข้อผิดพลาดหากคุณพยายามให้ความลับแก่เครื่องมือที่ไม่ได้ร้องขอ
Counter-point
บางทีมอาจโต้แย้งว่าการต้องกำหนด schema เพิ่มเติมเป็นการเพิ่ม boilerplate และทำให้การสร้างต้นแบบ (prototyping) ช้าลง แม้จะเป็นเรื่องจริง แต่ต้นทุนนั้นถือว่าน้อยมาก—เพียงไม่กี่บรรทัดต่อเครื่องมือ—และผลตอบแทนด้านความปลอดภัยจะเพิ่มขึ้นตามจำนวนบริการที่เชื่อมต่อ ในสภาพแวดล้อมที่ต้องจัดการข้อมูลการชำระเงินหรือข้อมูลส่วนบุคคล ข้อดีที่ได้รับนั้นคุ้มค่าเกินกว่าจะมองข้าม
What to watch next
- ตัวชี้วัดการใช้งาน (Adoption metrics) – ผู้ใช้งานกลุ่มแรกๆ รายงานว่าพบเหตุการณ์ความลับรั่วไหลน้อยลง
- เครื่องมือในชุมชน (Community tooling) – ปลั๊กอินที่สร้าง context schemas โดยอัตโนมัติจากไฟล์กำหนดค่า (configuration files)
- การปล่อย SDK ในอนาคต – มีสัญญาณว่า Vercel อาจขยายขอบเขตของ scoped contexts ให้ครอบคลุมถึงสิทธิ์การเข้าถึงเครือข่าย (network permissions) และการจำกัดอัตราการเรียกใช้งาน (rate-limit caps)
หากคุณกำลังสร้าง AI agent ด้วย Vercel’s SDK อยู่แล้ว ขั้นตอนแรกคือการตรวจสอบการใช้งาน process.env ในปัจจุบันของคุณ ระบุค่าเพียงค่าเดียวที่สามารถนำออกจาก tool calls ทั้งหมด และเปลี่ยนรูปแบบการใช้แบบครอบจักรวาลให้เป็น toolsContext แบบกำหนดขอบเขต ผลลัพธ์ที่ได้คือความปลอดภัยที่รัดกุมยิ่งขึ้นโดยไม่สูญเสียความยืดหยุ่นที่ทำให้ AI agent ทรงพลัง
