
सुरक्षित रूप से Claude Code को बायपास मोड में चलाने के लिए सैंडबॉक्स्ड devcontainer। सुरक्षा ऑडिट और अविश्वसनीय कोड समीक्षा के लिए निर्मित।
bypassPermissions को सुरक्षित रूप से सक्षम करके Claude Code चलाने के लिए एक सैंडबॉक्स्ड विकास वातावरण। सुरक्षा ऑडिट वर्कफ़्लो के लिए Trail of Bits में निर्मित।
अपने होस्ट मशीन पर bypassPermissions के साथ Claude चलाना जोखिम भरा है—यह बिना पुष्टि के कोई भी कमांड निष्पादित कर सकता है। यह devcontainer फ़ाइलसिस्टम अलगाव प्रदान करता है ताकि आप अपने होस्ट सिस्टम को जोखिम में डाले बिना अप्रतिबंधित Claude के उत्पादकता लाभ प्राप्त कर सकें।
इसके लिए डिज़ाइन किया गया:
Docker रनटाइम (इनमें से एक):
brew install colima docker && colima startटर्मिनल वर्कफ़्लो के लिए (एक बार का इंस्टॉलेशन):
npm install -g @devcontainers/cli
git clone https://github.com/trailofbits/claude-code-devcontainer ~/.claude-devcontainer
~/.claude-devcontainer/install.sh self-install
Colima की डिफ़ॉल्ट सेटिंग्स (QEMU + sshfs) रूढ़िवादी हैं। बेहतर प्रदर्शन के लिए:
# Stop and delete current VM (removes containers/images)
colima stop && colima delete
# Start with optimized settings
colima start \
--cpu 4 \
--memory 8 \
--disk 100 \
--vm-type vz \
--vz-rosetta \
--mount-type virtiofs
अपने Mac के आधार पर --cpu और --memory समायोजित करें (उदाहरण: Pro के लिए 6/16, Max के लिए 8/32)।
| विकल्प | लाभ |
|---|---|
--vm-type vz | Apple Virtualization.framework (QEMU से तेज़) |
--mount-type virtiofs | sshfs से 5-10x तेज़ फ़ाइल I/O |
--vz-rosetta | Rosetta के माध्यम से x86 कंटेनर चलाएं |
colima status से सत्यापित करें - इसमें "macOS Virtualization.Framework" और "virtiofs" दिखना चाहिए।
अपने वर्कफ़्लो के अनुकूल पैटर्न चुनें:
प्रत्येक प्रोजेक्ट को स्वतंत्र वॉल्यूम के साथ अपना स्वयं का कंटेनर मिलता है। एक बार की समीक्षाओं, अविश्वसनीय रिपॉज़िटरी, या जब आपको प्रोजेक्ट्स के बीच अलगाव की आवश्यकता हो, के लिए सर्वोत्तम।
टर्मिनल:
git clone <untrusted-repo>
cd untrusted-repo
devc . # Installs template + starts container
devc shell # Opens shell in container
VS Code / Cursor:
Dev Containers एक्सटेंशन इंस्टॉल करें:
ms-vscode-remote.remote-containersanysphere.remote-containersdevcontainer सेट अप करें (कोई एक चुनें):
# Option A: Use devc (recommended)
devc .
# Option B: Clone manually
git clone https://github.com/trailofbits/claude-code-devcontainer .devcontainer/
VS Code में अपना प्रोजेक्ट फ़ोल्डर खोलें, फिर:
Cmd+Shift+P (Mac) या Ctrl+Shift+P (Windows/Linux) दबाएंएक पैरेंट डायरेक्टरी में devcontainer कॉन्फ़िगरेशन होता है, और आप अंदर कई रिपॉज़िटरी क्लोन करते हैं। सभी रिपॉज़िटरी में साझा वॉल्यूम। क्लाइंट कार्यों, संबंधित रिपॉज़िटरी, या चल रहे कार्य के लिए सर्वोत्तम।
# Create workspace for a client engagement
mkdir -p ~/sandbox/client-name
cd ~/sandbox/client-name
devc . # Install template + start container
devc shell # Opens shell in container
# Inside container:
git clone <client-repo-1>
git clone <client-repo-2>
cd client-repo-1
claude # Ready to work
हेडलेस सर्वर के लिए या इंटरैक्टिव लॉगिन विज़ार्ड को छोड़ने के लिए:
claude setup-token # run on host, one-time
export CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...
devc rebuild # rebuilds with token
टोकन कंटेनर में फॉरवर्ड किया जाता है। प्रत्येक कंटेनर निर्माण पर, post_install.py एक बार का ऑथ हैंडशेक चलाता है ताकि claude बिना लॉगिन विज़ार्ड के शुरू हो।
यह Claude Code के इंटरैक्टिव ऑनबोर्डिंग विज़ार्ड के कंटेनरों में हमेशा दिखने की समस्या का समाधान करता है, वैध क्रेडेंशियल होने पर भी (#8938)।
यदि आप टोकन सेट नहीं करते हैं, तो इंटरैक्टिव लॉगिन प्रवाह पहले की तरह काम करता है।
devc . Install template + start container in current directory
devc up Start the devcontainer
devc rebuild Rebuild container (preserves persistent volumes)
devc destroy [-f] Remove container, volumes, and image for current project
devc down Stop the container
devc shell Open zsh shell in container
devc exec CMD Execute command inside the container
devc upgrade Upgrade Claude Code in the container
devc mount SRC DST Add a bind mount (host → container)
devc sync [NAME] Sync Claude Code sessions from devcontainers to host
devc template DIR Copy devcontainer files to directory
devc self-install Install devc to ~/.local/bin
नोट: किसी प्रोजेक्ट के Docker संसाधनों को साफ करने के लिए
devc destroyका उपयोग करें। कंटेनरों को मैन्युअल रूप से हटाने (जैसे,docker rm) से अनाथ वॉल्यूम और इमेज पीछे रह जाती हैं जिन्हेंdevc destroyढूंढ नहीं पाएगा।
/insights के लिए सत्र सिंकClaude Code का /insights कमांड आपके सत्र इतिहास का विश्लेषण करता है, लेकिन यह होस्ट पर केवल ~/.claude/projects/ से पढ़ता है। devcontainer वॉल्यूम के अंदर के सत्र इसके लिए अदृश्य होते हैं।
devc sync सभी devcontainer (चालू और बंद) से सत्र लॉग को होस्ट पर कॉपी करता है ताकि /insights उन्हें शामिल कर सके:
devc sync # Sync all devcontainers
devc sync crypto # Filter by project name (substring match)
Devcontainer Docker लेबल के माध्यम से स्वतः खोजे जाते हैं — कंटेनर नाम या ID जानने की आवश्यकता नहीं है। सिंक वृद्धिशील है, इसलिए इसे बार-बार चलाना सुरक्षित है।
अपने होस्ट से फ़ाइलों को VS Code Explorer पैनल में खींचें — वे स्वचालित रूप से /workspace/ में कॉपी हो जाती हैं। किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है।
devc mountहोस्ट डायरेक्टरी को कंटेनर के अंदर उपलब्ध कराने के लिए:
devc mount ~/drop /drop # Read-write
devc mount ~/secrets /secrets --readonly
यह devcontainer.json में एक बाइंड माउंट जोड़ता है और कंटेनर को पुनः बनाता है। मौजूदा माउंट devc template अपडेट के दौरान संरक्षित रहते हैं।
टिप: अपनी संपूर्ण होम डायरेक्टरी को माउंट किए बिना फ़ाइलें अंदर भेजने के लिए एक साझा "ड्रॉप फ़ोल्डर" उपयोगी है।
सुरक्षा नोट: बड़ी होस्ट डायरेक्टरी (जैसे,
$HOME) को माउंट करने से बचें। जब तक--readonlyनिर्दिष्ट न किया जाए, प्रत्येक माउंटेड पथ कंटेनर के अंदर से लिखने योग्य होता है, जो इस प्रोजेक्ट द्वारा प्रदान किए गए फ़ाइलसिस्टम अलगाव को कमजोर करता है।
डिफ़ॉल्ट रूप से, कंटेनरों के पास पूर्ण आउटबाउंड नेटवर्क पहुंच होती है। कड़ी सुरक्षा के लिए, नेटवर्क पहुंच को प्रतिबंधित करने हेतु iptables का उपयोग करें।
sudo iptables -A OUTPUT -d api.anthropic.com -j ACCEPT
sudo iptables -A OUTPUT -d github.com -j ACCEPT
sudo iptables -A OUTPUT -d raw.githubusercontent.com -j ACCEPT
sudo iptables -A OUTPUT -d registry.npmjs.org -j ACCEPT
sudo iptables -A OUTPUT -d pypi.org -j ACCEPT
sudo iptables -A OUTPUT -d files.pythonhosted.org -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A OUTPUT -j DROP