AIDive

मैंने Claude Code का अनडॉक्यूमेंटेड Mod बनाया, गार्ड फेल हुआ

AIDive द्वारा · प्रकाशित

कोडिंग एजेंटAI सुरक्षा

बारह दिन: 'अगर आप यह चाहते हैं' से Tetris तक

Claude Code Mods TypeScript मॉड्यूल हैं जो Claude Code इंजन के अंदर चलते हैं और उसके events को functions के रूप में hook करते हैं। Boris Cherny, जो Anthropic में Claude Code का नेतृत्व करते हैं, ने पांच शब्दों में इसकी घोषणा की: "Claude mods are landing now." इस पोस्ट को 2,400 likes मिले, और तब तक किसी ने टर्मिनल के अंदर Tetris बना भी दिया था। Tetris, Doom, और एक pet जो तब बढ़ता है जब Claude आपके tests चलाता है — ये सब prompt के ऊपर rendered होते हैं, zero tokens पर।

इस घोषणा में किसी docs page का लिंक नहीं है। इसके बजाय यह 12 दिन पहले एक Anthropic engineer द्वारा खोले गए एक GitHub issue से लिंक करती है, जिसमें एक शर्त लिखी हुई थी। Alice Poteat ने लिखा कि community की प्रतिक्रिया ही यह तय करेगी कि यह feature शिप होगा या नहीं। 177 comments के बाद, लोगों ने flagged binary को जमकर आज़माया, उसके timeouts मापे, और उस पर games बना दिए।

पैमाना मान
घोषणा पर likes 2,400
GitHub issue पर comments 177
इस हफ़्ते के build में typed surface 10,700 lines
Nouns पर events (issue-thread build) 84 (19 पर)
48 घंटों के अंदर GitHub पर Mods 31

लेखन के समय docs page 404 लौटाता है। यह लेख Claude Code को बढ़ाने के चार तरीके, जानबूझकर बनाया और तोड़ा गया एक उपयोगी Mod, और शिप करने से पहले अभी भी क्या अस्थिर है — इन सबको कवर करता है।

एक Mod बीच में बैठा एक फ़ंक्शन है

Source tree इसे एक वाक्य में परिभाषित करता है: एक Mod एक Claude Code plugin है जिसका व्यवहार एक hooks module में रहता है। एक register entry इंजन के events को functions के रूप में hook करती है। डिस्क पर, यह एक plugin folder, ठीक एक module का नाम लेने वाला एक hooks manifest, और वह module खुद है।

हर hook तीन चीज़ों का एक function है: $, वह दरवाज़ा जिससे हर side effect गुज़रता है; event; और continuation, यानी आपके नीचे की बची हुई chain। Hooks middleware की तरह nest होते हैं। जो पहले register होता है वह event का मालिक होता है, और उसके नीचे की कोई भी चीज़ उसे रोक नहीं सकती। यह क्रम configuration से तय होता है, install होने के क्रम से नहीं। Alice Poteat के शब्दों में, क्रम configuration से सेट होता है, न कि आपने उन्हें कब install किया इससे।

कोई ambient access नहीं है। एक Mod जो भी करता है वह $ से होकर गुज़रता है, इसलिए एक admin किसी भी event को audit, allow, deny या log कर सकता है। एक commenter ने इसे इस तरह summarise किया: एक plugin ने जो किया वही ठीक-ठीक वे calls हैं जो उसने कीं। * पर एक ही hook हर event देख लेता है, इसलिए एक audit log सिर्फ एक function है। एक Mod draw कर सकता है, क्योंकि interface React है। यह Bun पर in process चलता है, 99वें percentile पर 50 microseconds में। एक environment variable इसे on करता है। $ पर असल में क्या रहेगा, यह अभी भी early-access partners के साथ design किया जा रहा है।

Claude Code को बढ़ाने के चार तरीके, और कौन सा किसके लिए

एक shell hook एक script है जिसे इंजन एक तय पल पर बुलाता है। इसे standard input पर JSON मिलता है और यह एक exit code से जवाब देता है। जवाब की एक सीमा है: वापस 8,000 characters का context, और कुछ hooks के लिए 2,000। Pratham के शब्दों में, Windows पर ये अक्सर अजीब तरीकों से टूट जाते हैं।

