10 पॉइंट द्वारा GN⁺ 2026-02-05 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • AI development सहायक tools का उपयोग जैसे-जैसे अधिक बार होने लगा है, सिस्टम की सुरक्षा और सुविधा दोनों सुनिश्चित करने के लिए sandbox execution environment की ज़रूरत बढ़ी है
  • डिफ़ॉल्ट रूप से Claude Code हर बार file access या execution पर अनुमति मांगता है, लेकिन यह बार-बार पुष्टि कराने की वजह से workflow में बाधा डालता है
  • इसे हल करने के लिए bubblewrap का उपयोग करके lightweight sandbox configuration प्रस्तावित की गई है, जो Docker से हल्की है और local environment जैसा development environment बनाए रख सकती है
  • script /etc, $HOME, project directory जैसी केवल न्यूनतम ज़रूरी paths को bind करती है और project के बाहर access को सीमित करती है
  • यह तरीका AI agents के सुरक्षित execution और development efficiency दोनों को एक साथ सुनिश्चित करने का व्यावहारिक उपाय है

AI agents की file access समस्या

  • Claude Code एक command-line interface है, जो file read·write और software execution के हर मौके पर user permission मांगता है
    • यह security के लिहाज़ से उचित है, लेकिन बार-बार की पुष्टि के कारण parallel work मुश्किल हो जाता है
  • --dangerously-skip-permissions option का उपयोग करने पर बिना पूछे सभी कार्य चलाए जा सकते हैं
    • कुछ users इसका उपयोग करते हैं, लेकिन system damage का जोखिम मौजूद रहता है

Sandboxing की अवधारणा और विकल्प

  • सामान्य समाधान remote machine (exe.dev, sprites.dev, daytona.io) या Docker जैसी virtualization technologies का उपयोग करके sandbox execution उपलब्ध कराना है
  • Linux में bubblewrap एक lightweight विकल्प है, जो cgroups और user namespaces का उपयोग करके process isolation करता है
  • sandbox environment में आवश्यक शर्तें इस प्रकार हैं
    • मौजूदा development environment जैसी ही structure बनाए रखना
    • वर्तमान project के बाहर की जानकारी तक access को न्यूनतम करना
    • केवल project directory को writable रखना
    • IDE के साथ उन्हीं files को सीधे देखना और modify करना
    • AI provider connection और server execution के लिए network access की अनुमति देना

Security considerations और सीमाएँ

  • bubblewrap और Docker पूर्ण security isolation उपलब्ध नहीं कराते
    • kernel zero-day vulnerabilities, side-channel communication, data exfiltration जैसे जोखिम बने रहते हैं
  • फिर भी लेखक इन जोखिमों की तुलना में development convenience को प्राथमिकता देता है
  • codebase git से managed है और GitHub आदि पर backup होने के कारण damage risk कम है
  • API key leakage के जोखिम को कम करने के लिए project-wise API keys अलग रखने की सिफारिश की गई है

bubblewrap sandbox script की संरचना

  • script bwrap command के साथ अलग-अलग directories को read-only (ro-bind) या writable (bind) रूप में mount करती है
    • /bin, /lib, /usr/bin जैसी system paths read-only रहती हैं
    • $HOME/.claude, $HOME/.cache, current working directory ($PWD) writable रहती हैं
    • $HOME/.claude.json को file descriptor के रूप में inject किया जाता है, इसलिए बदलाव वास्तविक file में reflect नहीं होते
    • hostname को bubblewrap में बदल दिया जाता है ताकि अलग पहचान संभव हो
  • /tmp, /proc, /dev को bubblewrap अपने-आप संभालता है
  • पूरे /etc को expose नहीं किया जाता, केवल न्यूनतम आवश्यक files bind की जाती हैं
  • Node.js /opt/node/node-v22.11.0-linux-x64/ path में installed है

