AfterPack ब्लॉग
securityanalysis

Claude Code का सोर्स लीक नहीं हुआ। वह सालों से पहले से ही पब्लिक था।

द्वारा Nikita Savchenko12 मिनट पढ़ने का समय

आज 1 अप्रैल है, लेकिन यह पोस्ट कोई मज़ाक नहीं है।

मैं पूरा दिन Claude Code "लीक" की कवरेज देख रहा था — VentureBeat, Fortune, Gizmodo, The Register, Hacker News। 512,000 लाइनें! Feature flags! System prompts! एक clean-room Rust rewrite (DMCA से बचने के लिए) ने लगभग एक ही दिन में 100K GitHub stars हासिल कर लिए — एक वर्ल्ड रिकॉर्ड। अब 110K और बढ़ रहे हैं।

ये सब गलत हैं। वह कोड पहले से ही पब्लिक था। npm पर। प्लेनटेक्स्ट में। सालों से। अभी unpkg.com/@anthropic-ai/claude-code/cli.js खोलें — यह पूरी Claude Code CLI है, एक क्लिक की दूरी पर, आपके ब्राउज़र में पढ़ने योग्य। किसी लीक की ज़रूरत नहीं।

जो "लीक" हुआ वह एक source map फ़ाइल थी जिसमें उस कोड के ऊपर internal developer comments जुड़े थे जो पहले से ही कभी सुरक्षित नहीं था, साथ ही एक डायरेक्टरी/सोर्स स्ट्रक्चर।

असल में हुआ क्या

एक .map source map फ़ाइल — जो internal debugging के लिए बनी थी — गलती से @anthropic-ai/claude-code पैकेज के version 2.1.88 में npm पर शामिल हो गई। सिक्योरिटी रिसर्चर Chaofan Shou ने इसे देखा, X पर पोस्ट किया, और बाकी काम इंटरनेट ने कर दिया।

Anthropic ने गलती की पुष्टि की: "यह एक रिलीज़ पैकेजिंग समस्या थी जो मानवीय त्रुटि से हुई, कोई सिक्योरिटी ब्रीच नहीं।" पैकेज हटा लिया गया, लेकिन तब तक इसे हर जगह मिरर कर लिया गया था।

मज़ेदार बात? यह दूसरी बार है। एक लगभग समान source map लीक फ़रवरी 2025 में हुई थी। वही प्रोडक्ट, वही गलती, तेरह महीने के अंतराल पर।

24 घंटों में क्या हुआ

इसके बाद जो हुआ वह सच में प्रभावशाली था। एक ही दिन में:

  • GitHub पर कोड डंप्स दिखने लगे — जैसे nirholas/claude-code, जिसे Anthropic ने DMCA किया कुछ ही घंटों में, लेकिन तब तक सैकड़ों बार fork हो चुका था।

  • Claw Code — Claude Code आर्किटेक्चर का एक पूरा Rust rewrite — ने 2 घंटे में 50,000 GitHub stars हासिल किए, जिससे यह इतिहास में सबसे तेज़ी से इस माइलस्टोन तक पहुँचने वाला रेपो बन गया। अब इसे एक ओपन-सोर्स AI coding agent framework के रूप में सक्रिय रूप से विकसित किया जा रहा है।

  • ccleaks.com सामने आया — एक पूरी तरह से डिज़ाइन की गई ब्रेकडाउन साइट जिसमें सोर्स में मिले हर अनरिलीज़्ड फ़ीचर, हिडन कमांड और बिल्ड फ़्लैग को सूचीबद्ध किया गया था। "BUDDY" (एक AI कम्पैनियन पेट), "ULTRAPLAN" (30-मिनट का रिमोट प्लानिंग मोड), और 44 अन्य feature flags जैसी खोजों के लिए शेयर करने योग्य कार्ड्स के साथ:

Unreleased Claude Code features discovered from the source leak — including BUDDY companion pet and ULTRAPLAN remote planning mode, catalogued on ccleaks.com
  • DEV Community, YouTube, और टेक ब्लॉग्स पर हर डिटेल का विश्लेषण करते दर्जनों आर्टिकल।