एक plugin एक box है। एक manifest skills, agents, hooks, और MCP servers को बंडल करता है। यह किसी marketplace से install होता है या डिस्क पर किसी folder से सीधे load होता है, और कुछ भी चलने से पहले एक command उस box को validate करता है।

एक skill prose है जिसे model ज़रूरत पड़ने पर पढ़ता है। इसका body तभी load होता है जब कोई matching prompt आता है। यह व्यवहार बदलने का सबसे सस्ता तरीका बना रहता है।

एक Mod वही box है, बस एक और file के साथ: एक hooks manifest जो एक module का नाम लेता है, और वह module TypeScript है, typed, in process, इंजन के हर event पर। बस यही पूरा फ़र्क़ है।

Mechanism यह क्या है कैसे चलता है सीमा
Shell hook एक तय पल पर बुलाया गया script Subprocess, exit code वापस 8,000 chars (कुछ hooks के लिए 2,000)
Plugin Skills, agents, hooks, MCP servers का bundle Install या डिस्क से load चलने से पहले validated
Skill Matching prompt पर load होने वाला prose Model के context में सबसे सस्ता बदलाव
Mod Plugin plus एक TypeScript hooks module In process, हर event पर Typed, early access

Types एक slash command से आते हैं, जो $ जो कुछ भी देता है उसकी पूरी listing सीधे आपके project में लिख देता है। पुराने shell hooks wrap किए गए हैं, retire नहीं। एक early build पर, Spencer Morley ने wrapper को load होने में fail होते और फिर भी declared बना रहते देखा। सामान्य नियम: Claude जो जानता है उसे बदलने के लिए एक skill लिखें; किसी पल पर script चलाने के लिए, एक shell hook; एक bundle शिप करने के लिए, एक plugin; इंजन के अंदर बैठने के लिए, एक Mod। Shell hook अब भी वहां हर जगह काम करता है जहां flag off है।

Anthropic के अपने तीन, सोर्स से पढ़े गए

तीन Mods binary के अंदर शिप होते हैं और उनका source GitHub पर है: एक security default, एक diff pane, और telemetry।

Security default सबसे बाहर बैठता है। managed settings वाली किसी मशीन पर, या किसी Team या Enterprise organisation में, कोई व्यक्ति जो भी install करे वह इसके ऊपर नहीं जा सकता। यह 12 events को hook करता है, और हर hook तीन में से एक move करता है: user tier को आगे जाने दे, user tier के किसी caller को नाम से मना कर दे, या pass कर दे। यह fail closed होता है, और doc comment दो शब्दों में यही कहता है। यही वह हिस्सा है जिसकी thread को परवाह थी: एक admin $ से एक affordance हटा देता है, और उसके नीचे register हुआ कुछ भी उसे invoke नहीं कर सकता। एक commenter के शब्दों में, यह किसी plugin से कुछ न करने को कहने से categorically अलग है।

Diff transcript के बगल में एक pane है, जो session के uncommitted changes को file दर file दिखाता है, Claude के edit करते ही refresh होता है। यह session शुरू होने पर register होता है और 27 helper files तक फैला है, कोई toy नहीं।

Telemetry engine creation के अंदर से $ में एक noun जोड़ता है। यह नीचे जो कुछ है उसे await करता है और वह plus खुद को लौटाता है। यह सिर्फ internal builds में चलता है।

README कहती है कि source से एक चलाएं और source से एक test करें। आज के build की help में validate, eval, और details सूचीबद्ध हैं। सूची में test नहीं है, हालांकि test help अब भी जवाब देती है। Built-in tier आपकी copy को भी मना कर देता है: उन नामों में से किसी एक नाम से एक plugin शिप करें, और binary अपना ही load करता है।

बयालीस लाइनें: एक Mod जो मॉडल से secrets छुपाता है

Types लिखने वाला slash command, इस build पर, 11,700 lines produce करता है: 23 nouns में 84 events। Tool call hook एक result या एक deny के साथ जवाब देता है, कभी text के साथ नहीं। यह हिस्सा core तय करता है।

