Vercel ने त्यांच्या AI SDK चे व्हर्जन 7 लाँच केले आहे, ज्यामध्ये scoped tool context हे वैशिष्ट्य देण्यात आले आहे. हे वैशिष्ट्य AI एजंटमधील प्रत्येक टूलला (tool) केवळ त्याने स्पष्टपणे घोषित केलेले सीक्रेट्स (secrets) प्राप्त करण्यास भाग पाडते. एक्सपोजर मर्यादित करून, डेव्हलपर्स त्रयस्थ (third-party) टूल्सना त्यांच्या एन्व्हायरमेंटमध्ये (environment) साठवलेली सर्व क्रेडेंशियल्स (credentials) चुकून पाहण्यापासून रोखू शकतात.

हा बदल का महत्त्वाचा आहे

AI एजंट्स अनेकदा अनेक बाह्य सेवा एकत्र जोडतात—जसे की ऑर्डर शोधणे (order lookups), तिकीट तयार करणे (ticket creation), पेमेंट प्रोसेसिंग—ज्यामध्ये प्रत्येक सेवेसाठी स्वतःच्या API की किंवा URLs ची आवश्यकता असते. एक सामान्य शॉर्टकट म्हणजे प्रत्येक टूलला संपूर्ण process.env ऑब्जेक्ट देणे:

execute(input, { context: process.env })

ही पद्धत implicit privilege expansion तयार करते: एखादे नवीन टूल जोडल्यास, कोणत्याही कोड रिव्ह्यू फ्लॅगशिवाय (code review flag) त्याला डेटाबेस पासवर्ड किंवा पेमेंट टोकन्ससह सर्व विद्यमान सीक्रेट्सचा प्रवेश त्वरित मिळतो. याचा धोका असा आहे की एखादे असुरक्षित किंवा बग असलेले टूल अचानक अशी क्रेडेंशियल्स लीक करू शकते जी त्याच्यासाठी कधीही नव्हती.

scoped tool context कसे कार्य करते

SDK 7 मध्ये, एक टूल context schema घोषित करते—जे त्याला नेमक्या कोणत्या फील्ड्सची (fields) गरज आहे याचे Zod-आधारित व्याख्यान (definition) असते. जेव्हा एजंट एखादे टूल कॉल करतो, तेव्हा कॉलर (caller) एक toolsContext ऑब्जेक्ट पुरवतो ज्यामध्ये केवळ घोषित केलेली फील्ड्स असतात. SDK अंमलबजावणीपूर्वी (execution) याच्या आकाराची (shape) पडताळणी करते, आणि कोणतीही गहाळ किंवा अतिरिक्त की (key) असल्यास एरर (error) येतो.

एक किमान डेमो दोन टूल्स दाखवतो ज्यांच्या गरजा वेगवेगळ्या आहेत:

  • lookupOrder – अंतर्गत ऑर्डर सर्व्हिस कॉल करण्यासाठी baseUrl ची आवश्यकता असते.
  • createTicket – सपोर्ट तिकीट उघडण्यासाठी supportToken ची आवश्यकता असते.

प्रत्येक टूल एक contextSchema एक्सपोर्ट करते ज्यामध्ये त्याच्या आवश्यक असलेल्या एकमेव कीची यादी असते. जेव्हा एजंट चालतो, तेव्हा तो खालीलप्रमाणे पास करतो:

{
  lookupOrder: { baseUrl: "https://orders.internal" },
  createTicket: { supportToken: "s3cr3t-token" }
}

केवळ lookupOrder ला baseUrl दिसते; createTicket त्याला कधीही स्पर्श करत नाही आणि याच्या उलटही घडते. SDK रनटाइममध्ये (runtime) ही सीमा लागू करते, ज्यामुळे एक लपलेली डिपेंडन्सी (dependency) स्पष्ट क्षमता सूचीमध्ये (explicit capability list) रूपांतरित होते, ज्याचे रिव्ह्यूअर्सद्वारे ऑडिट केले जाऊ शकते.

