
शून्य-विश्वास सैंडबॉक्स AI एजेंटों के लिए जिसमें कर्नेल-स्तरीय फाइलसिस्टम जेल, पारदर्शी नेटवर्क प्रॉक्सी, और YAML-आधारित नीति इंजन शामिल है ताकि शेल कमांड, फ़ाइल संचालन, और नेटवर्क अनुरोधों को इंटरसेप्ट और नियंत्रित किया जा सके।
स्वायत्त AI एजेंटों के लिए जीरो-ट्रस्ट सैंडबॉक्स।
AgentGuard किसी भी AI एजेंट (LangChain, CrewAI, AutoGen, कस्टम स्क्रिप्ट) को सुरक्षा रेल्स से लपेटता है। एक कमांड बदलाव:
# पहले (खतरनाक — एजेंट के पास पूर्ण सिस्टम एक्सेस है)
python my_agent.py
# बाद (सैंडबॉक्स में)
agentguard run -- python my_agent.py
AgentGuard एजेंट द्वारा किए गए प्रत्येक शेल कमांड, फ़ाइल संशोधन, और नेटवर्क अनुरोध को रोकता है। सुरक्षित क्रियाएँ स्वचालित रूप से अनुमत होती हैं, खतरनाक क्रियाएँ स्वचालित रूप से अवरुद्ध होती हैं, और बाकी सब कुछ मानवीय अनुमोदन के लिए संकेत देता है।
AgentGuard में चार सुरक्षा परतें हैं जो एक साथ काम करती हैं:
┌─────────────────────────────────────────────────────────────┐
│ Layer 0: फाइलसिस्टम जेल (macOS पर sandbox-exec) │
│ कर्नेल-स्तरीय प्रवर्तन। syscall स्तर पर फ़ाइल लेखन और │
│ नेटवर्क को प्रतिबंधित करता है। एजेंट यूज़रस्पेस से बायपास नहीं कर सकता। │
│ Python के open(), requests.post() आदि को ब्लॉक करता है। │
├─────────────────────────────────────────────────────────────┤
│ Layer 1: नेटवर्क प्रॉक्सी │
│ पारदर्शी HTTP/HTTPS प्रॉक्सी। एजेंट द्वारा किया गया हर │
│ नेटवर्क कॉल नीति के विरुद्ध जाँचा जाता है। प्रति-गंतव्य │
│ TUI में पूर्ण दृश्यता के साथ अनुमति/अस्वीकृति। │
├─────────────────────────────────────────────────────────────┤
│ Layer 2: PATH शिम्स │
│ शेल स्क्रिप्ट शिम्स जो git, pip, curl, rm जैसे कमांड को │
│ रोकते हैं। प्रत्येक शिम वास्तविक बाइनरी चलाने से पहले │
│ डेमॉन से अनुमति माँगता है। │
├─────────────────────────────────────────────────────────────┤
│ Layer 3: नीति इंजन + अनुमोदन डेमॉन │
│ YAML-आधारित नियम हर रोके गए कार्य का मूल्यांकन करते हैं। │
│ सुरक्षित कमांड को स्वचालित रूप से अनुमति दें, खतरनाक │
│ को स्वचालित रूप से ब्लॉक करें, बाकी सब के लिए मानव को │
│ संकेत दें। │
└─────────────────────────────────────────────────────────────┘
कोई भी एकल परत सुरक्षा सीमा नहीं है। वे एक साथ काम करती हैं — गहराई में रक्षा।
go build -o agentguard ./cmd/agentguard/
go build -o agentguard-check ./cmd/agentguard-check/
दोनों बाइनरी एक ही निर्देशिका में होनी चाहिए।
agentguard init
यह वर्तमान निर्देशिका में .agentguard/policy.yaml बनाता है। इसे अपनी आवश्यकताओं के अनुसार संपादित करें।
agentguard run -- python my_agent.py
TUI टर्मिनल ले लेता है और दिखाता है:
Claude Code जैसे इंटरैक्टिव टूल के लिए जिन्हें टर्मिनल की आवश्यकता है:
agentguard run --headless -- claude
एजेंट को सीधे टर्मिनल मिलता है। AgentGuard पृष्ठभूमि में चुपचाप चलता है। सभी घटनाएँ ~/.agentguard/logs/headless.log में लॉग होती हैं। दूसरे टर्मिनल में मॉनिटर करें:
tail -f ~/.agentguard/logs/headless.log
agentguard run [flags] -- <command> [args...]
--policy <path> एक विशिष्ट नीति फ़ाइल का उपयोग करें
--headless कोई TUI नहीं — एजेंट को टर्मिनल मिलता है
--default-allow हेडलेस मोड में PROMPT निर्णयों को स्वचालित रूप से अनुमति दें (डिफ़ॉल्ट: auto-deny)
--no-sandbox sandbox-exec अक्षम करें (शिम्स और प्रॉक्सी अभी भी सक्रिय)
agentguard init डिफ़ॉल्ट नीति फ़ाइल बनाएँ
agentguard version संस्करण प्रिंट करें
नीतियाँ YAML फ़ाइलें हैं जो परिभाषित करती हैं कि एजेंट क्या कर सकता है और क्या नहीं। AgentGuard तीन स्थानों की जाँच करता है (क्रम में):
./.agentguard/policy.yaml (परियोजना-स्थानीय)~/.agentguard/policy.yaml (उपयोगकर्ता वैश्विक)version: 1
deny:
# खतरनाक कमांड को ब्लॉक करें
- command: "rm"
args: "-rf *"
reason: "पुनरावर्ती बलपूर्वक हटाना बहुत खतरनाक है"
- command: "sudo"
args: "*"
reason: "विशेषाधिकार वृद्धि की अनुमति नहीं है"
- command: "chmod"
args: "777 *"
reason: "विश्व-लेखनीय अनुमतियाँ खतरनाक हैं"
# संवेदनशील फ़ाइलों को पढ़ना ब्लॉक करें (sandbox-exec द्वारा प्रवर्तित)
- file:
path: "*.env"
action: "read"
reason: "एजेंट को .env फ़ाइलें पढ़ने न दें"
- file:
path: "*.pem"
action: "read"
reason: "एजेंट को निजी कुंजियाँ पढ़ने न दें"
allow:
# सुरक्षित केवल-पढ़ने वाले कमांड
- command: "ls"
- command: "cat"
- command: "pwd"
- command: "echo"
- command: "grep"
- command: "head"
- command: "tail"
- command: "wc"
# केवल-पढ़ने वाला git
- command: "git"
args: "status"
- command: "git"
args: "log *"
- command: "git"
args: "diff *"
# कार्यक्षेत्र में लिखने की अनुमति दें
- file:
path: "/tmp/workspace/**"
action: "write"
# विशिष्ट API एंडपॉइंट की अनुमति दें
- network:
destination: "api.anthropic.com:443"
- network:
destination: "api.github.com:443"
deny network *) — तीसरे जाँचे जाते हैं। डिफ़ॉल्ट अस्वीकृति के रूप में कार्य करते हैं।कमांड नियम — नाम और तर्क पैटर्न द्वारा शेल कमांड से मेल खाते हैं:
- command: "git"
args: "push *"
reason: "पुश करने के लिए अनुमोदन आवश्यक है"
फ़ाइल नियम — फ़ाइल संचालन से मेल खाते हैं (sandbox-exec द्वारा प्रवर्तित):
- file:
path: "*.env"
action: "read" # "read" या "write"
reason: "गोपनीय जानकारी सुरक्षित रखें"
नेटवर्क नियम — नेटवर्क गंतव्यों से मेल खाते हैं (प्रॉक्सी + sandbox-exec द्वारा प्रवर्तित):
- network:
destination: "api.anthropic.com:443"
कमांड तर्कों, फ़ाइल पथों और नेटवर्क गंतव्यों में वाइल्डकार्ड के रूप में * का उपयोग करें।
| कुंजी | कार्य | कब |
|---|---|---|
Y | लंबित अनुरोध की अनुमति दें | अनुमोदन संकेत दृश्यमान |
N | लंबित अनुरोध को अस्वीकार करें | अनुमोदन संकेत दृश्यमान |
A | अनुमति दें + इस सत्र के लिए याद रखें ("हमेशा अनुमति दें") | अनुमोदन संकेत दृश्यमान |
B | अस्वीकार करें + इस सत्र के लिए याद रखें ("हमेशा ब्लॉक करें") | अनुमोदन संकेत दृश्यमान |
Tab | एजेंट का stdout/stderr पैनल टॉगल करें | हमेशा |
Up/Down | गतिविधि स्ट्रीम स्क्रॉल करें | हमेशा |
Q | बाहर निकलें (एजेंट को मारता है) | हमेशा |
| एजेंट कार्य | शिम्स | प्रॉक्सी | sandbox-exec |
|---|---|---|---|
subprocess.run(["rm", "-rf", "/"]) | हाँ | - | - |
subprocess.run(["git", "push"]) | हाँ | - | - |
requests.post("https://evil.com") | - | हाँ | हाँ |
urllib.request.urlopen("https://api.com") | - | हाँ | हाँ |
open(".env", "r") | - | - | हाँ |
open("/etc/shadow", "w") | - | - | हाँ |
/usr/bin/curl https://evil.com (पूर्ण पथ) | - | हाँ | हाँ |