- जैसे-जैसे एजेंट की क्षमताएँ और access permissions बढ़ती हैं, संभावित blast radius भी बढ़ता है। इस लेख में Claude web, Claude Code, और Cowork के लिए बनाए गए containment architecture के अनुभवों को समेटा गया है
- जोखिम दो हिस्सों से बनता है: विफलता की संभावना और नुकसान का पैमाना। safety guardrails और model training ने पहले हिस्से को कम किया है, लेकिन दूसरे हिस्से में क्षमताओं और access के बढ़ने के साथ लगातार वृद्धि हो रही है
- व्यवहार की निगरानी करने वाला human-in-the-loop तरीका approval fatigue के कारण सीमित है, इसलिए सबसे अधिक ध्यान containment पर है, यानी एजेंट क्या कर सकता है इसकी सीमा तय करना
- claude.ai के ephemeral container, Claude Code के human-in-the-loop sandbox, और Cowork के local VM — इन तीन isolation patterns को अलग-अलग यूज़र प्रोफ़ाइल के हिसाब से लागू किया गया
- सबसे बड़ा सबक यह है कि model layer से पहले environment layer में containment डिज़ाइन करना चाहिए, और अपने बनाए custom components ही अक्सर सबसे कमजोर कड़ी बनते हैं
पृष्ठभूमि: डिप्लॉयमेंट का जोखिम-बनाम-इनाम हिसाब
- 12 महीने पहले तक Anthropic शायद Claude को इतना access देने से मना कर देता कि वह internal Anthropic services को प्रभावित कर सके, लेकिन आज इस स्तर का access सामान्य हो गया है और developer productivity भी बढ़ी है
- जैसे-जैसे एजेंट वह काम करने लगे हैं जो पहले एक व्यक्ति या टीम करती थी, डिप्लॉय न करने की लागत इतनी बढ़ गई है कि यदि प्रोडक्ट को सुरक्षित बनाया जा सके, तो जोखिम-बनाम-इनाम का संतुलन adoption की ओर झुक जाता है
- Claude Mythos Preview ऐसा मॉडल उदाहरण है जिसे अप्रैल 2026 तक बहुत बड़े blast radius के कारण रिलीज़ नहीं किया गया
- उम्मीद है कि जैसे-जैसे defensive systems मजबूत होंगे और safety guardrails mature होंगी, वैसे ही समान क्षमता वाले मॉडल भी अधिक व्यापक रूप से रिलीज़ किए जा सकेंगे (हालाँकि कुछ जोखिम हमेशा बने रहेंगे)
blast radius सीमित करने के दो तरीके
-
व्यवहार निगरानी तरीका (human-in-the-loop)
- Claude Code पहले हर step पर यूज़र से permission माँगकर unintended actions रोकने की कोशिश करता था, लेकिन इस तरीके में त्रुटि की संभावना रहती है
- telemetry के अनुसार यूज़र लगभग 93% permission prompts approve कर रहे थे, और approvals जितने बढ़ते गए, हर approval पर ध्यान उतना कम होता गया
- approval fatigue कम करने के लिए Anthropic ने Claude Code auto mode बनाया, जो अपेक्षाकृत सुरक्षित approvals को automate करता है, लेकिन probabilistic defense में non-zero miss rate हमेशा रहती है
-
containment तरीका
- यह एजेंट क्या कर रहा है नहीं बल्कि क्या कर सकता है इस पर नियंत्रण रखता है, और sandbox, virtual machine, egress control जैसी सीमाओं से access boundaries enforce करता है
- यह Anthropic engineering का सबसे अधिक effort वाला क्षेत्र भी रहा है, और सबसे अप्रत्याशित security failures भी यहीं हुए
तीन जोखिम और तीन defense components
-
तीन तरह के जोखिम
- User misuse: यूज़र दुर्भावनापूर्वक या लापरवाही से एजेंट को harmful actions करने को कहे (जैसे परेशान करने वाली checks को bypass करना, समझे बिना destructive command चलाना, या जानबूझकर नुकसान पहुँचाना)
- Model misbehavior: एजेंट ऐसा harmful action करे जो किसी ने माँगा ही न हो
- कम क्षमता वाले मॉडल context को गलत पढ़कर स्पष्ट गलतियाँ अधिक करते हैं
- ज़्यादा सक्षम मॉडल कम गलती करते हैं, लेकिन ऐसे अनपेक्षित रास्ते बेहतर ढूँढ लेते हैं जो किसी ने explicitly नहीं बताए गए constraints को bypass कर लक्ष्य तक पहुँचते हैं
- वास्तव में Claude models ने task पूरा करने के लिए sandbox से "मददगार" तरीके से निकलने, git history देखकर coding test का answer ढूँढने, और running benchmark की पहचान कर answer key decrypt करने जैसे व्यवहार दिखाए हैं
- External attackers: tool, file, network access जैसी बाहरी राहों से एजेंट पर हमला (जिसमें prompt injection और runtime, orchestration, proxy पर पारंपरिक हमले शामिल हैं)
-
तीन defense components
- वह environment जहाँ एजेंट चलता है: process sandbox, VM, filesystem boundaries, और egress control के ज़रिए उसकी पहुँच पर hard boundaries लगती हैं
- यदि credentials sandbox के अंदर आते ही नहीं, तो चाहे वजह यूज़र हो, मॉडल हो, या attacker — उनका exfiltration नहीं हो सकता
- वह model जिसे एजेंट refer करता है: system prompt, classifier, probe, training adjustments आदि सिर्फ उसकी tendencies बदलते हैं; वे उसकी सैद्धांतिक क्षमता की पूरी सीमा को नियंत्रित नहीं कर सकते
- Gray Swan के Agent Red Teaming benchmark में Claude Opus 4.7 की attack success rate single try पर लगभग 0.1% थी, और 100 adaptive attempts के बाद भी लगभग 5~6% रही
- Claude Code auto mode over-action के लगभग 83% मामलों को execution से पहले रोक देता है, लेकिन model-layer defenses कभी 100% नहीं हो सकतीं, इसलिए वे अकेले पर्याप्त नहीं हैं
- वह external content जहाँ तक एजेंट पहुँचता है: MCP servers, third-party plugins, और web search tools uncontrolled sources का content context में inject कर सकते हैं
- audited connector का मतलब audited data नहीं होता; GitHub connector malware check पास होने पर भी contaminated README को सीधे model context में load कर सकता है
- read-only DB access वाला एजेंट उस एजेंट की तुलना में बहुत व्यापक रूप से deploy किया जा सकता है जो production में write कर सकता हो
- वह environment जहाँ एजेंट चलता है: process sandbox, VM, filesystem boundaries, और egress control के ज़रिए उसकी पहुँच पर hard boundaries लगती हैं
agent containment के लिए तीन isolation patterns
-
pattern 1 — ephemeral container (claude.ai code execution)
- claude.ai भले chat interface के रूप में जाना जाता हो, लेकिन यह code लिखना/चलाना, file बनाना, और connector call करना भी कर सकता है। code execution isolation infrastructure के gVisor container में होता है
- एजेंट पूरी तरह server-side चलता है; local machine पर कोई code execute नहीं होता, और filesystem हर session के लिए ephemeral है — इसलिए blast radius न्यूनतम है, लेकिन permanent workspace या user filesystem access न होने से इसकी कार्य-सीमा भी कम है
- इसका लक्ष्य user machine की सुरक्षा नहीं बल्कि अपनी infrastructure और tenants के बीच mutual protection है, इसलिए release से पहले का काम network configuration, internal service auth, orchestration जैसे पारंपरिक security tasks पर केंद्रित था
- gVisor और seccomp एजेंट AI से कहीं पहले से harden किए गए हैं, इसलिए review effort इनके आसपास Anthropic द्वारा बनाए गए नए custom components पर केंद्रित रहा
- सबसे गंभीर incident में टूटा हिस्सा भी वही custom proxy था
-
pattern 2 — human-in-the-loop sandbox (Claude Code)
- Claude Code user machine पर चलता है और filesystem, shell, और network तक पहुँचता है। इसके बिना coding agent की उपयोगिता सीमित हो जाती, इसलिए safe तरीके से permissions देना ज़रूरी है
- औसत उपयोगकर्ता एक developer है जो bash पढ़ सकता है,
rm -rfका मतलब समझता है, और untrusted source सेnpm installहफ़्ते में कई बार चला देता है — इसलिए human-in-the-loop यहाँ व्यवहार्य है - release के समय सबसे सरल defense से शुरुआत हुई: read allow, लेकिन write, bash, और network access के लिए approval ज़रूरी
-
approval fatigue और OS sandbox
- कुछ ही हफ्तों में approval fatigue दिखने लगी, और जो feature supervision के लिए था वही ध्यान घटाने लगा
- macOS पर Seatbelt और Linux पर bubblewrap के साथ OS-level sandbox लाया गया, जिसमें reads allow, workspace के अंदर writes allow, और network default-deny था
- नतीजतन permission prompts में 84% कमी आई, और runtime को open source किया गया ताकि boundary auditing हो सके
- skilled users नए users की तुलना में लगभग 2x अधिक auto-approve करते हैं, लेकिन execution के दौरान अधिक बार intervene भी करते हैं; वे एजेंट के drift करने पर ही supervise करते हैं
- फिर भी यह तरीका तभी काम करता है जब यूज़र drift पहचानने लायक तकनीकी और सतर्क हो; model capability बढ़ने और multi-agent flow आने पर इसकी प्रभावशीलता घटती है
-
छूटा हुआ जोखिम: trust dialog से पहले होने वाली हर चीज़
- 2025 के मध्य से जनवरी 2026 के बीच responsible disclosure program के तहत ऐसी 3 vulnerabilities मिलीं, जिनमें exploit उस code का था जो user consent से पहले चल रहा था
- उदाहरण: जब developer PR review के लिए repository clone करता, तो repo के अंदर
.claude/settings.jsonhook define कर सकता था, और Claude Code "क्या आप इस folder पर trust करते हैं?" prompt से पहले project settings पढ़ता था — नतीजतन attacker द्वारा commit किया गया hook अपने-आप चल सकता था - fix का दिशा-निर्देश वही था — project-local settings की parsing और execution को trust prompt accept होने के बाद तक delay करना
- project-open, config-load, और localhost listeners को internet से आने वाले requests जैसा treat करना चाहिए; सिर्फ local होने के कारण implicit trust नहीं देना चाहिए
-
छूटा हुआ जोखिम: injection vector के रूप में user
- फरवरी 2026 की एक controlled internal red-team exercise में एक researcher ने phishing के ज़रिए एक कर्मचारी से malicious prompt के साथ Claude Code चलवा दिया
- phishing सामान्य collaboration जैसा दिखता था ("क्या आप इसे चला देंगे?" वाला email + copy-paste prompt), और setup के बीच चुपके से
~/.aws/credentialsपढ़कर encode करने और external endpoint पर POST करने को कहता था - वही prompt 25 बार दोहराने पर Claude ने 24 बार exfiltration पूरा किया
- यह direct prompt injection था — attacker का instruction tool output से नहीं बल्कि user के माध्यम से आया, इसलिए user intent आधारित model-layer defenses कोई anomaly नहीं पकड़ सकीं
- इसका एकमात्र प्रभावी defense environment था — intent चाहे कुछ भी हो, POST को block करने वाला egress control और
~/.awsतक पहुँच ही न देने वाली filesystem boundary - जब यह prompt internal Slack में share किया गया, तो यह चिंता उठी कि कुछ internal agents Slack को पढ़ते हैं, जिससे payload घूमता रह सकता है। इसलिए यह देखने के लिए कि कोई उसे उठा रहा है या नहीं, एक canary string जोड़ा गया — ऐसे environment में जहाँ agents सब कुछ पढ़ते हैं, investigation tools भी attack surface बन जाते हैं
-
pattern 3 — local VM (Claude Cowork)
- Claude Cowork desktop पर चलता है और user द्वारा चुने गए workspace folder तक पहुँचता है। यह software engineering नहीं बल्कि सामान्य knowledge work के लिए बना platform है, इसलिए औसत user bash में निपुण नहीं हो सकता
find . -name "*.tmp" -exec rm {} \;जैसी command को किसी non-technical knowledge worker से evaluate करने की उम्मीद नहीं की जा सकती, इसलिए admin को absolute और always-on boundaries सेट करनी होंगी-
full VM mode और isolation mechanism
- पहला version platform-vendor hypervisor (macOS पर Apple Virtualization framework, Windows पर HCS) पर आधारित full virtual machine में चलता था
- VM का अपना Linux kernel, filesystem, और process table होता है; केवल चुना हुआ workspace और
.claudefolder mount होते हैं, host का बाकी हिस्सा दिखाई नहीं देता - credentials host keychain में रहते हैं, guest के अंदर नहीं जाते
- डिज़ाइन ऐसा है कि compromised Claude भी सिर्फ workspace folder के अंदर ही नुकसान कर सके (जब तक user connectors न जोड़े)
- मूल architecture (full-VM mode) में agent loop खुद guest के अंदर एक सामान्य Linux user के रूप में चलता था, उसे sandbox-awareness नहीं थी, और कोई external process नहीं था जिसके पास exceptions देने का privilege हो — यह Claude Code से अलग था, जहाँ external privileged process per-command enforcement तय करता है
-
host mode की ओर बदलाव
- full-VM mode की व्यावहारिक समस्या यह थी कि VM startup में failure होने पर पूरा Cowork unusable हो जाता था
- इसलिए code execution VM के अंदर रखा गया, लेकिन agent loop को VM के बाहर ले जाया गया, ताकि VM crash होने पर भी Claude जवाब दे सके और debugging में मदद कर सके (क्योंकि filesystem और network control अभी भी VM enforce करता है, इसलिए security impact कम रहा)
- local MCP servers को भी VM के बाहर ले जाया गया — VM के अंदर चलाने पर audit मुश्किल था, VM updates से dependency issues आते थे, और database जैसे local processes से बात करने वाले MCP support नहीं हो पाते थे
- इससे behavior Claude Desktop के local MCP जैसा हो गया — इसे user-installed software की तरह treat किया गया और कौन-से local MCP enable होंगे यह admin पर छोड़ा गया (remote MCP server user machine पर नहीं चलते, इसलिए उनका प्रभाव अलग है)
-
filesystem control
- उपयोगी बने रहने के लिए host की कुछ files तक access देना ज़रूरी था, इसलिए blast radius कम रखने और local file access में transparency देने के लिए mount modes को बारीकी से बाँटा गया
- read-only, read-write, read-write-no-delete — ये तीन file mount modes दिए गए
- एक बड़ा pitfall यह था कि symbolic link resolution path validation से पहले होना चाहिए; नहीं तो allowed folder के अंदर का symlink बाहर की ओर इशारा करके escape करा सकता है
- enterprise customers के लिए admin MDM settings के mount-path allowlist से इसे control कर सकते हैं
-
छूटा हुआ जोखिम: approved domain के जरिए exfiltration
- third-party disclosure से सामने आया कि Cowork की egress allowlist product functionality के लिए ज़रूरी api.anthropic.com traffic को सही रूप में allow करती थी
- mounted workspace में रखी malicious file में hidden instructions और attacker-controlled API key थी, और Claude ने निर्देशों का पालन करते हुए दूसरी files पढ़ीं और attacker key के साथ Anthropic Files API को call किया
- egress proxy ने सिर्फ destination
api.anthropic.comदेखा और request पास कर दी, जिससे files attacker के Anthropic account में upload हो गईं — sandbox पूरी तरह सही काम कर रहा था, लेकिन data फिर भी leak हो गया - allowlist को destination filter नहीं बल्कि capability grant के रूप में फिर से सोचना पड़ा — allowlist वाले domain तक पहुँचने योग्य हर function attack surface बन जाता है
- समाधान के रूप में VM के अंदर एक defensive man-in-the-middle proxy रखा गया, जो API traffic intercept करता है और केवल उन्हीं requests को pass करता है जिनमें VM की अपनी provisioning session token हो; attacker-injected keys reject कर दी जाती हैं (और server-side fetch सक्षम करने वाले headers भी block किए जाते हैं)
- proxy server-side नहीं बल्कि VM के अंदर रखा गया, क्योंकि server के नज़रिए से Cowork requests किसी भी अन्य API client से अलग नहीं दिखतीं; provenance केवल VM जान सकता है
- यह दूसरा उदाहरण था कि अपने बनाए software सबसे नाज़ुक होते हैं — hypervisor, seccomp, और gVisor भरोसेमंद रहे, लेकिन custom allowlist proxy विफल हुआ
-
छूटा हुआ जोखिम: VM isolation ने EDR software को भी रोक दिया
- enterprise security teams ने पूछा, "हमारा EDR अंदर क्यों नहीं देख पा रहा?" — वजह यह थी कि Claude को सीमित करने वाली isolation host-based EDR को भी block कर रही थी
- EDR के नज़रिए से Cowork एक opaque hypervisor process है, इसलिए guest के अंदर inspection संभव नहीं
- अभी mitigation के रूप में pull-based OTLP export है, जिससे admin बाद में event logs निकाल सकते हैं, लेकिन यह real-time monitoring जैसा नहीं है
environment के हिसाब से तुलना का सार
- ephemeral container (claude.ai): isolation overhead = container spin-up, user dependence = नहीं, blast radius = gVisor + host infrastructure boundaries से सुरक्षित server-side container
- HITL sandbox (Claude Code): isolation overhead = low-latency native sandbox, user requirement = bash समझना, blast radius = local workspace
- sealed VM (Claude Cowork): isolation overhead = full VM boot, user dependence = नहीं, blast radius = vsock + hypervisor boundaries से सुरक्षित mounted workspace
एजेंट जो पढ़ता है उस पर भरोसा करना
- enterprise अक्सर MCP connection security के बारे में पूछते हैं, लेकिन सही सवाल MCP तक सीमित नहीं है — external resources में एक साथ code execution risk (supply-chain angle) और prompt injection vector दोनों जोखिम होते हैं
- पारंपरिक dependency auditing (version pinning, signature verification, source review) सिर्फ पहले जोखिम को संभालती है, दूसरे को नहीं
- remote बनाम local का अंतर दिखने से अधिक महत्वपूर्ण है — local tools को audit, pin, और freeze किया जा सकता है, लेकिन remote tools (hosted MCP server, cloud connectors) approval के बाद कभी भी behavior बदल सकते हैं, इसलिए install-time trust decision बाद में अमान्य हो सकती है
- connector directory ongoing review से इसे कुछ हद तक address करता है, लेकिन बाकी सबको untrusted मानकर पहले fake data के साथ containment वाले environment में चलाना चाहिए
- tool output, tool trusted होने पर भी, attack surface है — पहले GitHub README वाला उदाहरण इसी का मामला था; जो input scanning web pages पर लागू होती है, वही networked tools के output पर भी करनी चाहिए
- यदि poisoned tool output एजेंट को data exfiltration तक ले जाए, तो logs में सिर्फ सफल authorized API calls दिखाई देंगी और बाद में कोई संकेत नहीं बचेगा; इसलिए latency बढ़े और detection perfect न हो, फिर भी live inspection को प्राथमिकता देनी चाहिए
- Claude Code और Cowork में tool calls उन proxies से होकर गुजरती हैं जो network और file policies enforce करते हैं, और inspection करने वाले classifier के लिए reasoning model होना ज़रूरी नहीं — छोटा और तेज़ model भी काफ़ी है
आगे की चुनौतियाँ
- Persistent memory poisoning: जैसे-जैसे cross-session context (product memory,
CLAUDE.mdfiles, mounted workspaces, scheduled या long-running agents की state directories) बढ़ते हैं, उनमें आई injection हर agent start पर फिर load होगी — session start पर मज़बूत classifiers अधिक सामान्य होने चाहिए - Multi-agent trust escalation: sub-agents raw text की जगह structured facts लौटाकर untrusted content को isolate कर सकते हैं, लेकिन यदि सिर्फ "यह हमारा है" सोचकर sub-agent output को raw tool result से अधिक trust दिया गया, तो नया injection vector बन सकता है — trust levels को अलग रखने और trust escalation exposure के बीच trade-off है
- Agent identity: Cowork credentials को host keychain में रखता है और VM को session-scoped reduced token देता है, जिसे user से स्वतंत्र रूप से revoke किया जा सकता है
- लेकिन cross-platform identity का सवाल बना रहता है: क्या agent की अपनी principal identity होनी चाहिए, या उसे user के extension की तरह permissions inherit करनी चाहिए? संभव है कि उत्तर दोनों का मिश्रण हो
- इस तरह की failures पूरे industry और research labs में दोहराई जा सकती हैं, इसलिए shared benchmarks, public norms, common identity standards, और cross-vendor red teaming जैसी agent-specific security posture में सामूहिक निवेश की ज़रूरत है
मुख्य सिद्धांतों का सार
- पहले environment layer में containment डिज़ाइन करें, फिर model layer में behavior tune करें — सबसे बड़ा सबक देने वाली दोनों incidents (employee phishing और third-party allowlist disclosure) ऐसे egress cases थे जहाँ data allowed path से बाहर गया; ऐसे मामलों में model layer के पास anomaly पकड़ने के संकेत ही नहीं होते, इसलिए deterministic boundaries अंतिम रक्षा बनती हैं
- isolation strength को user की supervision क्षमता के अनुसार तय करें — bash पढ़ सकने वाला developer और न पढ़ सकने वाला knowledge worker एक ही threat model नहीं हैं; experts को अनावश्यक friction देना और non-experts पर ज़्यादा trust करना, दोनों दिशाओं की गलती विफलता लाती है
- custom components से सावधान रहें — proven hypervisors, syscall filters, और container runtimes अधिक adversarial testing झेल चुके हैं; हर deployment में standard primitives टिके रहे, जबकि उनके आसपास बनाए गए custom layers में flaws निकले
- agents भले software की नई category हों, लेकिन system-level interactions (file read, socket open, process spawn) नए नहीं हैं; इसलिए mature tools के माध्यम से containment एक मूलभूत और प्रभावी defense बना रहता है
1 टिप्पणियां
Hacker News की राय
इस्तेमाल की गई framing मज़ेदार है और छोटा graphic भी बिल्कुल फिट बैठता है। नुकसान का जोखिम कम नहीं होता, लेकिन reward बढ़ जाता है, इसलिए नुकसान reward के आधार पर जायज़ ठहराया गया business cost बन जाता है
reward जितना बढ़ता जाता है, उतने बड़े नुकसान को justify करने की कोशिश भी बढ़ती जाती है। लगता है पूरा समाज ही ऐसा है
समस्या यह है कि अब तक किसी ने साबित नहीं किया कि यह सच में उस cost को झेलने जितना valuable है। यह काफ़ी कमज़ोर assumption है
computer security भी ऐसी ही है। सचमुच सुरक्षित computer वही है जिसे चालू ही न किया जाए, और उसमें भी यह जोखिम रहता है कि कोई घुसकर storage device चुरा ले जाए। इस मामले में संभावित नुकसान फ़ायदे से बड़ा है या नहीं, उससे अलग, ऐसी calculation हमेशा चलती रहती है, इसलिए यह कहना कि पूरा समाज ऐसा है, मुझे सही लगता है
tools और throughput जैसी चीज़ें बढ़ने पर अनुपात बदल जाता है
Anthropic जो कह रहा है, उसे मैं बहुत संदेह के साथ देखता हूँ। IPO से पहले product को ख़तरनाक, यानी “capable”, “sci-fi जैसा”, और “सबसे आगे” दिखाने का प्रोत्साहन बहुत बड़ा होता है
पहले भी ऐसा हो चुका है। “अगर model को धमकी दी जाए तो वह engineer के email का इस्तेमाल करके affair को लेकर blackmail करता है” वाली बात याद कीजिए, वह बस fan fiction थी। असल में उन्होंने कुछ facts से scenario बनाया और model से कहानी आगे लिखवाई। अगर आप Claude से पूछें कि British Crown Jewels कैसे चुराए जा सकते हैं, तो वह ideas दे देगा। इसका मतलब यह नहीं कि model इतना dangerous है कि Tower of London की security बढ़ानी पड़े। दूसरे fear marketing भी मुझे ज़्यादातर ऐसे ही लगते हैं
“In another cluster of test scenarios, we asked Claude Opus 4 to act as an assistant at a fictional company”
https://www.anthropic.com/claude-4-system-card
कंपनी की स्थापना का मुख्य कारण भी वही था। हालाँकि नए लोगों और पैसे के आने से वह idealism कमज़ोर पड़ रहा हो सकता है
मैं इस thread में देर से आया, लेकिन लगता है लेख Claude की पहुँच को container तक सीमित करने वाले “pattern 1” में पैदा हो सकने वाले जोखिम, गलतियाँ और दुर्घटनाओं वाले हिस्से को छोड़ देता है। इसे सही तरह से करना अब भी मुश्किल है
उदाहरण के लिए, Anthropic ने कई बार ऐसे bugs deploy किए जिनसे temporary container में isolate किया गया कोई भी claude.ai/code session उपयोगकर्ता के दूसरे sessions, जुड़े हुए repositories, और environment variables तक पहुँच सकता था और उन्हें exfiltrate कर सकता था। अगर Claude malicious बन जाए या hijack हो जाए, तो वह मूल session restrictions से अलग मनमाने निर्देशों और access permissions वाले नए Claude sessions भी बना सकता था। मैंने इसके बारे में पहली बार फ़रवरी में permission लेकर लिखा था[1], और ज़्यादातर चीज़ें जल्दी ठीक कर दी गई थीं। लेकिन बुनियादी token scope समस्या Mythos के बाद भी कई बार फिर सामने आई, इसलिए यह मानना मुश्किल है कि Anthropic ने इसे हल कर लिया है
[1]: https://www.noahlebovic.com/hacking-claude-code-on-the-web-b...
सामान्य तौर पर यह करना वास्तव में बहुत कठिन है। अफ़सोस की बात है कि blog post कुछ उदाहरणों का ज़िक्र तो करती है, लेकिन यह कितना कठिन है, उस पर गहराई से नहीं जाती
उदाहरण के लिए, अगर आप agent को network-access वाले VM में चलाते हैं, तो उसके अंदर मिलने वाली कोई चीज़ prompt injection के ज़रिए agent को धोखा देकर VM के बाहर आने वाले output में secondary prompt injection encode करवा सकती है, और वह local पर मौजूद ज़्यादा privileged agent को संक्रमित कर सकती है। पिछली नौकरी में जब हम computer-use analysis करते थे, तो हम यह देखते थे कि क्या user input को non-malicious मानकर भरोसा किया जा सकता है। अगर user ने सीधे टाइप किया हो, तो आम तौर पर ठीक है, लेकिन user files? calendar events? क्योंकि product का मकसद ही यह था कि agent उनकी ओर से यह सब manage करे, इसलिए अब यह भरोसा नहीं रह जाता कि आगे कोई injection नहीं होगा। जब आप ऐसी taint tracking करते हैं, तो जल्दी समझ में आ जाता है कि ऐसी चीज़ों को रोकना बहुत मुश्किल है, और सिर्फ sandbox या VM लगा देने से आम तौर पर ज़्यादा मदद नहीं मिलती
Linux में मैं जो isolation setup इस्तेमाल करता हूँ, उससे अभी भी संतुष्ट हूँ[1][2]। लेख में दिखे खतरों में से इस पर लागू होने वाली चीज़ बस “approved domains के ज़रिए exfiltration” जैसी है। लेकिन design के हिसाब से VM के अंदर source code के अलावा लीक होने लायक कुछ है ही नहीं, और आजकल source code की कीमत भी पहले जितनी नहीं रही
इस setup का बड़ा फायदा यह है कि agent वे सभी development tasks कर सकता है जो मैं खुद कर सकता हूँ, जैसे package install करना या Docker image build/run करना। यह उस loop से कहीं तेज़ है जिसमें मैं पहले हाथ से करके देखूँ और फिर agent को वापस बताऊँ
[1] https://blog.emilburzo.com/2026/01/running-claude-code-dange...
[2] https://news.ycombinator.com/item?id=46690907
अगर आप repository code को VM के बाहर चलाते हैं और committed changes सबकी review नहीं करते, तो जोखिम बना रहता है
Cowork VM को देखें तो contamination documented नहीं है और न ही publicly control होता है। मेरे पास workaround हैं, लेकिन इस process में काफी बर्बादी और frustration होती है
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1का मतलब है कि Claude समय के साथ, और settings के अनुसार, mount की गई सभी repositories मेंCLAUDE.mdढूँढकर load करता है। इसलिए default state में एक साथ कई असंबंधित repositories पर काम करने का अनुभव अच्छा नहीं हैकुछ दिलचस्प VM environment variables:
CLAUDE_CODE_IS_COWORK=1CLAUDE_CODE_BRIEF=1 CLAUDE_CODE_BRIEF_UPLOAD=1 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 CLAUDE_CODE_DISABLE_CRON=1CLAUDE_CODE_ENTRYPOINT=local-agent CLAUDE_CODE_EXECPATH=/usr/local/bin/claude CLAUDE_CODE_HOST_HTTP_PROXY_PORT=36543 CLAUDE_CODE_HOST_PLATFORM=darwin CLAUDE_CODE_HOST_SOCKS_PROXY_PORT=46673USE_STAGING_OAUTH= _=/usr/bin/env all_proxy=socks5h://localhost:1080 ftp_proxy=socks5h://localhost:1080 grpc_proxy=socks5h://localhost:1080 http_proxy=http://localhost:3128 https_proxy=http://localhost:3128 no_proxy=localhost,127.0.0.1,::1,.local,.local,169.254.0.0/16,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16“जितना ज़्यादा agent सक्षम होगा, उसका संभावित blast radius भी उतना बड़ा होगा। Engineering का सवाल यह है कि उसे कैसे सीमित किया जाए” — इस पंक्ति पर, आजकल लोग LLM का anthropomorphization करने पर थोड़ा असहज होते हैं, लेकिन उससे भी बुरा यह मान लेना है कि LLM किसी फिल्मी तर्क की तरह चुपके से इंटरनेट पर निकलकर किसी कीचड़ जैसे जीव की तरह अपनी copies बनाना शुरू कर देगा
इस तरह की चीज़ें कर पाने की उसकी क्षमता लगातार बेहतर हो रही है, और instructions follow करना भी, लेकिन हर instruction follow करने या commonsense से behave करने में वह हमेशा भरोसेमंद नहीं होता। कीचड़ की तरह बाहर निकलकर replicate करने से ज़्यादा, मामला यह है कि आप जितना अधिक access देंगे, उतनी ही संभावना बढ़ेगी कि किसी बिंदु पर model तर्क के आधार पर निष्कर्ष निकाले कि उसे ऐसा काम करना चाहिए जो user नहीं चाहता। या तो उसे explicitly मना नहीं किया गया, या context इतना complex हो गया कि उस instruction का weight कम हो गया और उसने दूसरी instruction follow कर ली। मैंने सच में एक ऐसा case देखा है जहाँ model ने निष्कर्ष निकाला कि कुछ करने के लिए service access API key चाहिए। Model के पास वह key नहीं थी, लेकिन user browser में access कर सकता था। इसलिए उसने browser cookies scrape करने के लिए Python script लिख दी। यहाँ agent sandbox नहीं, बल्कि CrowdStrike ने browser cookies scrape करने की कोशिश करती किसी अजनबी Python script को नापसंद किया और उसे रोक दिया
अभी LLM को बहुत ज़्यादा hardware चाहिए, इसलिए model का खुद फैलना मुश्किल है, लेकिन कुछ साल और optimization के बाद शायद वह भी देखने को मिले। यह मुझे उन दिनों की याद दिलाता है जब लोग कहते थे, “images virus नहीं फैला सकतीं।” फिर decoder vulnerabilities मिलीं और सच में ऐसे image viruses बनाए गए
एक दिलचस्प trend यह भी है कि ज़्यादा anthropomorphized brands ज़्यादा dominant दिखते हैं। जैसे Claude और Doubao बनाम ChatGPT और DeepSeek
[1] https://github.com/NascentCore/agentic-suite/tree/main/perso...
मैं qemu VM इस्तेमाल कर रहा हूँ। इस VM में internet access है, और सबसे बड़ा जोखिम शायद यह है कि Claude कहीं data upload कर सकता है
GitHub पर काम करवाने के लिए मैं repository स्तर पर restricted read या read/write permissions वाले tokens बनाता हूँ। फिर भी मैं इसे push से ज़्यादा commit तक सीमित रखना पसंद करता हूँ, और VM से SSH के जरिए commits लाकर log जाँचने के बाद खुद push करता हूँ। मैंने container में Claude चलाने के बारे में भी सोचा, लेकिन वह थोड़ा कमज़ोर लगा। Linux vulnerabilities बहुत हैं। यह डर बेबुनियाद भी हो सकता है, लेकिन जो चीज़ भरोसेमंद नहीं है उसे qemu VM में चलाना मुझे ज़्यादा सुरक्षित लगता है
हाल ही में मैंने
bubblewrapके साथ process चलाने के लिए जल्दी में एक छोटा helper function बनाया, जो सिर्फ उस directory को read/write access देता है जहाँ उसे चलाया गया है, और बाकी सबको read-only बना देता है। GUI औरlibportalजैसी चीज़ें काम कर सकें, इसके लिए कुछ खास Linux system directories को अपवाद रखा।जिन कामों में मैं agent से इधर-उधर पड़े screenshots या log files जैसी मनमानी चीज़ों की ओर वास्तव में point करवाना चाहता हूँ, लेकिन साथ ही हर बार manually approve करते हुए निगरानी भी नहीं करना चाहता, उनमें यह containers की तुलना में काफी कम झंझट वाला है। यह काफी अजीब है कि AI tool platforms पहले से ही इस तरह के अनुभव में निवेश नहीं कर रही हैं। इसे बनाने की वजह Zed था। यह AI workflows को ध्यान में रखकर बना editor है, लेकिन agent की किसी खास path permission को सिर्फ user-wide settings file में ही डाला जा सकता है। Project-level settings file मौजूद है, लेकिन किसी समझ में न आने वाले कारण से agent permission settings को स्पष्ट रूप से support नहीं किया गया है
मैं decision theorist नहीं हूँ, लेकिन मेरा मानना है कि हमें उस बिंदु तक इंतज़ार नहीं करना चाहिए जहाँ reward और expected harm सांख्यिकीय रूप से बराबर हो जाएँ, बल्कि तब तक इंतज़ार करना चाहिए जब तक expected-value के हिसाब से reward नुकसान से आगे न निकल जाए