सुरक्षेचे फायदे

  • डेटा एक्सपोजर मर्यादित करते – क्रेडेंशियल्स जिथे आवश्यक आहेत तिथेच राहतात.
  • कॉन्टेक्स्टची पडताळणी करते – विसंगत किंवा गहाळ फील्ड्समुळे अंमलबजावणी थांबवली जाते.
  • क्षमता स्पष्ट करते – रिव्ह्यूअर्स प्रत्येक टूल नेमक्या काय गोष्टी एक्सेस करू शकते हे पाहू शकतात.
  • ब्लास्ट रेडियस (blast radius) कमी करते – जर एखादे टूल कॉम्प्रोमाइज झाले, तर अटॅकरला केवळ त्या टूलला परवानगी असलेल्या सीक्रेट्सचाच प्रवेश मिळतो.

हे वैशिष्ट्य पारंपारिक सँडबॉक्सिंगला (sandboxing) पर्याय नाही. डेव्हलपर्सना अजूनही लॉग रिडक्शन (log redaction), नेटवर्क एग्रेस कंट्रोल्स (network egress controls) आणि नियमित टोकन रोटेशनचा वापर करावा लागेल. स्कोपड कॉन्टेक्स्ट ही एक सीमा आहे; ती संपूर्ण खोली सील करत नाही.

डेव्हलपर्सना काय बदल करण्याची आवश्यकता आहे

  1. प्रत्येक टूलसाठी स्कीमा (schema) परिभाषित करा – SDK सोबत येणाऱ्या Zod लायब्ररीचा वापर करा.
  2. मर्यादित toolsContext पास करा – सर्वसमावेशक process.env टाळा.
  3. विद्यमान एजंट्सचे पुनरावलोकन करा – टूल कॉल्समधून काढता येतील असे कोणतेही सीक्रेट्स ओळखा.
  4. ऑटोमेटेड टेस्ट्स जोडा – अतिरिक्त डेटा इंजेक्ट केल्यावर कॉन्टेक्स्ट व्हॅलिडेशन फेल होते याची खात्री करा.

क्विक स्टार्ट खालीलप्रमाणे दिसते:

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)

काही टीम्स असा युक्तिवाद करू शकतात की अतिरिक्त स्कीमा व्याख्यांमुळे बॉयलरप्लेट (boilerplate) वाढते आणि प्रोटोटाइपिंगचा वेग मंदावतो. हे खरे असले तरी, याची किंमत कमी आहे—प्रत्येक टूलसाठी फक्त काही ओळी—आणि इंटिग्रेटेड सेवांच्या संख्येनुसार सुरक्षेचा फायदा वाढत जातो. पेमेंट डेटा किंवा वैयक्तिक माहिती हाताळणाऱ्या वातावरणात, हा तडजोड (trade-off) दुर्लक्षित करणे कठीण आहे.

पुढे काय पाहावे

  • अडॉप्शन मेट्रिक्स (Adoption metrics) – सुरुवातीचे वापरकर्ते सीक्रेट-लीकच्या घटना कमी झाल्याचे रिपोर्ट करत आहेत.
  • कम्युनिटी टूलिंग – कॉन्फिगरेशन फाइल्समधून कॉन्टेक्स्ट स्कीमा ऑटो-जनरेट करणारे प्लग-इन्स.
  • भविष्यातील SDK रिलीज – Vercel स्कोपड कॉन्टेक्स्टचा विस्तार नेटवर्क परवानग्या आणि रेट-लिमिट कॅप्स (rate-limit caps) पर्यंत करू शकते, असे संकेत मिळत आहेत.

जर तुम्ही आधीच Vercel च्या SDK सह AI एजंट्स बनवत असाल, तर पहिले पाऊल म्हणजे तुमच्या सध्याच्या process.env वापराचे ऑडिट करणे. सर्व टूल कॉल्समधून काढता येण्याजोगे एक मूल्य ओळखा आणि सर्वसमावेशक पॅटर्नऐवजी स्कोपड toolsContext वापरा. याचा परिणाम म्हणजे AI एजंट्सची लवचिकता न गमावता अधिक मजबूत सुरक्षा स्थिती (security posture) प्राप्त होईल.