यह सब। एक ही दिन में। AI के युग में सॉफ़्टवेयर की दुनिया पागल हो गई है।

लेकिन कोड तो पहले से ही वहाँ था

अधिकांश कवरेज ने जो बात मिस की वह यह है: Claude Code एक सिंगल बंडल्ड JavaScript फ़ाइलcli.js — के रूप में शिप होता है, npm के ज़रिए वितरित। यह 13MB, JavaScript की 16,824 लाइनें है। और यह प्रोडक्ट लॉन्च होने के बाद से सार्वजनिक रूप से उपलब्ध है।

हमने AfterPack में एक deobfuscation केस स्टडी के हिस्से के रूप में इस फ़ाइल का विश्लेषण किया। हमने पाया: यह minified है, obfuscated नहीं।

अंतर यह है। Minification — जो हर bundler (esbuild, Webpack, Rollup) डिफ़ॉल्ट रूप से करता है — वेरिएबल नाम छोटे करता है और whitespace हटाता है। यह कोड को शिपिंग के लिए छोटा बनाता है। इसे कभी कुछ छुपाने के लिए डिज़ाइन नहीं किया गया था।

Obfuscation strings को एन्क्रिप्ट करता है, control flow को फ़्लैट करता है, dead code इंजेक्ट करता है, anti-tamper मैकेनिज़्म जोड़ता है। इसे reverse engineering को कम्प्यूटेशनल रूप से महँगा बनाने के लिए डिज़ाइन किया गया है।

Claude Code में पहला है। दूसरे में से कुछ भी नहीं।

तकनीकमौजूद?
Variable name manglingहाँ (स्टैंडर्ड minification)
Whitespace removalहाँ (स्टैंडर्ड minification)
String encryption/encodingनहीं
Control flow flatteningनहीं
Dead code injectionनहीं
Self-defending / anti-tamperनहीं
String array rotationनहीं
Property name manglingनहीं

सभी 148,000+ string literals प्लेनटेक्स्ट में हैं। हर system prompt, हर tool description, हर behavioral instruction — सब JavaScript में, एक टेक्स्ट एडिटर से पढ़ने योग्य। किसी source map की ज़रूरत नहीं।

हमने Claude से खुद को Deobfuscate करने को कहा

यहाँ बात दिलचस्प हो जाती है। हमें Claude Code के अंदरूनी हिस्सों को निकालने के लिए source maps की ज़रूरत नहीं थी। हमने Claude — Anthropic के अपने मॉडल — से minified cli.js फ़ाइल का विश्लेषण और deobfuscation करने को कहा।

Claude Code deobfuscation process — using Claude's own AI to analyze and extract structure from its minified CLI source

यह काम कर गया। बेहद अच्छी तरह।

एक सिंपल AST-आधारित extraction स्क्रिप्ट का उपयोग करके, हमने पूरी 13MB फ़ाइल को 1.47 सेकंड में पार्स किया और 147,992 strings निकालीं। उन्हें वर्गीकृत करने के बाद:

  • 1,017 system prompts और instructions
  • 431 tool descriptions
  • 837 यूनिक telemetry event names (सभी tengu_ प्रीफ़िक्स के साथ — Claude Code का आंतरिक कोडनेम)
  • 504 environment variables जो प्रोडक्ट के व्यवहार को नियंत्रित करते हैं
  • 3,196 error messages
  • Hardcoded endpoints, OAuth URLs, एक DataDog API key, पूरा model catalog

हर एक string। 2 सेकंड से कम में निकाली गई। कोई decryption नहीं। कोई deobfuscation नहीं। बस parsing।

और यह सिर्फ़ हम ही नहीं थे जिन्होंने यह समझा। Geoffrey Huntley ने इस लीक से महीनों पहले Claude Code का एक पूरा "cleanroom transpilation" प्रकाशित किया था — LLMs का उपयोग करके minified JavaScript को पढ़ने योग्य, संरचित TypeScript में बदलने के लिए। उनकी मुख्य अंतर्दृष्टि: "LLMs deobfuscation, transpilation, और structure-to-structure conversions में हैरान करने वाले हद तक अच्छे हैं।"

