11 अगस्त 2026 को Hacker News पर एक विश्लेषण वायरल हुआ, जिसे हर किसी को पढ़ना चाहिए, जो अपने कार्य IDE में AI सहायक रखता है: एक शोधकर्ता ने GitHub Copilot के साथ VS Code को एक इंटरसेप्टिंग प्रॉक्सी पर सेट किया और देखा कि वास्तव में क्या सर्वरों पर भेजा जा रहा है। यह पता चला कि अनुरोध में वह स्ट्रिंग शामिल है जो आप लिखते हैं, उससे कहीं अधिक है - जिसमें खुली .env की सामग्री भी शामिल है।
अच्छी खबर: इसे कोई भी जांच सकता है, और न केवल Copilot पर। नीचे एक कार्यात्मक निर्देशिका है, जिसमें 20-30 मिनट में अपने सहायक के ट्रैफिक का ऑडिट कैसे करें, क्या इंटरसेप्ट किए गए अनुरोधों में खोजें और फ़ाइलों को छोड़ने के लिए मानक तंत्रों की क्या सीमाएँ हैं।
यह खुद क्यों करना चाहिए
वेंडर की दस्तावेज़ीकरण नीति का वर्णन करती है, न कि ग्राहक का वास्तविक व्यवहार। "हम आपके कोड का उपयोग प्रशिक्षण के लिए नहीं करते" और "ग्राहक आपका कोड सर्वर पर नहीं भेजता" के बीच एक बड़ा अंतर है: सुझाव उत्पन्न करने के लिए, मॉडल को संदर्भ प्राप्त करना आवश्यक है, और सवाल यह है कि ग्राहक इस संदर्भ को कितनी व्यापकता से इकट्ठा करता है।
ऑडिट की आवश्यकता है, यदि आप:
- NDA के तहत काम कर रहे हैं या ग्राहकों के व्यक्तिगत डेटा के साथ हैं और आपको यह जानने की आवश्यकता है कि क्या परिधि के बाहर जा रहा है;
- अपने रिपॉजिटरी में रहस्यों, स्टैंड कॉन्फ़िगरेशन, आंतरिक पते और टोकन रख रहे हैं;
- टीम में अनुपालन के लिए जिम्मेदार हैं और आपको सेटिंग्स से स्क्रीनशॉट की आवश्यकता नहीं है, बल्कि वास्तविक अनुरोधों का लॉग चाहिए;
- सिर्फ यह समझना चाहते हैं कि सहायक अचानक उस फ़ाइल के बारे में "जानता" है जिसे आपने नहीं खोला।
Copilot के ट्रैफिक में क्या पाया गया
जिस विश्लेषण का उल्लेख किया गया, वह क्लासिक mitmproxy पर आधारित था: VS Code को स्थानीय प्रॉक्सी पर 8080 पोर्ट पर भेजा गया और सख्त प्रमाणपत्र जांच को बंद कर दिया गया। प्रमुख खोजें:
- संदर्भ एक फ़ाइल से व्यापक है। इनलाइन पूर्णताओं के दौरान, ग्राहक 20 फ़ाइलों तक इकट्ठा करता है, 8 अंतिम संशोधनों का सारांश और प्रत्येक परिवर्तन के चारों ओर 3 पंक्तियाँ संदर्भ के रूप में, साथ ही वर्तमान फ़ाइल का पूरा पाठ और हाल ही में संपादित फ़ाइलें डिफ़ के रूप में।
- रहस्य छिपाए नहीं जाते। अनुरोध के शरीर में
promptफ़ील्ड मेंTEST_ENV_VAR_SECRET="mysecretenvvar"जैसे स्ट्रिंग शामिल थे - यानी, खुली फ़ाइल से पर्यावरण चर सामान्य पाठ के रूप में भेजे जा रहे थे। - स्थानीय डेटाबेस भी खुला है। फ़ाइल
session-store.dbuser_messageऔरassistant_responseको बिना एन्क्रिप्शन और संपादन के संग्रहीत करती है: इसमें टोकन, क्लाउड प्रदाताओं की कुंजी और कनेक्शन स्ट्रिंग्स के पासवर्ड होते हैं, जिन्हें आपने कभी चैट में डाला था। - सेवा कॉल। स्वयं पूर्णताओं के अलावा, ग्राहक
/models,/agents/swe/models,/models/session/intentऔर GitHub के OAuth एंडपॉइंट को भी कॉल करता है - इनसे यह स्पष्ट होता है कि सहायक आपके अनुरोध को उत्तर उत्पन्न करने से पहले ही वर्गीकृत करता है।
अलग से याद रखना चाहिए: ग्राहक वर्तमान रिपॉजिटरी का URL सर्वर पर भेजता है ताकि लागू होने वाली अपवाद नीति प्राप्त कर सके। यह तथ्य अपने आप में हानिकारक नहीं है, लेकिन इसका मतलब है कि आपके कार्य वृक्ष की संरचना भी एक संकेत है।
चरण-दर-चरण: इंटरसेप्ट सेट करें
- mitmproxy स्थापित करें और इसे चालू करें। वेब इंटरफेस
mitmwebपर्याप्त है। डिफ़ॉल्ट रूप से, प्रॉक्सी 8080 पोर्ट पर सुनता है, कंसोल ब्राउज़र में खुलता है। CI और लंबे सत्रों के लिएmitmdumpअधिक सुविधाजनक है। - रूट प्रमाणपत्र स्थापित करें। mitmproxy के पहले लॉन्च पर, यह
~/.mitmproxyनिर्देशिका में CA बनाता है (फ़ाइलmitmproxy-ca-cert.cer)। इसे विश्वसनीय में जोड़ना आवश्यक है - अन्यथा ग्राहक TLS कनेक्शन को तोड़ देगा। ऑडिट के समय उपयोगकर्ता स्तर पर विश्वसनीयता पर्याप्त है; बाद में - प्रमाणपत्र हटा दें, "हर मामले में" सिस्टम में किसी अन्य CA को न छोड़ें। - इंटरसेप्ट मोड चुनें। तीन हैं, और सही चयन एक घंटे की मेहनत बचाता है:
- regular - सामान्य प्रॉक्सी, ग्राहक को स्पष्ट रूप से कॉन्फ़िगर किया जाता है। सबसे पूर्वानुमानित विकल्प।
- local - इस मशीन पर एप्लिकेशन का पारदर्शी इंटरसेप्ट, प्रोग्राम सेटिंग्स को संपादित किए बिना:
mitmproxy --mode local:Codeकेवल VS Code प्रक्रिया को पकड़ता है,--mode local:42निर्दिष्ट PID वाली प्रक्रिया को,--mode local:!curl- सब कुछ, सिवाय curl के। यह सहायक को सुनने का सबसे अच्छा तरीका है, जिसके पास प्रॉक्सी सेटिंग नहीं है। - upstream - एक श्रृंखला, जब mitmproxy के पीछे आपका अपना प्रॉक्सी होता है:
mitmdump --mode upstream:http://host:8081, और लॉगिन और पासवर्ड विकल्प--set upstream_auth=user:passद्वारा सेट किए जाते हैं।
- IDE को प्रॉक्सी में निर्देशित करें (regular मोड के लिए)। VS Code में
settings.jsonमें:"http.proxy": "http://127.0.0.1:8080""http.proxySupport": "override""http.proxyStrictSSL": false- केवल ऑडिट के समय। यह ध्वज प्रमाणपत्रों की जांच को पूरी तरह से बंद कर देता है, और इसे कार्य कॉन्फ़िगरेशन में छोड़ना नहीं चाहिए।
- प्रमाणपत्र समस्या को व्यावसायिक रूप से हल करें। Copilot एक्सटेंशन Node पर काम करता है, इसलिए सही तरीका यह है कि जांच को बंद न करें, बल्कि रूट CA के साथ PEM और mitmproxy प्रमाणपत्र को इकट्ठा करें और इसे पर्यावरण चर
NODE_EXTRA_CA_CERTSके माध्यम से निर्दिष्ट करें। IDE को पुनः प्रारंभ करना आवश्यक है: यह चर प्रक्रिया के प्रारंभ में पढ़ा जाता है। - स्ट्रीम को फ़ाइल में लिखें। वास्तविक समय में आंखों से देखना बेकार है - मिनट में दर्जनों अनुरोध होते हैं।
--set save_stream_file=flows.dumpचालू करें, और ताकि सब कुछ इकट्ठा न हो, चयन को--set save_stream_filter=...के माध्यम से सीमित करें। फिर फ़ाइल को ऑफ़लाइन आसानी से विश्लेषित किया जा सकता है। - अनुरोध के शरीर में खोजें, URL में नहीं। व्यावहारिक तकनीक: एक परीक्षण रिपॉजिटरी में एक कैनरी फ़ाइल डालें जिसमें एक अद्वितीय स्ट्रिंग हो (उदाहरण के लिए,
CANARY_9f3c_DO_NOT_SEND), इसे संपादक में खोलें, पड़ोसी फ़ाइल में काम करें - और इंटरसेप्ट किए गए शरीर में कैनरी की खोज करें। इस तरह आप अपनी क्लाइंट संस्करण के संदर्भ को इकट्ठा करने के वास्तविक दायरे को देखेंगे।
छिपे हुए खतरे
लाइसेंस इंटरसेप्ट को ब्लॉक कर सकता है। कॉर्पोरेट योजनाओं पर Copilot "आपका वर्तमान Copilot लाइसेंस स्वयं-हस्ताक्षरित प्रमाणपत्रों के साथ प्रॉक्सी कनेक्शन का समर्थन नहीं करता" जैसी त्रुटि देता है। यह प्रॉक्सी की कोई बग नहीं है - ग्राहक जानबूझकर स्वयं-हस्ताक्षरित CA के माध्यम से काम करने से इनकार करता है। इसे सिस्टम स्तर पर विश्वसनीय प्रमाणपत्र या Node के लिए PEM बनाने से ठीक किया जा सकता है; यदि संगठन की नीति इसे प्रतिबंधित करती है, तो ऑडिट को व्यवस्थापक के साथ समन्वयित करना होगा, न कि इसे दरकिनार करना।
पिनिंग और QUIC। कुछ ग्राहक HTTP/3 पर QUIC के माध्यम से जाते हैं, जिसे सामान्य प्रॉक्सी नहीं देखेगा। यदि इंटरसेप्ट चालू करने के बाद एप्लिकेशन "काम करता है, लेकिन लॉग खाली है" - लगभग हमेशा इसका कारण यही होता है: परीक्षण प्रक्रिया के लिए UDP/443 को ब्लॉक करें, और ग्राहक HTTP/2 पर वापस आ जाएगा।
टेलीमेट्री और उपयोगी लोड विभिन्न रास्तों से जाते हैं। एक एंडपॉइंट के आधार पर "कुछ नहीं जा रहा है" का निष्कर्ष न निकालें: उस प्रक्रिया द्वारा संपर्क किए गए सभी होस्टों की पूरी सूची देखें, न कि केवल वह जो दस्तावेज़ीकरण में उल्लेखित है।
कानूनी ढांचा। ट्रैफिक को अपनी मशीन और अपने खाते पर इंटरसेप्ट करना संभव है। बिना मालिक की जानकारी के किसी अन्य व्यक्ति के कार्य लैपटॉप को सुनना - यह एक अलग कहानी है, और कोई भी "सुरक्षा" इसे सही नहीं ठहराती।
परिणामों के साथ क्या करें
यदि ऑडिट ने दिखाया कि अनुरोधों में अतिरिक्त फ़ाइलें शामिल हैं, तो मानक उपकरण इस प्रकार दिखते हैं - और प्रत्येक में एक महत्वपूर्ण सीमा है।
- सामग्री अपवाद। GitHub का आधिकारिक तंत्र, जो Copilot को निर्दिष्ट पथों का उपयोग करने से रोकता है। यह केवल Business और Enterprise योजनाओं पर उपलब्ध है, इसे Copilot सेटिंग्स में व्यवस्थापक द्वारा कॉन्फ़िगर किया जाता है, और VS Code, Visual Studio और JetBrains में समर्थित है; Xcode, Eclipse और Vim/Neovim में - केवल इनलाइन सुझावों के लिए।
- मुख्य छिद्र - एजेंट मोड। दस्तावेज़ीकरण स्पष्ट रूप से बताता है कि अपवाद Copilot Chat में Edit और Agent मोड में समर्थित नहीं हैं, साथ ही Copilot CLI में भी। यानी ठीक वहीं, जहां सहायक स्वयं फ़ाइलों में जाता है, कॉन्फ़िगरेशन पढ़ता है और कमांड चलाता है, प्लेटफ़ॉर्म फ़िल्टरिंग लागू नहीं होती है। यदि आप सामग्री अपवाद पर एकमात्र बाधा के रूप में भरोसा करते हैं - तो एजेंट मोड में कोई बाधा नहीं है।
- .gitignore सुरक्षा नहीं करता। एक सामान्य भ्रांति: Git से इंडेक्स से अपवाद का मतलब सहायक के संदर्भ से अपवाद नहीं है।
- संगठनात्मक न्यूनतम। रहस्यों को रहस्य प्रबंधक में रखना चाहिए, न कि कोड के पास
.envमें; सहायक की चैट कनेक्शन स्ट्रिंग्स डालने का स्थान नहीं है; स्थानीय इतिहास को उसी तरह साफ करना चाहिए जैसे आप शेल का इतिहास साफ करते हैं।
यहां प्रॉक्सी कहां है और यह आपके लिए क्यों आवश्यक है
इंटरसेप्ट का व्यावहारिक विस्तार है। सबसे पहले, upstream मोड सहायक के सभी ट्रैफिक को नियंत्रित आउटबाउंड नोड के माध्यम से भेजने की अनुमति देता है: आप एक साथ अनुरोधों को देखते हैं और यह नियंत्रित करते हैं कि वे किस पते से जा रहे हैं। यह तब आवश्यक है जब सहायक का API आपके क्षेत्र से उपलब्ध नहीं है या जब कॉर्पोरेट नीति एक निश्चित आउटबाउंड IP की आवश्यकता होती है - ऐसे परिदृश्य के लिए स्थिर डेटा सेंटर प्रॉक्सी उपयुक्त हैं जिनका स्थायी पता होता है।
दूसरे, वही स्टैंड स्वचालन की डिबगिंग के लिए उपयोगी है: जब AI एजेंट स्वयं वेबसाइटों पर जाता है, तो इंटरसेप्ट दिखाता है कि वह वास्तव में कौन से हेडर भेजता है और सुरक्षा उसे किस पर पकड़ती है। हमने इस संयोजन का विश्लेषण Playwright और MCP पर AI एजेंटों के लिए प्रॉक्सी के बारे में सामग्री में किया - वहां एजेंट परिदृश्यों के लिए पते के प्रकार का चयन किया गया है, जहां रेसिडेंट IP की आवश्यकता होती है, न कि सर्वर का।
यदि आपने पहले mitmproxy स्थापित नहीं किया है, तो HTTPS इंटरसेप्ट के लिए बुनियादी सेटअप से शुरू करें - इसे हमारे mitmproxy के माध्यम से ट्रैफिक इंटरसेप्ट करने के लिए गाइड में विस्तार से वर्णित किया गया है, और इसके ऊपर स्थानीय और अपस्ट्रीम मोड को जोड़ें।
निष्कर्ष
AI सहायक के ट्रैफिक का ऑडिट कोई पैरानॉयड नहीं है, बल्कि एक सामान्य इंजीनियरिंग स्वच्छता है, जो एक शाम और एक बार लेती है। Copilot का विश्लेषण एक स्पष्ट चित्र दिखाता है: ग्राहक व्यापक रूप से संदर्भ इकट्ठा करता है, रहस्य इस संदर्भ में कोड के समान ही आते हैं, स्थानीय इतिहास खुली पाठ के रूप में संग्रहीत होता है, और मानक अपवाद ठीक उसी सबसे खतरनाक मोड में काम नहीं करते - एजेंट मोड में।
दस्तावेज़ीकरण की बजाय ट्रैफिक की जांच करें। local मोड में mitmproxy उठाएं, रिपॉजिटरी में एक कैनरी डालें, स्ट्रीम को फ़ाइल में इकट्ठा करें और अपनी आँखों से देखें कि आपकी मशीन से क्या जा रहा है। आगे का निर्णय सरल है: या तो आप इस मात्रा के हस्तांतरण को जानबूझकर स्वीकार करते हैं, या आप रहस्यों को कार्य वृक्ष के बाहर ले जाते हैं इससे पहले कि उन्हें किसी अन्य सर्वर द्वारा देखा जाए।
