• Claude Code के --dangerously-skip-permissions फ़्लैग को सुरक्षित रूप से इस्तेमाल करने का तरीका
  • Docker, VM, Firejail जैसे कई isolated execution environments की समीक्षा के बाद Vagrant-आधारित virtual machine (VM) को सबसे उपयुक्त माना गया
  • Vagrant के ज़रिए पूर्ण VM isolation, reproducible configuration, और local folder sharing बनाए रखते हुए Docker-in-Docker की समस्या से बचा गया
  • Claude Code को VM के भीतर sudo permissions के साथ सिस्टम पर स्वतंत्र रूप से काम करने के लिए सेट किया गया, और वास्तव में web app चलाना, DB configuration, test automation जैसी चीज़ें करवाई गईं
  • यह तरीका गलती से होने वाले filesystem damage को रोकने में प्रभावी है, और ज़रूरत पड़ने पर VM को delete/recreate करके सुरक्षित रूप से reset किया जा सकता है

पृष्ठभूमि

  • Claude Code का उपयोग करते समय हर बार permission request की पुष्टि करने की असुविधा दूर करने के लिए --dangerously-skip-permissions फ़्लैग आज़माया गया
    • यह फ़्लैग package install, configuration change, file delete जैसे सभी काम बिना पूर्व स्वीकृति के अपने आप करता है
    • इससे workflow नहीं टूटता और efficiency बढ़ती है, लेकिन filesystem damage का जोखिम मौजूद रहता है
  • इसे रोकने के लिए host OS account से अलग environment में इसे चलाने की ज़रूरत महसूस हुई

जिन तरीकों पर विचार किया गया

  • isolation के लिए पहले Docker पर विचार किया गया, लेकिन Claude को Docker image build करनी होती है और container चलाने होते हैं, इसलिए Docker-in-Docker configuration की ज़रूरत पड़ती है
    • इस स्थिति में --privileged mode चाहिए, जिससे sandboxing का उद्देश्य ही बेअर्थ हो जाता है
    • network nesting, volume mount permission issues जैसी वजहों से जटिलता और अस्थिरता बढ़ जाती है
  • अन्य विकल्पों में निम्नलिखित पर विचार किया गया
    • bare metal execution: Reddit के उदाहरणों में database या home directory delete होने जैसे गंभीर नुकसान के मामले मौजूद हैं
    • sandbox-runtime: ACL-आधारित access control, जिसमें Claude को code के बाहर पहुँच नहीं मिलती, लेकिन पूर्ण स्वतंत्रता नहीं मिलती
    • Firejail: Docker जैसी ही सीमाएँ मौजूद
    • manual VM setup: reproducibility की कमी
    • cloud VM: cost, latency, और code upload की आवश्यकता जैसी समस्याएँ

Vagrant-आधारित दृष्टिकोण

  • Vagrant का उपयोग करके पूर्ण VM isolation और reproducible setup हासिल किया गया
    • shared folders के ज़रिए local की तरह access संभव है
    • Docker-in-Docker की समस्या नहीं, और ज़रूरत पड़ने पर VM को आसानी से delete/recreate किया जा सकता है
  • VirtualBox 7.2.4 का उपयोग करते समय CPU 100% usage bug मिला, और GitHub issue के माध्यम से उसके कारण की पुष्टि की गई
  • अंतिम Vagrantfile configuration में ये विशेषताएँ शामिल हैं
    • bento/ubuntu-24.04 base image का उपयोग
    • 4GB memory, 2 CPU allocation
    • Docker, Node.js, npm, git, unzip install
    • @anthropic-ai/claude-code global install
    • vagrant user को Docker group में जोड़ना

वास्तविक उपयोग का तरीका

  • project directory में vagrant upvagrant sshclaude --dangerously-skip-permissions क्रम में चलाया जाता है
  • पहली boot पर provisioning में कुछ मिनट लगते हैं, और हर project के लिए Claude login केवल एक बार करना पड़ता है
  • काम खत्म होने पर vagrant suspend से VM को अस्थायी रूप से रोका जा सकता है
  • Claude को VM के भीतर sudo permissions दी जाती हैं ताकि वह ये काम कर सके
    • web app API चलाना और curl से जाँच करना
    • browser install करके app की manual inspection और E2E tests बनाना
    • PostgreSQL DB setup और migration tests
    • Docker image build और run
  • इस environment की वजह से Claude command execution, output verification, और iterative process खुद संभाल सकता है

प्रदर्शन और सुरक्षा

  • Linux + VirtualBox environment में resources पर्याप्त उपलब्ध थे, और file sync delay नहीं था
  • जिन चीज़ों की सुरक्षा हो सकती है
    • गलती से होने वाला filesystem damage
    • अनियंत्रित package install और configuration changes
  • जिन चीज़ों की सुरक्षा नहीं हो सकती
    • project folder deletion (two-way sync)
    • VM escape vulnerabilities का दुरुपयोग करने वाले हमले
    • network-level issues
    • data exfiltration (VM को internet access प्राप्त है)
  • यह setup दुर्घटना-रोकथाम के लिए है, advanced attack defense के लिए नहीं
  • Git-आधारित projects में नुकसान होने पर recovery आसान है, और चाहें तो rsync one-way sync से और सख्त isolation मिल सकता है

निष्कर्ष

  • VirtualBox CPU bug के हल होने के बाद frictionless execution environment तैयार हो गया
  • Claude Code को पूर्ण VM sandbox के भीतर स्वतंत्र रूप से चलाया जा सकता है
  • समस्या होने पर VM को delete करके फिर से बनाया जा सकता है, और सिर्फ एक Vagrantfile से reproducibility सुनिश्चित होती है
  • अगर --dangerously-skip-permissions फ़्लैग इस्तेमाल करना है, तो ऐसा isolated environment बनाना दृढ़ता से अनुशंसित है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.