Mod तीन files है: plugin manifest, अपनी एक लाइन वाला hooks manifest, और module। Module 42 lines का है। यह नीचे जो कुछ है उसे await करता है, result को scrub करता है, और उसे वापस सौंप देता है। चार patterns दो vendor key shapes, एक GitHub token, और key, secret या token नाम के किसी भी variable को assign की गई चीज़ को कवर करते हैं।

Validate चलने से पहले source पढ़ता है। यह उस event का नाम लेता है जिसे module hook करता है और वह एक चीज़ जो यह $ पर call करता है। इकलौती warning एक missing author की है। Flag on के साथ डिस्क से load होने पर, test file में दो keys हैं, दोनों निर्माण से ही fake, और model "redacted" पढ़ता है। अपने ही शब्दों में, values redacted होकर वापस आईं, इसलिए यह नहीं देख सकता कि उनमें क्या है।

पैमाना मान
Module length 42 lines
Hop latency, worker सहित 28 ms
Session में जोड़े गए tokens 0

इंजन hop को एक hooks module द्वारा resolved के रूप में log करता है। Inventory कोई skills नहीं दिखाता, कोई agents नहीं, कुछ भी हमेशा-on नहीं। एक सीमा बनी रहती है: model से छुपा होना screen से छुपा होना नहीं है। Transcript अब भी वही दिखाता है जो tool ने print किया। वह एक अलग Mod है, जैसा Ship Notes में Max ने एक लाइन में बताया।

इसे तोड़ें: एक धीमा guard एक बायपास हुआ guard है

वही Mod, एक जोड़ी गई line के साथ: नीचे की call से पहले 15-second की sleep। दस सेकंड बाद, इंजन उस पर हार मान लेता है, report करता है कि hook अपना budget पार कर गया और skip कर दिया गया, और उसके नीचे जो है वह उसकी जगह चलता है। Command फिर भी चलता है और "hi" print करता है।

Sleep की जगह एक throw रखें: 574 milliseconds, वही फैसला, skipped, और command चलता है।

केस समय फैसला
Healthy hook 28 ms Resolved
Throw 574 ms Skipped, command चला
Hang 10 s से ज़्यादा Skipped, command चला

दोनों failures एक ही शब्द पर ख़त्म होते हैं: skipped। Thread ने एक हफ़्ते पहले ही इस असंगति को माप लिया था। Load पर missing एक capability fail closed होती है। अपना budget पार कर चुका एक hook fail open होता है: loud लेकिन bypassed, Spencer Morley के शब्दों में। बिना किसी कारण के एक block model को बस किसी दूसरे tool पर भेज देता है। Pratham ने इसे एक अलग tool चुनते और फिर भी file लिखते देखा।

मेज़ पर जवाब एक catch है। Alice Poteat hook के return पर एक catch का प्रस्ताव रखती हैं, जो तब चलता है जब आप बहुत देर लगाएं या throw करें। एक rewrite हुई write को अब भी model के लिए एक note चाहिए: यह वही देखता है जो उसने लिखने को कहा था, caching कारणों से, इसलिए आप एक context line जोड़ते हैं। Budget ही isolation भी है। Hooks worker अलग चलता है, और जब यह crash होता है, इंजन इसे respawn करता है और session के लिए hooks को off कर देता है। समाधान लंबा budget नहीं बल्कि एक declared catch है।

Mods के अड़तालीस घंटे, और एक वाक्य क्या खरीदता है

दो दिन में: prompt के ऊपर Tetris और सात अन्य games, Claude के काम करते समय खेलने लायक, zero tokens पर। Doom, वही 1993 वाला original, अपनी ही process में चलता है; Mod local HTTP पर इस तक पहुंचता है और इसे प्रति सेकंड 10 बार redraw करता है। Spinner में एक breathing pacer है, और hooks worker के अंदर चलता 260,000 parameters वाला एक story model है, zero API tokens के साथ।

Registry ने validate के साथ 31 Mods scan किए। 14 host processes चला सकते हैं। 13 हर tool call देखते हैं।

Community thread की Demo 8 ने वादा किया था कि एक वाक्य ऐसा plugin लिखता है जो model के पढ़ने से पहले secrets छुपा देता है। हमने एक मांगा।