Source maps ने कोड को उजागर नहीं किया। कोड पहले से ही उजागर था। Source maps ने बस उसके ऊपर comments और एक source tree structure जोड़ा।

Source Maps ने वास्तव में क्या जोड़ा

निष्पक्ष होने के लिए — source maps ने कुछ वास्तव में संवेदनशील जानकारी सामने लाई जो minified bundle से आसानी से निकाली नहीं जा सकती थी:

Internal code comments। डेवलपर नोट्स, TODOs, निर्णयों के पीछे की वजहें। वह चीज़ें जो आप यह सोचकर लिखते हैं कि सिर्फ़ आपकी टीम पढ़ेगी।

सटीक फ़ाइल स्ट्रक्चर। पूरा 1,884-फ़ाइल प्रोजेक्ट ट्री, ओरिजिनल फ़ाइलनेम, मॉड्यूल बाउंड्रीज़, और डिपेंडेंसी रिलेशनशिप्स के साथ।

कोडनेम वाले Feature flags। tengu_amber_flint, tengu_cobalt_frost, और tengu_miraculo_the_bard जैसे नाम — आंतरिक प्रयोग के नाम जो प्रोडक्ट स्ट्रैटेजी और A/B test स्ट्रक्चर को उजागर करते हैं।

Undercover mode। एक फ़ीचर जो internal codenames और references हटा देता है जब Claude Code को non-Anthropic repositories में उपयोग किया जाता है — ताकि मॉडल गलती से सार्वजनिक रूप से "Tengu" या "Capybara" न कह दे।

KAIROS। एक अनरिलीज़्ड autonomous daemon mode — बैकग्राउंड agent workers जिनमें cron cycles और GitHub webhook subscriptions हैं।

Anti-distillation मैकेनिज़्म। Claude Code API requests में anti_distillation: ['fake_tools'] भेजता है, जो prompts में फ़र्ज़ी tool definitions इंजेक्ट करता है ताकि अगर कोई competing model को ट्रेन करने के लिए API ट्रैफ़िक रिकॉर्ड करे तो training data दूषित हो जाए।

यह संवेदनशील है। Internal comments एक वास्तविक एक्सपोज़र हैं। लेकिन असल सोर्स लॉजिक — prompts, tools, architecture, endpoints — यह सब पहले से ही cli.js में था। हमेशा से था।

यह आपकी सोच से ज़्यादा बार होता है

यहाँ एक बात जो शायद आपको चौंका दे: यह सिर्फ़ Anthropic की समस्या नहीं है। यह पूरी इंडस्ट्री में स्वीकृत प्रथा है।

हमने AfterPack का Security Scanner GitHub की अपनी वेबसाइट पर चलाया — दुनिया के सबसे परिष्कृत इंजीनियरिंग संगठनों में से एक। यह रहा जो हमने पाया:

AfterPack Security Scanner results for GitHub — exposed email addresses, environment variable references, and internal URLs found in production JavaScript and source maps

ईमेल एड्रेस। Environment variable नाम। Internal URLs। सब production JavaScript और source maps में, सार्वजनिक रूप से सुलभ। पूर्ण स्कैन परिणाम खुद देखें।

और Anthropic की अपनी वेबसाइट — claude.ai — में भी यही समस्या है। उनकी s-cdn.anthropic.com/s.js पर production JavaScript कर्मचारियों के ईमेल एड्रेस उजागर करती है:

AfterPack Security Scanner results for claude.ai — email addresses from Anthropic team members found in production JavaScript

इसके बारे में कोई बात नहीं करता। GitHub द्वारा अपने JS bundles में ईमेल एड्रेस शिप करने की कोई VentureBeat हेडलाइन नहीं है। Anthropic के CDN scripts में internal URLs उजागर होने का कोई Hacker News थ्रेड नहीं है। लेकिन यह बिल्कुल उसी श्रेणी की समस्या है — production JavaScript ऐसी जानकारी उजागर कर रहा है जो कभी सार्वजनिक नहीं होनी चाहिए थी।

