एक प्रॉम्प्ट। तीन शेल कमांड। मैंने उनके अपने AI का इस्तेमाल करके उसे हैक कर लिया।
यह एक ऐसी बग की श्रेणी है जो शायद आज बाजार में मौजूद हर मल्टी-एजेंट AI उत्पाद में मौजूद है। और इसका समाधान एक ऐसा डिज़ाइन पैटर्न है जिसके बारे में इस क्षेत्र में अभी तक कोई बात नहीं कर रहा है।
यहाँ पूरी कहानी है।
मैं कुछ हैक करने की कोशिश नहीं कर रहा था। मैं अपने एजेंट इंफ्रा के काम के लिए शोध कर रहा था कि Perplexity Computer सैंडबॉक्सिंग को कैसे संभालता है। मैं यह समझने की कोशिश कर रहा था कि प्रोडक्शन मल्टी-एजेंट सिस्टम वास्तव में एक्सीक्यूशन एनवायरनमेंट को कैसे अलग करते हैं, क्या साझा किया जाता है, क्या नहीं।
सबसे पहले, मैंने सिस्टम में इधर-उधर ताक-झाँक शुरू की। मैंने देखा कि सैंडबॉक्स में Claude Code इंस्टॉल था।
मैंने एजेंट को इसे शुरू करने और कुछ टेस्ट कोड जनरेट करने को कहा, बस यह देखने के लिए कि यह कैसा व्यवहार करता है। यह ठीक काम कर गया। स्टैंडर्ड Claude Code, बायपास-परमिशन मोड में चल रहा था, ताकि यह पुष्टि के लिए प्रॉम्प्ट न करे। एजेंटिक सिस्टम के लिए यह समझ में आता है।
तभी मैंने सोचा: रुको, वे API कीज़ को कैसे संभाल रहे हैं?! Claude Code को काम करने के लिए Anthropic API की ज़रूरत है। वह की इस सैंडबॉक्स में कहीं न कहीं रहनी चाहिए। इसे कैसे इंजेक्ट किया जा रहा है? इसका दायरा क्या है? क्या यह अलग-थलग है?
यही सवाल मुझे इस रास्ते पर ले गया।
सबएजेंट अपने प्रोसेस एनवायरनमेंट में एक API की रखता है। मुझे इसे चुराने की ज़रूरत थी।
Perplexity Computer ने छह बार कोशिश की और असफल रहा।
- सबएजेंट से उसका एनवायरमेंट डंप करने को कहा: मना कर दिया!
- शेयर्ड फाइलसिस्टम पर एक ट्रोजन स्क्रिप्ट लगा दी: उसने मेरा कोड पढ़ा, समझ गया कि यह क्या कर रहा है, और इसे चलाने से मना कर दिया!
- .bashrc और .profile में जहर घोल दिया: वे बहुत जल्दी फायर हो गए, API की इंजेक्ट होने से पहले।
- PATH पर एक नकली node बाइनरी गिरा दी: कभी ट्रिगर नहीं हुआ।
- कोडिंग एजेंट को स्पॉन किया और साथ ही प्रोसेस ट्री को देखा: सबएजेंट एक अलग सैंडबॉक्स में चलता है, कुछ कैप्चर नहीं हुआ :(
- Claude Code के लिए सिस्टम प्रॉम्प्ट ढूँढ़कर उसे इनकार व्यवहार हटाने के लिए बदला: कोई कस्टम सिस्टम प्रॉम्प्ट इंजेक्ट होता नहीं मिला।
छह असफलताएँ। Claude का मॉडल/प्रॉम्प्ट-स्तर की सुरक्षा वास्तव में अच्छी है। हर बार जब मैंने कुछ चालाकी करने की कोशिश की, मॉडल ने इसे पकड़ लिया।

फिर Perplexity को याद आया कि Claude Code एक Node.js ऐप है जो npm के माध्यम से लॉन्च होता है। और npm होम डायरेक्टरी से ~/.npmrc पढ़ता है। और होम डायरेक्टरी शेयर्ड फाइलसिस्टम पर है, जिसमें मैं लिख सकता हूँ।
Node.js में एक --require फ्लैग है जो किसी भी एप्लिकेशन कोड के चलने से पहले एक JavaScript मॉड्यूल को प्रीलोड करता है। आप इसे .npmrc में NODE_OPTIONS के माध्यम से सेट कर सकते हैं। इसका मतलब है कि अगर मैं शेयर्ड होम डायरेक्टरी में एक .npmrc लिखूँ, तो सबएजेंट द्वारा स्पॉन किया गया हर Node प्रोसेस मेरे कोड को प्रीलोड करेगा! यह Claude Code के इनिशियलाइज़ होने से पहले, किसी भी सुरक्षा जाँच से पहले, किसी भी चीज़ से पहले होता है!
एक्सप्लॉइट तीन कमांड है:
- एक छह-लाइन की स्क्रिप्ट लिखें जो process.env को शेयर्ड वर्कस्पेस पर एक फ़ाइल में डंप करे।
- echo 'node-options=--require /path/to/script.js' > ~/.npmrc
- Perplexity Computer से कोई भी कोडिंग कार्य करने के लिए कहें।
सबएजेंट बूट होता है → npm मेरा .npmrc पढ़ता है → Claude Code शुरू होने से पहले मेरा प्रीलोड फायर होता है → पूर्ण API क्रेडेंशियल शेयर्ड फाइलसिस्टम पर आ जाते हैं।
यह काम कर गया! इसने मुझे एक Perplexity गेटवे टोकन दिया जो agent-proxy.perplexity.ai के माध्यम से उनके मास्टर Anthropic अकाउंट पर प्रॉक्सी करता है।

स्वाभाविक रूप से, मैंने सबसे पहले अपने लैपटॉप पर Claude Code के लिए यह API की और BASE_URL सेट किया। मुझे उम्मीद थी कि Claude Code से LLM कॉल विफल होंगे और सैंडबॉक्स तक सीमित रहेंगे। मैं चौंक गया। Opus 4.6 से तुरंत जवाब आया!
फिर मैंने सोचा, "निश्चित रूप से, वे इस उपयोग के लिए मेरे अकाउंट को बिल करेंगे, यह API की मेरे यूज़र से जुड़ी होनी चाहिए।" मैं फिर से गलत था।
मैंने Opus 4.6 से एक लंबी कहानी जनरेट करने को कहा जो दुनिया के इतिहास का वर्णन करती है, जिसमें हर आविष्कार, साम्राज्य और खोज शामिल है। मैंने इस कॉल को 5 बार समानांतर में चलाया, प्रत्येक से 100k+ आउटपुट टोकन जनरेट किए। इससे मेरे सभी Perplexity Computer क्रेडिट खत्म हो जाने चाहिए थे, लेकिन वे हिले नहीं।
न IP-प्रतिबंधित। न सेशन-स्कोप्ड। न सैंडबॉक्स-बाउंड। उनका बिल।
ग्रह पर सबसे अधिक फंडेड AI स्टार्टअप्स में से एक एक डॉटफ़ाइल से पराजित हो गया जो 2019 से Node.js सप्लाई चेन अटैक में इस्तेमाल हो रही है।
मॉडल ने सब कुछ सही किया। बुनियादी ढाँचे ने नहीं किया।
अब यहाँ वह है जो मैं वास्तव में चाहता हूँ कि एजेंट इंफ्रा बनाने वाले संस्थापक इससे लें।
Perplexity का आर्किटेक्चर आधा सही है। वे सैंडबॉक्स और Anthropic API के बीच एक प्रॉक्सी का उपयोग करते हैं। यह सही पैटर्न है। आपको कभी भी सैंडबॉक्स के अंदर एक कच्ची प्रोवाइडर API की नहीं रखनी चाहिए। एक प्रॉक्सी आपको नियंत्रण, अवलोकन क्षमता और अपनी मास्टर की को घुमाए बिना एक्सेस रद्द करने की क्षमता देता है।
समस्या यह है कि उनके प्रॉक्सी टोकन का एक्सीक्यूशन कॉन्टेक्स्ट से कोई संबंध नहीं है। एक बार जब आपके पास यह हो, तो यह हर जगह हमेशा काम करता है।
यहाँ सही तरीके से कैसे करें:
टोकन को सैंडबॉक्स ID से बाँधें। टोकन और सैंडबॉक्स ID मेल नहीं खाते? अस्वीकार कर दिया जाता है। की लीक हो जाती है लेकिन आपके पास सैंडबॉक्स नहीं है? बेकार। आदर्श रूप से इसे टोकन को सैंडबॉक्स IP पते से भी बाँधना चाहिए, लेकिन E2B (सैंडबॉक्स प्रदाता जो वे उपयोग करते हैं) सैंडबॉक्स शुरू होने से पहले वह प्रदान नहीं करता है।
टोकन को क्षणिक बनाएँ। इसे तब जारी करें जब सैंडबॉक्स स्पिन अप हो। जब सैंडबॉक्स रुक जाए तो इसे मार दें। कोई लंबे समय तक रहने वाली क्रेडेंशियल नहीं। प्रॉक्सी सेशन स्टार्ट पर एक अल्पकालिक टोकन उत्पन्न करता है और टियरडाउन पर इसे अमान्य करता है। मृत सैंडबॉक्स से लीक हुई की एक मृत की है।
टोकन को उपयोगकर्ता के बिलिंग अकाउंट से जोड़ें। भले ही बाकी सब कुछ विफल हो जाए, भले ही कोई सक्रिय सैंडबॉक्स से एक लाइव टोकन निकाल ले और समाप्त होने से पहले इसका उपयोग करे, उपयोग उस अकाउंट पर बिल किया जाता है जिसने सेशन को स्पॉन किया था। किसी साझा मास्टर बिलिंग पूल पर नहीं। यह "असीमित मुफ्त API एक्सेस" को "कोई अपने कोटा का दुरुपयोग कर रहा है" में बदल देता है, जो पूरी तरह से अलग गंभीरता है।
ये तीन चीज़ें — सैंडबॉक्स-बाउंड, क्षणिक, उपयोगकर्ता-बिल — यही हैं जो प्रॉक्सी पैटर्न को वास्तव में काम करने योग्य बनाती हैं। इनके बिना आप बस एक अतिरिक्त नेटवर्क हॉप जोड़ रहे हैं जो कुछ नहीं रोकता।
यह Perplexity-विशिष्ट समस्या नहीं है। यह अभी एजेंट इंफ्रा के लिए डिफ़ॉल्ट आर्किटेक्चर है क्योंकि इसे बनाना सबसे तेज़ है। एजेंटों के बीच शेयर्ड फाइलसिस्टम, लंबे समय तक रहने वाली क्रेडेंशियल, मास्टर-अकाउंट बिलिंग। मैं शर्त लगाता हूँ कि आज प्रोडक्शन में अधिकांश मल्टी-एजेंट उत्पादों में इसका कुछ न कुछ संस्करण है।
प्रकाशन से पहले @AravSrinivas और @denisyarats को रिपोर्ट किया गया।