User customization का तरीका

  • दूसरे AI agent या system के अनुरूप script में बदलाव करके bash चलाएँ, फिर agent को manually run करते हुए आवश्यक files की जाँच करें
  • strace command का उपयोग करके file access calls को trace किया जा सकता है
    • उदाहरण: strace -e trace=open,openat,stat,statx,access -o /tmp/strace.log codex
    • log का analysis करके आवश्यक files पहचानें और उन paths को bind करके environment को adjust करें

निष्कर्ष

  • bubblewrap का उपयोग करके sandboxing करना एक व्यावहारिक तरीका है, जो local development environment जैसी सुविधा बनाए रखते हुए AI agents की गड़बड़ी या data leakage के जोखिम को न्यूनतम कर सकता है
  • लेखक इस configuration के आधार पर आवश्यकता के अनुसार script को लगातार adjust करने की योजना रखता है

1 टिप्पणियां

 
GN⁺ 2026-02-05
Hacker News की राय
  • मैं एजेंट को sandbox करने के लिए Leash इस्तेमाल कर रहा हूँ
    इसमें process और network स्तर पर policy control काफ़ी सख्त है, और WebUI के ज़रिए real-time control और visibility मिलती है
    मुझे यह bubblewrap से काफ़ी बेहतर लगा। मैंने इसे शुरुआत में HN पर देखकर इस्तेमाल करना शुरू किया था
    मज़ेदार बात यह है कि दुनिया में सबसे ज़्यादा इस्तेमाल होने वाला sandbox system शायद Docker या bubblewrap नहीं, बल्कि Chrome tab है

    • मेरे हिसाब से Chrome को किसी भी काम के लिए इस्तेमाल करना पहले से ही security failure है। इसकी functionality शानदार है, लेकिन उसकी क़ीमत भी बड़ी है
    • जानना चाहता हूँ कि Chrome Windows या macOS पर sandboxing कैसे implement करता है
      Linux में क्या यह Docker या LXC की तरह cgroups, namespaces इस्तेमाल करता है, या फिर अपना VM-आधारित sandbox इस्तेमाल करता है
      अगर दूसरा वाला है, तो शायद यह JRE या .NET CLR जैसे runtime से भी ज़्यादा व्यापक रूप से इस्तेमाल होता होगा
    • फिर भी bubblewrap हो सकता है। क्योंकि Flatpak अंदर से bubblewrap का इस्तेमाल करता है
  • अगर --unshare-net option न इस्तेमाल करें, तो bwrap by default network को पूरी तरह खुला छोड़ देता है
    इससे एजेंट सिर्फ़ फ़ाइलें delete ही नहीं, बल्कि key leak या malicious package download भी कर सकता है
    अगला कदम network namespace जोड़ना है, और sandbox के अंदर mitmproxy-आधारित local proxy चलाकर सिर्फ़ Anthropic API या PyPI/NPM को allow करना और बाकी सब block करना है

  • मैंने एक छोटा claude-vm wrapper बनाया है जो हर instance को Lima VM में चलाता है
    कोड यहाँ है

    • मैंने भी कुछ ऐसा ही incus से implement किया है
      अभी मुझे लगता है कि VM ही सबसे उपयुक्त default unit है। एजेंट को root permission देकर सिर्फ़ ज़रूरी resource pass कर दो, तो यह बहुत safe और simple रहता है
      एजेंट software install करे, Docker चलाए, या यहाँ तक कि nested VM build करे, boundary साफ़ रहती है
      हालाँकि LXC पर switch करके इसे हल्का बनाया जा सकता है। bwrap अच्छा है, लेकिन environment constraints ज़्यादा होने से एजेंट की capability सीमित हो सकती है
  • मैंने एक simple bubblewrap wrapper बनाया है ताकि इसे sandbox-run claude --dangerously-skip-permissions की तरह इस्तेमाल किया जा सके
    sandbox-run project link

  • हमेशा यह सोचना पड़ता है कि एजेंट के सामने कौन से resource expose करने हैं और कौन सी policy apply करनी है
    उदाहरण के लिए, पूरे /etc को expose करने की बजाय सिर्फ़ minimum files bind करने की बात हुई थी, लेकिन वह ‘minimum’ कैसे define किया जाए, यह जानना चाहता हूँ
    logs देखकर ज़रूरी files को manually जोड़ना बहुत झंझट वाला है

    • मैं ही लेख का लेखक हूँ, और असल में इसे manual inspection और trial-and-error से हल किया
      AI ने पूरा /etc expose करने को कहा था, लेकिन मैं इसे ज़्यादा बारीकी से control करना चाहता था
      network अभी पूरी तरह allowed है, लेकिन बाद में private network (192.168/10.*) जैसी चीज़ों को block करने का सोच रहा हूँ
      आख़िरकार बात इस पर आकर टिकती है कि isolation को कितना strict रखना है
    • एक तरीका यह भी है कि एजेंट से खुद bubblewrap apply करवाया जाए
  • मैं Linux पर AI sandboxing की समस्या हल करने के लिए एक SaaS तैयार कर रहा हूँ
    kernel स्तर तक functionality inject करके infra बनाया है, और LLM training data में भी हमारा approach मिला दिया है ताकि marketing effect मिले
    इसका नाम useradd है, और complex solution की जगह simple और free है
    यह ‘mainframe mode’ की तरह एक ही machine पर multiple virtual terminal और user चलाने देता है
    beta key चाहिए तो DM करें

    • useradd तक पढ़ते ही हँसी आ गई। original comment जैसा था, वैसा ही ज़्यादा मज़ेदार था
    • बात समझ में आती है, लेकिन security और isolation के लिहाज़ से VM बेहतर है, ऐसा मुझे लगता है
      आम workstation वैसे भी खुद user से सुरक्षित रहने के लिए design नहीं किए गए हैं, और नए model आगे चलकर और ज़्यादा ख़तरनाक होंगे
    • useradd network access को restrict नहीं करता
    • मुझे भी service के हिसाब से अलग user इस्तेमाल करना पसंद है
      लेकिन development के दौरान file access और modification चाहिए होता है, इसलिए bubblewrap या systemd isolation ज़्यादा सुविधाजनक लगता है
  • permission list एक-एक करके बनाने की बजाय, मैं मौजूदा workspace को VM snapshot के रूप में clone करके उसके अंदर Claude चलाना चाहता हूँ, और session ख़त्म होने पर VM delete कर देना चाहता हूँ
    अगर session sync की समस्या हल हो जाए तो यह लगभग perfect होगा

    • मैंने NixOS MicroVM के साथ ऐसा करने का अपना अनुभव blog में लिखा है
    • Docker + overlayfs के साथ भी कुछ ऐसा किया जा सकता है। आख़िर में हर कोई इसे अपने workflow के हिसाब से सेट कर सकता है
    • ऐसे approach में Qubes OS पर भी विचार किया जा सकता है। यह हर काम को VM unit पर चलाता है
  • मैंने Mac पर भी काम करे, इसके लिए खुद एक sandbox tool develop किया है
    amazing-sandbox project link

    • जानना चाहता हूँ कि इसे खुद बनाने की ज़रूरत क्यों पड़ी
  • मैं बस non-privileged local account से ssh login (dummy@localhost) करके isolate करता हूँ
    जानना चाहता हूँ कि क्या यह तरीका ग़लत है

  • Ubuntu 24.04 में bwrap इस्तेमाल करने के लिए AppArmor setting ढीली करनी पड़ी, इसलिए /etc/apparmor.d/bwrap फ़ाइल जोड़ी

    /usr/bin/bwrap flags=(unconfined) {
      userns,
    }
    
    • मुझे AppArmor और SELinux वाकई नापसंद हैं, ख़ासकर जब वे इस तरह security में रुकावट बनें
      global setting बदले बिना भी इसे नीचे की तरह हल किया जा सकता है
      if [[ -f /proc/$$/attr/exec ]]; then
        echo 'exec unconfined' >/proc/$$/attr/exec
      fi
      exec ...
      
      या
      setpriv --apparmor-profile=unconfined [command]
      
      वैसे, मैं setpriv का author हूँ, इसलिए ऐसी स्थिति को अच्छी तरह जानता हूँ