आप अपनी खुद की साइट अभी चेक कर सकते हैं: afterpack.dev/security-scanner, या टर्मिनल से:

npx afterpack audit https://your-site.com

AI समीकरण क्यों बदलता है

यह वह वास्तविकता है जो Claude Code लीक दर्शाती है — भले ही यह वह कहानी नहीं है जिसे ज़्यादातर लोगों ने पकड़ा:

Minification कभी सुरक्षा नहीं थी। यह एक साइज़ ऑप्टिमाइज़ेशन है। Variable renaming जो इंसानी पाठकों को धीमा करता है, LLMs के लिए मामूली बात है। AI minified कोड उसी तरह पढ़ता है जैसे आप formatted कोड पढ़ते हैं।

System prompts नए trade secrets हैं। कंपनियाँ अपने प्रोडक्ट्स को आकार देने वाले prompts इंजीनियर करने में महीनों लगाती हैं। Anthropic के Claude Code prompts — "# Doing tasks", "# Executing actions with care", "# Tone and style" सेक्शन — गंभीर prompt engineering कार्य का प्रतिनिधित्व करते हैं। सब cleartext JavaScript में शिप किए गए।

Telemetry नाम प्रोडक्ट रोडमैप उजागर करते हैं। हमने जो 837 tengu_* events निकाले, वे आपको सटीक रूप से बताते हैं कि Anthropic क्या बना रहा है, टेस्ट कर रहा है, और मेज़र कर रहा है। tengu_desktop_upsell_shown और tengu_review_overage_dialog_shown जैसे event names monetization strategy उजागर करते हैं।

Environment variables उजागर करते हैं जो आप शिप करने के लिए तैयार नहीं हैं। 504 विवरणात्मक env var नाम — CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS, CLAUDE_CODE_DISABLE_AUTO_MEMORY, MAX_THINKING_TOKENS — शुरुआती फ़ीचर्स और experimental endpoints उजागर करते हैं जो अभी production-ready नहीं हैं। हमलावरों के लिए, यह सबसे कम टेस्ट किए गए, सबसे कमज़ोर हिस्से का रोडमैप है। प्रतिद्वंद्वियों के लिए, यह आपकी पूरी फ़ीचर पाइपलाइन है। और आपके उपयोगकर्ताओं के लिए, यह उन सेटिंग्स की सूची है जिनके बारे में उन्हें कभी पता नहीं चलना चाहिए था।

और यह सिर्फ़ Anthropic के बारे में नहीं है। हर JavaScript एप्लिकेशन — React frontends, Electron desktop apps, React Native mobile apps, Node.js CLIs — ऐसा कोड शिप करती है जिसे AI अब पढ़ सकता है, विश्लेषण कर सकता है, पुनर्निर्माण कर सकता है, और कॉपी कर सकता है। Feature flags वाले payment gateways। Pricing logic वाले SaaS प्रोडक्ट्स। Hardcoded endpoints वाले authentication flows।

हम एक पूरा अध्ययन तैयार कर रहे हैं कि AI मॉडल लोकप्रिय JavaScript obfuscators को कितनी अच्छी तरह reverse-engineer करते हैं — सिर्फ़ minified कोड नहीं, बल्कि वह कोड जो जानबूझकर सुरक्षित किया गया था। Claude Code (Opus द्वारा संचालित) फ़िलहाल reasoning और code tasks के लिए सबसे शक्तिशाली मॉडल है, और यह इसमें चिंताजनक रूप से अच्छा है। हमें फ़ॉलो करें ताकि आप इसे मिस न करें:

अपडेट रहें

रिलीज़ नोट्स और लेखों के लिए AfterPack को फॉलो करें।

मौजूदा "सुरक्षा" की समस्या