पैमाना मान
Time 4 min
Turns 34
Cost $1.23
Lines (plus एक test file) 190, हमारे 42 के मुक़ाबले
Tests एक सेकंड के एक-तिहाई में 4 pass

यह जो छुपाता है उसे kind के हिसाब से label करता है, clean validate होता है, और इसे न किसी API key की ज़रूरत है न किसी model call की। एक reply ने इसे यूं कहा: allowlists ही product हैं, Tetris तो बस demo है।

फैसला: अभी एक बनाएं, बाद में शिप करें

Registry के अपने आंकड़े ही चेतावनी हैं। 31 में से 14 Mods host processes चला सकते हैं, और इकलौती जांच एक static footprint है। Eval help खुद यही कहती है: एक passing suite कोई security vetting नहीं है।

संकेत मान
8वीं तारीख़ को events 20
15वीं तारीख़ को events 84
एक पखवाड़े में CLI versions 14
Hacker News points 2
Compatibility question के replies 0

10-second budget runtime में रहता है, types में नहीं, जैसा Marat ने बताया। कोई changelog line नहीं, कोई docs page नहीं, कोई launch post नहीं। एक rival कहता है कि Anthropic ने इसे कॉपी किया: Ahmad Awais Command Code के mods की ओर इशारा करता है, और वह उनका example mod लिखता है, तो इसे तौलकर देखें। "early access, APIs may change" वाली post को 357 likes मिले।

अगर आप पहले से hooks लिखते हैं और audit, redaction या एक pane चाहते हैं, तो अभी एक बनाएं। अगर आप किसी team को शिप करने वाले हैं और contract अभी नहीं लिखा गया, तो रुकें। वही openness है जिसकी वजह से fail-open budget, MCP call type mismatch, और wrapper failure दिनों में users ने ढूंढ निकाले।

स्रोत

अक्सर पूछे जाने वाले सवाल

Claude Code Mod क्या है?
एक Mod एक Claude Code plugin है जिसका व्यवहार एक TypeScript hooks module में रहता है। यह module इंजन के events पर functions register करता है और Bun पर in process चलता है, जहां हर side effect `$` object से होकर गुज़रता है।
Claude Code के hooks, plugins, skills और Mods में क्या फ़र्क़ है?
एक shell hook एक तय पल पर बुलाया जाने वाला script है जो exit code से जवाब देता है। एक plugin skills, agents, hooks और MCP servers का एक bundle है। एक skill वह prose है जिसे model matching prompt पर load करता है। एक Mod वही plugin है बस एक अतिरिक्त file के साथ, एक typed TypeScript module जो इंजन के हर event को in process hook करता है।
क्या एक Claude Code Mod model से secrets छुपा सकता है?
हां। एक 42-line का Mod जो tool result को await करता है, key, secret और token patterns को scrub करता है और redacted text लौटाता है, प्रति hop 28 ms और zero tokens जोड़ता है। यह screen पर transcript से values नहीं छुपाता, इसके लिए एक अलग Mod चाहिए।
एक धीमा Claude Code Mod fail open क्यों होता है?
Hooks worker हर hook को 10-second का budget देता है। जो hook इसे पार कर जाए, या throw करे, उसे skipped चिह्नित किया जाता है और उसके नीचे की chain उसकी जगह चलती है, इसलिए guarded command फिर भी execute हो जाता है। Anthropic का प्रस्तावित समाधान hook के return पर declared एक catch है।
क्या Claude Code Mods install करना सुरक्षित है?
अभी डिफ़ॉल्ट रूप से नहीं। पहले 48 घंटों में इंडेक्स हुए 31 Mods में से 14 host processes चला सकते हैं और 13 हर tool call देखते हैं, और इकलौती जांच एक static footprint है। Managed settings Anthropic के security default को किसी भी user-installed चीज़ के ऊपर रखते हैं।
क्या मुझे अभी एक Claude Code Mod बनाना चाहिए?
अगर आप पहले से hooks लिखते हैं और एक audit log, redaction या diff pane चाहते हैं, तो अभी एक बनाएं। किसी team को एक शिप करने से पहले रुकें: यह feature early access में है, API एक हफ़्ते में 20 से 84 events तक बदल गया, और अभी तक कोई docs page या changelog line नहीं है।

मिलते-जुलते वीडियो