
सुरक्षित रूप से 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)।
अपने वर्कफ़्लो के अनुकूल पैटर्न चुनें:
प्रत्येक प्रोजेक्ट को स्वतंत्र वॉल्यूम के साथ अपना स्वयं का कंटेनर मिलता है। एक बार की समीक्षाओं, अविश्वसनीय रिपॉज़िटरी, या जब आपको प्रोजेक्ट्स के बीच अलगाव की आवश्यकता हो, के लिए सर्वोत्तम।
टर्मिनल:
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
इस प्रोजेक्ट द्वारा संबोधित प्राथमिक खतरा आपकी होस्ट मशीन पर Claude Code द्वारा मनमाने कमांड चलाना है। जब bypassPermissions सक्षम होता है, तो Claude बिना पुष्टि के शेल कमांड निष्पादित करता है, पैकेज इंस्टॉल करता है, और फ़ाइलों को संशोधित करता है। होस्ट मशीन पर इसका अर्थ है कि यह आपके शेल कॉन्फ़िग को संशोधित कर सकता है, प्रोजेक्ट डायरेक्टरी के बाहर rm -rf चला सकता है, या स्थानीय रूप से संग्रहीत क्रेडेंशियल का दुरुपयोग कर सकता है। devcontainer यह सब एक डिस्पोजेबल कंटेनर तक सीमित कर देता है जहां विस्फोट त्रिज्या /workspace तक सीमित है।
कंटेनर में सामान्य विकास उपकरण शामिल हैं ताकि आप इसके अंदर सभी विकास कार्य कर सकें - केवल Claude चलाना ही नहीं। इच्छित वर्कफ़्लो है: एक रिपॉज़िटरी क्लोन करें, devcontainer शुरू करें, और पूरी तरह से इसके अंदर काम करें। यदि आपके प्रोजेक्ट को शामिल से अधिक अतिरिक्त रनटाइम या टूल की आवश्यकता है, तो उन्हें बार-बार उपयोग के लिए Dockerfile में जोड़ें या devc exec के साथ तदर्थ (ad-hoc) रूप से इंस्टॉल करें।
क्या अलग किया गया है और क्या नहीं, इसकी विशिष्ट सीमाओं के लिए नीचे सुरक्षा मॉडल देखें। एक बारीक बात जिसका उल्लेख करना उचित है: devcontainer रनटाइम स्वचालित रूप से आपके होस्ट के SSH एजेंट सॉकेट (SSH_AUTH_SOCK) को कंटेनर में फॉरवर्ड करता है। यह कंटेनर के अंदर के कोड को SSH पर आपके रूप में प्रमाणित करने देता है (जैसे, git push), लेकिन वास्तविक निजी कुंजी सामग्री होस्ट पर रहती है और कंटेनर को कभी उजागर नहीं होती।
यह devcontainer फ़ाइलसिस्टम अलगाव प्रदान करता है लेकिन पूर्ण सैंडबॉक्सिंग नहीं।
सैंडबॉक्स्ड: फ़ाइलसिस्टम (होस्ट फ़ाइलें अप्राप्य), प्रोसेस (होस्ट से पृथक), पैकेज इंस्टॉलेशन (कंटेनर में रहते हैं)
सैंडबॉक्स्ड नहीं: नेटवर्क (डिफ़ॉल्ट रूप से पूर्ण आउटबाउंड—नेटवर्क अलगाव देखें), git पहचान (~/.gitconfig केवल-पठनीय माउंटेड), SSH एजेंट (सॉकेट फॉरवर्ड, कुंजियां होस्ट पर रहती हैं), Docker सॉकेट (डिफ़ॉल्ट रूप से माउंटेड नहीं)
कंटेनर स्वचालित रूप से bypassPermissions मोड कॉन्फ़िगर करता है—Claude बिना पुष्टि के कमांड चलाता है। यह होस्ट मशीन पर जोखिम भरा होगा, लेकिन कंटेनर स्वयं सैंडबॉक्स है।
वॉल्यूम कंटेनर के बाहर संग्रहीत होते हैं, इसलिए आपका शेल इतिहास, Claude सेटिंग्स, और gh लॉगिन devc rebuild के बाद भी बने रहते हैं। git पहचान के लिए होस्ट ~/.gitconfig केवल-पठनीय माउंटेड है।
npm install -g @devcontainers/cli
devc rebuilddocker logs $(docker ps -lq)gh वॉल्यूम को स्वामित्व सुधार की आवश्यकता हो सकती है:
sudo chown -R $(id -u):$(id -g) ~/.config/gh
Python, uv के माध्यम से प्रबंधित किया जाता है:
uv run script.py # Run a script
uv add package # Add project dependency
uv run --with requests py.py # Ad-hoc dependency
इमेज को मैन्युअल रूप से बनाएं:
devcontainer build --workspace-folder .
कंटेनर का परीक्षण करें:
devcontainer up --workspace-folder .
devcontainer exec --workspace-folder . zsh
| विकल्प | लाभ |
|---|
--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" दिखना चाहिए।
| घटक | विवरण |
|---|
| आधार | Ubuntu 24.04, Node.js 22, Python 3.13 + uv, zsh |
| उपयोगकर्ता | vscode (बिना पासवर्ड sudo), कार्यशील डायरेक्टरी /workspace |
| उपकरण | rg, fd, tmux, fzf, delta, iptables, ipset |
| वॉल्यूम (रीबिल्ड के बाद भी बने रहते हैं) | कमांड इतिहास (/commandhistory), Claude कॉन्फ़िग (~/.claude), GitHub CLI प्रमाणीकरण (~/.config/gh) |
| होस्ट माउंट | ~/.gitconfig (केवल-पठनीय), .devcontainer/ (केवल-पठनीय) |
| स्वतः कॉन्फ़िगर्ड | anthropics + trailofbits स्किल्स, git-delta |