यहाँ असली बात है। आपने अभी जो आर्टिकल पढ़ा वह साबित करता है कि minification सुरक्षा नहीं है। लेकिन जो बात ज़्यादातर लोग नहीं समझते: पारंपरिक obfuscation भी नहीं है — अब नहीं।

हर मौजूदा JavaScript obfuscator Opus 4.6 के अस्तित्व से पहले बनाया गया था। उनकी तकनीकें — string encryption, control flow flattening, dead code injection — क्रमिक, प्रतिवर्ती transforms हैं। हर चरण का एक उल्टा है। लाखों कोड उदाहरणों पर प्रशिक्षित AI मॉडल इन पैटर्न्स को पहचान सकते हैं और अक्सर सेकंडों में उलट सकते हैं।

सेटिंग्स काफ़ी ऊपर कर दें तो हाँ, आप विश्लेषण धीमा कर सकते हैं — लेकिन 10x कोड इन्फ्लेशन और गंभीर performance degradation की कीमत पर। उस बिंदु पर, आपने अपना ऐप पढ़ने योग्य होने से बचाने के लिए उसे अनुपयोगी बना दिया है।

AfterPack इसी कमी को दूर करता है।

मैं AfterPack क्यों बना रहा हूँ

सितंबर 2026 में संपादित: इस खंड के पहले संस्करण में दावा था कि transforms अपरिवर्तनीय हैं। वह जैसा लिखा था वैसा गलत था; अब यह खंड बताता है कि डिज़ाइन क्या करता है।

AfterPack इसे अलग तरीके से करता है। पारंपरिक obfuscator transforms के एक तय सेट को जोड़ते हैं, इसलिए हर बिल्ड की संरचना एक जैसी और पहचानने योग्य होती है, और एक बार लिखा गया decoder सब पर काम करता है। AfterPack में कोई तय संरचना नहीं है: transforms, उनका क्रम और उनसे बनने वाले रूप हर बिल्ड में अलग चुने जाते हैं, इसलिए एक बिल्ड के लिए बनाया गया decoder अगले पर काम नहीं करता। रिवर्स करना अब भी संभव है, जैसे क्लाइंट पर चलने वाली किसी भी चीज़ के साथ। जो बदलता है वह है लागत, और यह लागत हर रिलीज़ पर फिर से शुरू होती है।

मूल विचार: कोड को सिर्फ़ एक बार पढ़ने में कठिन बनाना नहीं। पढ़ने के काम को दोबारा इस्तेमाल के लायक न रहने देना। पिछले हफ़्ते के बिल्ड के नोट्स, स्क्रिप्ट और diff इस हफ़्ते के बिल्ड पर काम करना बंद कर देते हैं, इसलिए हमलावर का निवेश आपकी रिलीज़ की रफ़्तार पर खत्म हो जाता है।

और हाँ, आप अपना कोड अब भी डीबग कर सकते हैं। AfterPack source maps बनाता है जो obfuscated आउटपुट को आपके मूल सोर्स से जोड़ते हैं। बिल्ड पढ़ने वालों के लिए अपठनीय है, आपके लिए नहीं।

Rust में बनाया गया, स्पीड के लिए — इतना तेज़ कि हर build, हर commit पर चल सके, यहाँ तक कि edge पर Cloudflare Workers पर भी। एक free tier के साथ जो इतना उदार है कि इसे न उपयोग करने का कोई बहाना नहीं।

मौजूदा स्थिति — जहाँ एक $60B+ AI कंपनी अपना सबसे संवेदनशील client-side कोड bundler minification से ज़्यादा कुछ नहीं के साथ शिप करती है — टिकेगी नहीं। मैं AfterPack इसलिए बना रहा हूँ क्योंकि मेरा मानना है कि protection हर build pipeline में एक default step होना चाहिए, बाद की सोच नहीं। अगर आप उत्सुक हैं, तो अपनी साइट पर scanner आज़माएँ — आप हैरान हो सकते हैं कि क्या exposed है।

अपडेट रहें

रिलीज़ नोट्स और लेखों के लिए AfterPack को फॉलो करें।