
हल्का, कंटेनर-मुक्त सैंडबॉक्स जो नेटवर्क और फ़ाइलसिस्टम प्रतिबंधों के साथ कमांड चलाने के लिए है।

Fence कमांड को एक सैंडबॉक्स में लपेटता है जो डिफ़ॉल्ट रूप से नेटवर्क एक्सेस को ब्लॉक करता है और कॉन्फ़िगरेबल नियमों के आधार पर फ़ाइलसिस्टम संचालन को प्रतिबंधित करता है। यह नियंत्रित साइड इफेक्ट्स के साथ अर्ध-विश्वसनीय कोड (पैकेज इंस्टॉल, बिल्ड स्क्रिप्ट, CI जॉब्स, अपरिचित रिपॉजिटरी) को चलाने के लिए सबसे उपयोगी है, और यह गहराई में रक्षा के रूप में AI कोडिंग एजेंटों को भी पूरक कर सकता है।
# Block all network access (default)
fence curl https://example.com # → 403 Forbidden
# Allow specific domains
fence -t code npm install # → uses 'code' template with npm/pypi/etc allowed
# Block dangerous commands
fence -c "rm -rf /" # → blocked by command deny rules
Fence आपके CLI एजेंटों के लिए एक अनुमति प्रबंधक भी है। क्लॉड कोड, Codex, Amp, जेमिनी CLI, गिटहब कोपिलॉट, OpenCode, फ़ैक्टरी (Droid) CLI और कई अन्य जैसे लोकप्रिय कोडिंग एजेंटों के साथ काम करता है - देखें agents.md।
[!NOTE] Fence
github.com/Use-Tusk/fenceसेgithub.com/fencesandbox/fenceपर स्थानांतरित हो गया है। यदि आपने इसे पुराने Tusk टैप से Homebrew के माध्यम से इंस्टॉल किया था, तो नए टैप पर स्विच करें:brew uninstall use-tusk/tap/fence brew untap use-tusk/tap brew tap fencesandbox/tap brew install fencesandbox/tap/fenceयदि आपने
go installसे इंस्टॉल किया था, तो नए मॉड्यूल पथ से पुनः इंस्टॉल करें:go install github.com/fencesandbox/fence/cmd/fence@latest
macOS / Linux:
curl -fsSL https://cli.fencesandbox.com/install.sh | sh
Homebrew (macOS):
brew tap fencesandbox/tap
brew install fencesandbox/tap/fence
Nix (macOS, Linux, Windows (WSL)):
nix run nixpkgs#fence -- --help
यह इसे रिपॉजिटरी से सीधे चलाता है, fence इंस्टॉल किए बिना। यदि आप इसे इंस्टॉल करना चाहते हैं, तो NixOS या nix-darwin के दिशानिर्देशों का पालन करें।
Go इंस्टॉल:
go install github.com/fencesandbox/fence/cmd/fence@latest
स्रोत से निर्माण:
git clone https://github.com/fencesandbox/fence
cd fence
go build -o fence ./cmd/fence
Linux के लिए अतिरिक्त आवश्यकताएँ:
bubblewrap (सैंडबॉक्सिंग के लिए)socat (नेटवर्क ब्रिजिंग के लिए)bpftrace (वैकल्पिक, -m के साथ निगरानी करते समय फ़ाइलसिस्टम उल्लंघन दृश्यता के लिए)# Run command with all network blocked (no domains allowed by default)
fence curl https://example.com
# Run with shell expansion
fence -c "echo hello && ls"
# Enable debug logging
fence -d curl https://example.com
# Use a template
fence -t code -- claude # Runs Claude Code using `code` template config
# Monitor mode (shows violations)
fence -m npm install
# Send Fence's own monitor/debug logs to a file
fence -m --fence-log-file /tmp/fence.log -- claude
tail -f /tmp/fence.log
# Inspect the config inheritance chain and active merged config
fence config show
# Show all commands and options
fence --help
[!TIP] क्या आप जिस कमांड को चला रहे हैं उसमें फ़्लैग पास करने की आवश्यकता है? Fence फ़्लैग्स को कमांड फ़्लैग्स से अलग करने के लिए
--का उपयोग करें, उदाहरण के लिए:fence -- claude --dangerously-skip-permissions
जब --settings प्रदान नहीं किया जाता है, तो Fence पहले वर्तमान निर्देशिका और पैरेंट निर्देशिकाओं में fence.jsonc (या fence.json) खोजता है। यदि कोई नहीं मिलता है, तो यह ~/.config/fence/fence.{jsonc,json} पर वापस आ जाता है। दोनों एक्सटेंशन को JSONC के रूप में माना जाता है (टिप्पणियाँ और ट्रेलिंग कॉमा की अनुमति है)। अधिक विवरण के लिए कॉन्फ़िगरेशन संदर्भ देखें।
{
"$schema": "https://raw.githubusercontent.com/fencesandbox/fence/main/docs/schema/fence.schema.json",
"extends": "code",
"network": { "allowedDomains": ["private.company.com"] },
"filesystem": { "allowWrite": ["."] },
"command": { "deny": ["git push", "npm publish"] }
}
प्रत्येक उपयोगकर्ता के सामान्य Fence कॉन्फ़िगरेशन के ऊपर रिपॉजिटरी-स्थानीय ओवरराइड के लिए, उपयोग करें:
{
"extends": "@base",
"filesystem": { "allowWrite": ["."] }
}
एक अलग कॉन्फ़िगरेशन निर्दिष्ट करने के लिए fence --settings ./custom.json का उपयोग करें।
कमांड चलाए बिना सक्रिय कॉन्फ़िगरेशन का निरीक्षण करें:
fence config show
fence config show --settings ./custom.json
fence config show --template code
fence config show कॉन्फ़िगरेशन श्रृंखला को stderr पर और पूरी तरह से हल किए गए कॉन्फ़िगरेशन को सादे JSON के रूप में stdout पर प्रिंट करता है, ताकि आप JSON को jq जैसे टूल में पाइप कर सकें।
समझदार डिफ़ॉल्ट के साथ एक स्टार्टर कॉन्फ़िगरेशन बनाएं:
# Creates config at the default path with:
# { "extends": "code" }
fence config init
# Include scaffold arrays as editable hints
fence config init --scaffold
fence import --claude --save
rm -rf /, git push जैसे खतरनाक कमांड को अस्वीकार करें-m)Fence को Go पैकेज या CLI टूल के रूप में उपयोग किया जा सकता है।
पूर्ण दस्तावेज़ fencesandbox.com/docs पर होस्ट किए गए हैं।
त्वरित लिंक:
Anthropic के sandbox-runtime से प्रेरित।