
AI एजेंटों के लिए निष्पादन-परत सुरक्षा (ELS) — नीति-प्रवर्तित शेल ऑडिट के साथ।
macOS नोट: macOS पर ESF (एंडपॉइंट सुरक्षा ढांचा) + NE (नेटवर्क विस्तार) के माध्यम से देशी प्रवर्तन Alpha में है। यह एंड-टू-एंड काम करता है — फ़ाइल, प्रक्रिया और नेटवर्क ईवेंट सिस्टम एक्सटेंशन के माध्यम से Go नीति इंजन तक प्रवाहित होते हैं — लेकिन रिलीज़ के बीच खुरदरे किनारे और ब्रेकिंग परिवर्तन की अपेक्षा करें। आज उत्पादन उपयोग के लिए, हम Linux की अनुशंसा करते हैं।
Windows नोट: हम मिनीफ़िल्टर ड्राइवरों पर हस्ताक्षर प्राप्त करने के लिए काम कर रहे हैं। तब तक, उत्पादन उपयोग के लिए केवल Windows WSL2 मोड पूरी तरह से समर्थित है।
AI एजेंटों के लिए सुरक्षित, नीति-प्रवर्तित निष्पादन गेटवे.
agentsh आपके एजेंट/टूलिंग के नीचे बैठता है—फ़ाइल, नेटवर्क, प्रक्रिया और सिग्नल गतिविधि (उपप्रक्रिया वृक्षों सहित) को इंटरसेप्ट करता है, आपके द्वारा परिभाषित नीति को लागू करता है, और संरचित ऑडिट ईवेंट उत्सर्जित करता है।
प्लेटफ़ॉर्म नोट: Linux पूर्ण प्रवर्तन प्रदान करता है (100% सुरक्षा स्कोर)। macOS ESF+NE (90% स्कोर) Alpha में है — कार्यात्मक लेकिन उत्पादन के लिए तैयार नहीं। Windows WSL2 पूर्ण Linux-समतुल्य प्रवर्तन प्रदान करता है (100% स्कोर); मिनीफ़िल्टर ड्राइवर + AppContainer (85% स्कोर) के माध्यम से देशी Windows ड्राइवर हस्ताक्षर की प्रतीक्षा कर रहा है। विवरण के लिए प्लेटफ़ॉर्म तुलना मैट्रिक्स देखें।
allow, deny, approve (मानव OK), soft_delete, या redirect।db_services के माध्यम से Postgres-परिवार डेटाबेस ट्रैफ़िकएजेंट वर्कफ़्लो अंततः मनमाना कोड (pip install, make test, python script.py) चलाते हैं। पारंपरिक "कमांड चलाने से पहले अनुमोदन मांगें" नियंत्रण टूल सीमा पर रुक जाते हैं और यह नहीं देख सकते कि उस कमांड के अंदर क्या होता है।
agentsh नीति रनटाइम पर लागू करता है, ताकि उपप्रक्रियाओं द्वारा किया गया छिपा हुआ कार्य अभी भी नियंत्रित, लॉग और (जब आवश्यक हो) अनुमोदित हो।
अधिकांश सिस्टम किसी कार्य को अस्वीकार कर सकते हैं। agentsh इसे रीडायरेक्ट भी कर सकता है।
इसका मतलब है कि जब कोई एजेंट गलत दृष्टिकोण (या बल-प्रयोग समाधान) का प्रयास करता है, तो नीति उसे सही पथ पर ले जा सकती है—कमांड को बदलकर और मार्गदर्शन लौटाकर—एजेंट को पक्की सड़क पर रखती है और अनावश्यक पुन: प्रयासों को कम करती है।
उदाहरण: ऑडिटेड रैपर पर curl को रीडायरेक्ट करें```yaml command_rules:
**उदाहरण: बाहरी वर्कस्पेस में लिखने को वापस अंदर रीडायरेक्ट करें**```yaml
file_rules:
- name: redirect-outside-writes
paths: ["/home/**", "/tmp/**"]
operations: [write, create]
decision: redirect
redirect_to: "/workspace/.scratch"
message: "Writes outside workspace redirected to /workspace/.scratch"
एजेंट एक सफल कार्रवाई देखता है (त्रुटि नहीं), लेकिन आप नियंत्रित करते हैं कि चीजें वास्तव में कहाँ जाती हैं।
कंटेनर होस्ट सतह को अलग करते हैं; agentsh इन-कंटेनर रनटाइम दृश्यता और नीति जोड़ता है।
macOS (Homebrew)```bash brew tap canyonroad/tap brew install --cask agentsh
यह AgentSH ऐप बंडल को ESF+NE सिस्टम एक्सटेंशन के साथ स्थापित करता है। स्थापना के बाद आपको **System Settings > General > Login Items & Extensions** में सिस्टम एक्सटेंशन को स्वीकृत करने का संकेत दिया जाएगा।
**Linux (GitHub रिलीज़ से)**
अपने प्लेटफ़ॉर्म के लिए [रिलीज़ पृष्ठ](https://github.com/erans/agentsh/releases) से `.deb`, `.rpm`, या `.apk` डाउनलोड करें।```bash
# Example for Debian/Ubuntu
sudo dpkg -i agentsh_<VERSION>_linux_amd64.deb
स्रोत से (Linux)```bash make build sudo install -m 0755 bin/agentsh bin/agentsh-shell-shim /usr/local/bin
**स्रोत से (macOS)**```bash
# ESF+NE mode (full enforcement — Alpha, requires Xcode 15+)
make build-macos-enterprise
विस्तृत macOS बिल्ड निर्देशों के लिए macOS Build Guide देखें।
./bin/agentsh server --config configs/server-config.yaml
SID=$(./bin/agentsh session create --workspace . --json | jq -r .id) ./bin/agentsh exec "$SID" -- ls -la
./bin/agentsh exec --output json --events summary "$SID" -- curl https://example.com
### जाँचें कि क्या लागू होता है
`agentsh detect` होस्ट की जांच करता है और रिपोर्ट करता है कि कौन से प्रवर्तन आदिम वास्तव में उपलब्ध हैं — seccomp, Landlock, FUSE, eBPF, ptrace, cgroups — प्रति-डोमेन सुरक्षा स्कोर और चयनित सुरक्षा मोड के साथ समूहित। प्रतिबंधित होस्ट (Daytona, E2B, Firecracker-श्रेणी) पर जहां seccomp user-notify listener स्थापित नहीं हो सकता, यह उस मोड की रिपोर्ट करता है जो वास्तव में लागू होगा, न कि केवल कर्नेल समर्थन करता है।```bash
agentsh detect # human-readable protection report
agentsh detect config # emit a config tuned for this host
मोड मैट्रिक्स और ट्यूनिंग नॉब्स के लिए सुरक्षा मोड देखें।
agentsh exec $SID -- <your-command-here>agentsh exec --output json --events summary $SID -- <your-command-here>SID=$(agentsh session create --workspace . --json | jq -r .id)---
### ऑटोस्टार्ट (कोई मैन्युअल डेमन चरण नहीं)
आपको स्वयं `agentsh server` प्रारंभ करने की **आवश्यकता नहीं** है।
* पहला `agentsh exec` (या कोई shimmed `/bin/sh`/`/bin/bash`) स्वचालित रूप से `configs/server-config.yaml` (या यदि सेट हो तो `AGENTSH_CONFIG`) का उपयोग करके एक स्थानीय सर्वर प्रारंभ करेगा।
* वह सर्वर सत्र के जीवनकाल के लिए FUSE परत और नीति इंजन को सक्रिय रखता है; बाद के कमांड इसका पुन: उपयोग करते हैं।
* यदि आप सर्वर जीवनचक्र को मैन्युअल रूप से प्रबंधित करना चाहते हैं तो `AGENTSH_NO_AUTO=1` सेट करें।
---
## डॉकर में उपयोग (शेल शिम के साथ)
न्यूनतम डेबियन-आधारित इमेज के लिए `Dockerfile.example` देखें।
इमेज के अंदर, एक रिलीज़ पैकेज स्थापित करें (या अपना बिल्ड कॉपी करें), फिर शिम को सक्रिय करें:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--i-understand-this-modifies-the-host
शिम को अपने सर्वर (साइडकार या होस्ट) पर पॉइंट करें:```dockerfile ENV AGENTSH_SERVER=http://127.0.0.1:18080
अब कंटेनर में कोई भी `/bin/sh -c ...` या `/bin/bash -lc ...` एजेंटश के माध्यम से रूट होता है।
### गैर-इंटरैक्टिव प्रवर्तन
डिफ़ॉल्ट रूप से, शिम नीति को दरकिनार करता है जब stdin एक TTY नहीं है (पाइप किए गए कमांड के लिए बाइनरी डेटा संरक्षित करते हुए)। ऐसे प्लेटफार्मों पर जहां कमांड हमेशा गैर-इंटरैक्टिव होते हैं लेकिन फिर भी प्रवर्तन की आवश्यकता होती है (जैसे, exe.dev, sandbox APIs), `--force` जोड़ें:```bash
agentsh shim install-shell \
--root / \
--shim /usr/bin/agentsh-shell-shim \
--bash \
--force \
--i-understand-this-modifies-the-host
यह /etc/agentsh/shim.conf को force=true के साथ लिखता है, जिसे shim स्टार्टअप पर पढ़ता है। कॉन्फ़िग फ़ाइल शेल कैसे स्पॉन किया गया है, इसकी परवाह किए बिना काम करती है (env vars या प्रोफ़ाइल स्क्रिप्ट के विपरीत)। प्रक्रिया वातावरण में AGENTSH_SHIM_FORCE=1 समान प्रभाव प्रति-प्रक्रिया प्राप्त करता है।
अनुशंसित पैटर्न: एक ही pod/service में एक sidecar (या PID 1) के रूप में agentsh चलाएं और एक workspace वॉल्यूम साझा करें; shim यह सुनिश्चित करता है कि प्रत्येक शेल हॉप नीति के अंतर्गत रहे।
allowdenyapprove (मानव स्वीकृति)redirect (कमांड स्वैप करें)audit (अनुमति दें + लॉग करें)soft_delete (डिलीट को क्वारंटाइन करें और पुनर्स्थापित करें)नियम एक नामांकित नीति में रहते हैं; सत्र एक नीति चुनते हैं।
डिफ़ॉल्ट:
configs/server-config.yamlconfigs/policies/default.yamlAGENTSH_POLICY_NAME को एक अनुमत नीति नाम पर सेट करें (कोई प्रत्यय नहीं)। यदि अनसेट/अमान्य/निषिद्ध है, तो डिफ़ॉल्ट का उपयोग किया जाता है।policies.env_policy (allow/deny, max_bytes, max_keys, block_iteration) कॉन्फ़िगर करें और नीति फ़ाइलों में प्रति-कमांड env_* ओवरराइड। खाली अनुमति सूची न्यूनतम PATH/LANG/TERM/HOME को बिल्ट-इन सीक्रेट डिनी सूची के साथ डिफ़ॉल्ट करती है; block_iteration को सेट करें ताकि env पुनरावृत्ति छिप जाए (env shim आवश्यक है)।config.yml में policies.allowed कॉन्फ़िगर करें; खाली का अर्थ है केवल डिफ़ॉल्ट की अनुमति है।policies.manifest_path सेट करें।env_allow के बिना, agentsh एक न्यूनतम env (PATH/LANG/TERM/HOME) बनाता है और बिल्ट-इन सीक्रेट कीज़ को हटाता है।env_allow/env_deny के साथ-साथ env_max_keys/env_max_bytes कैप और फ़िल्टर exec समय पर चाइल्ड env को लागू करते हैं।env_block_iteration: true (वैश्विक या प्रति नियम) env गणना को छुपाता है; policies.env_shim_path को libenvshim.so पर सेट करें ताकि agentsh LD_PRELOAD + AGENTSH_ENV_BLOCK_ITERATION=1 इंजेक्ट करे।BASH_ENV शेल बिल्ट-इन को अक्षम करने के लिए जो seccomp को बायपास करते हैं। (वैश्विक) या नीति-स्तरीय (वैश्विक को ओवरराइड करता है) में कॉन्फ़िगर करें।version: 1 name: default
file_rules:
name: allow-workspace paths: ["/workspace", "/workspace/**"] operations: [read, open, stat, list, write, create, mkdir, chmod, rename] decision: allow
name: approve-workspace-delete paths: ["/workspace", "/workspace/**"] operations: [delete, rmdir] decision: approve message: "Delete {{.Path}}?" timeout: 5m
name: deny-ssh-keys paths: ["/home//.ssh/", "/root/.ssh/**"] operations: ["*"] decision: deny
network_rules:
command_rules:
### नीति का उपयोग करना```bash
# Start the server with your policy
./bin/agentsh server --config configs/server-config.yaml
# Create a session pinned to a policy
SID=$(./bin/agentsh session create --workspace /workspace --policy default --json | jq -r .id)
# Exec commands; responses include decision + guidance when blocked/approved
./bin/agentsh exec "$SID" -- rm -rf /workspace/tmp
agentsh कई प्रमाणीकरण विधियों का समर्थन करता है:
| प्रकार | उपयोग परिदृश्य |
|---|---|
api_key | स्थिर कुंजियों वाली सरल तैनाती |
oidc | एंटरप्राइज़ SSO (Okta, Azure AD, आदि) |
hybrid | दोनों विधियाँ स्वीकार्य |
मानव-इन-द-लूप सत्यापन के लिए अनुमोदन मोड:
local_tty - टर्मिनल संकेत (डिफ़ॉल्ट)totp - प्रमाणक ऐप कोडwebauthn - हार्डवेयर सुरक्षा कुंजियाँ (YubiKey)api - REST के माध्यम से दूरस्थ अनुमोदनकॉन्फ़िगरेशन विवरण के लिए SECURITY.md देखें।
पूर्ण कॉन्फ़िगरेशन विकल्पों के लिए SECURITY.md देखें, या कार्रवाई में इन डिटेक्शन को देखने के लिए MCP Protection Demo चलाएं।
इसे "समझने" का सबसे तेज़ तरीका कुछ ऐसा चलाना है जो उपप्रक्रियाएँ बनाता है और फ़ाइलसिस्टम/नेटवर्क को छूता है।```bash
SID=$(agentsh session create --workspace . --json | jq -r .id)
agentsh exec "$SID" -- uname -a
agentsh exec --output json --events summary "$SID" -- curl -s https://example.com
agentsh exec "$SID" -- rm -rf ./tmp
agentsh exec --output json --events all "$SID" -- ls
**JSON आउटपुट में आप क्या देखेंगे:**
- `exit_code`: कमांड की निकास स्थिति
- `stdout` / `stderr`: कैप्चर किया गया आउटपुट
- `events[]`: नीति निर्णयों के साथ प्रत्येक फ़ाइल/नेटवर्क/प्रक्रिया संचालन
- `policy.decision`: `allow`, `deny`, `approve`, या `redirect`
सुझाव: नीतियों का परीक्षण करते समय `--output json` के साथ एक टर्मिनल खुला रखें—इससे पता चलता है कि क्या छुआ जा रहा है।
---
### सत्र रिपोर्ट
सत्र गतिविधि का सारांश प्रस्तुत करने वाली मार्कडाउन रिपोर्ट तैयार करें:```bash
# Quick summary
agentsh report latest --level=summary
# Detailed investigation
agentsh report <session-id> --level=detailed --output=report.md
Reports include:
See CI/CD Integration Guide for pipeline examples.
Create snapshots of workspace state for recovery from destructive operations:```bash
agentsh checkpoint create --session $SID --workspace /workspace --reason "before cleanup"
agentsh checkpoint list --session $SID
agentsh checkpoint show --session $SID --workspace /workspace --diff
agentsh checkpoint rollback --session $SID --workspace /workspace --dry-run
agentsh checkpoint rollback --session $SID --workspace /workspace
agentsh checkpoint purge --session $SID --older-than 24h --keep 5
**Auto-checkpoint:** जब सक्षम होता है, agentsh स्वचालित रूप से जोखिम भरे कमांड (`rm`, `mv`, `git reset`, `git checkout`, आदि) से पहले checkpoints बनाता है। `sessions.checkpoints.auto_checkpoint` में कॉन्फ़िगर करें।
पूर्ण कॉन्फ़िगरेशन विकल्पों के लिए [SECURITY.md](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#checkpoint-and-rollback) देखें।
---
### LLM Proxy and DLP
agentsh में एक एम्बेडेड प्रॉक्सी शामिल है जो एजेंटों से सभी LLM API अनुरोधों को इंटरसेप्ट करता है:```bash
# Check proxy status for a session
agentsh proxy status <session-id>
# View LLM-specific events
agentsh session logs <session-id> --type=llm
विशेषताएँ:
ANTHROPIC_BASE_URL और OPENAI_BASE_URL को सेट करता है ताकि एजेंट SDKs प्रॉक्सी के माध्यम से रूट करेंप्रदाता कॉन्फ़िगरेशन:```yaml proxy: mode: embedded providers: anthropic: https://api.anthropic.com # Default Anthropic API openai: https://api.openai.com # Default OpenAI API
# Or use alternative providers:
# openai: http://localhost:8000 # LiteLLM / vLLM
# openai: https://your-resource.openai.azure.com # Azure OpenAI
# anthropic: https://llm.corp.example.com # Corporate gateway
**DLP कॉन्फ़िगरेशन:**```yaml
dlp:
mode: redact
patterns:
email: true
api_keys: true
custom_patterns:
- name: customer_id
display: identifier
regex: "CUST-[0-9]{8}"
LLM प्रॉक्सी दस्तावेज़ीकरण में पूर्ण कॉन्फ़िगरेशन विकल्प देखें।
वही प्रॉक्सी घोषित http_services प्रविष्टियों को भी भेजता है — प्रति-विधि, प्रति-पथ नियमों के साथ नामित API अपस्ट्रीम। विवरण के लिए घोषित HTTP सेवाएँ और HTTP सेवाएँ कुकबुक देखें।
agentsh db_services, database_connection_rules, और database_rules के माध्यम से घोषित डेटाबेस सेवाओं पर नीति लागू कर सकता है। वर्तमान कार्यान्वयन केवल Postgres-परिवार के लिए है: PostgreSQL समर्थित लक्ष्य है, Aurora Postgres उसी पथ का उपयोग करता है, और Redshift/CockroachDB को Postgres-संगत बोलियों के रूप में माना जाता है जिसमें बीटा कवरेज है। MySQL, MongoDB, Snowflake, BigQuery, Databricks, ClickHouse, MSSQL, Cassandra, Redis, और Oracle रोडमैप आइटम हैं, वर्तमान रनटाइम समर्थन नहीं।
वर्तमान Postgres समर्थन में शामिल हैं:
redirect।Postgres प्रॉक्सी रनटाइम आज केवल Linux-इन-प्रोसेस कोड है। डेटाबेस प्रवर्तन के लिए नेटिव Linux, WSL2, या Linux VM वातावरण का उपयोग करें।
डेटाबेस एक्सेस नियंत्रण और नीति दस्तावेज़ीकरण देखें।
देखे गए सत्र व्यवहार से प्रतिबंधात्मक नीतियाँ उत्पन्न करें ("प्रोफाइल-देन-लॉक" वर्कफ़्लो):```bash
agentsh policy generate latest --output=ci-policy.yaml
agentsh policy generate abc123 --name=production-build --threshold=10
agentsh policy generate latest
उत्पन्न नीति:
- केवल सत्र के दौरान देखे गए संचालनों की अनुमति देती है
- जब एक ही निर्देशिका में कई फाइलें हों तो पथों को ग्लोब में समूहित करती है
- सबडोमेन को वाइल्डकार्ड में संक्षिप्त करती है (जैसे, `*.github.com`)
- जोखिम भरे कमांड (curl, wget, rm) को आर्ग पैटर्न के साथ चिह्नित करती है
- समीक्षा के लिए अवरुद्ध संचालनों को टिप्पणी-आउट नियमों के रूप में शामिल करती है
**उपयोग के मामले:**
- **CI/CD लॉकडाउन**: किसी बिल्ड/टेस्ट रन को प्रोफाइल करें, भविष्य के रनों को उस व्यवहार पर लॉक करें
- **एजेंट सैंडबॉक्सिंग**: AI एजेंट को एक कार्य चलाने दें, भविष्य के रनों के लिए नीति उत्पन्न करें
- **कंटेनर प्रोफाइलिंग**: किसी वर्कलोड को प्रोफाइल करें, उत्पादन के लिए न्यूनतम नीति उत्पन्न करें
---
## डेटाबेस एक्सेस (PostgreSQL)
agentsh में एक एम्बेडेड **PostgreSQL प्रॉक्सी** शामिल है जो डेटाबेस एक्सेस को एजेंट-जागरूक और नीति-नियंत्रित बनाता है। यह Postgres वायर प्रोटोकॉल बोलता है, प्रत्येक स्टेटमेंट को *प्रभावों* (रीड्स, राइट्स, DDL, DCL, ट्रांजैक्शन/सेशन कंट्रोल, बल्क `COPY`/एक्सपोर्ट, …) की सूची में वर्गीकृत करता है, और अपस्ट्रीम को अग्रेषित करने से पहले प्रत्येक प्रभाव का `database_rules` के विरुद्ध मूल्यांकन करता है — इसलिए एक `UPDATE`, `DROP`, या अस्कोप्ड `DELETE` उसी तरह नियंत्रित होता है जैसे फ़ाइल राइट या नेटवर्क कनेक्ट।
- **प्रति-प्रभाव, बहु-वस्तु मूल्यांकन** — नियम सभी-एकत्रित / **कोई-भी-अस्वीकार-जीतता है** (सबसे प्रतिबंधात्मक क्रिया निर्णय लेती है) हैं, पहला-मिलान नहीं।
- **निर्णय:** `allow`, `deny`, `approve` (मानव OK), `audit`, और स्टेटमेंट-स्तरीय `redirect`।
- **`require_where` गार्ड** — शीर्ष-स्तरीय `UPDATE`/`DELETE` जिनमें `WHERE` क्लॉज नहीं है, उन्हें अस्वीकार करें।
- **कनेक्शन-स्तरीय नियम** (`database_connection_rules`) यह नियंत्रित करते हैं कि कौन से सत्र किस घोषित `db_service` तक पहुँच सकते हैं।
- **प्रमाणीकरण + स्टेटमेंट ऑडिट इवेंट** प्रत्येक कनेक्शन और क्वेरी के लिए; स्टेटमेंट-टेक्स्ट लॉगिंग कॉन्फ़िगरेबल है (`policies.db.log_statements: none | parameters_redacted | full`)।
चरण 1 PostgreSQL v3 वायर प्रोटोकॉल (डायलेक्ट: `postgres`, `aurora_postgres`; `redshift` / `cockroachdb` बीटा में) को कवर करता है। रेप्लिकेशन और GSSAPI-एन्क्रिप्टेड कनेक्शन डिफ़ॉल्ट-अस्वीकार होते हैं।```yaml
database_rules:
# normal reads + updates on the declared service
- name: app-read-and-update
db_service: appdb
operations: [READ, UPDATE]
decision: allow
# allow UPDATE/DELETE only when scoped by a WHERE clause
- name: app-guard-unscoped-dml
db_service: appdb
operations: [UPDATE, DELETE]
require_where: true
decision: allow
# block schema/DDL mutations; terminate the transaction on violation
- name: app-deny-ddl
db_service: appdb
operations: [CREATE, DROP, ALTER, EXPORT]
decision: deny
deny_mode_in_tx: terminate
message: "appdb is read+update only. Requested: {{.Operation}}"
See the Database Access Control spec for the full operation taxonomy, effects model, connection rules, and unavoidability threat model.
agentsh transparently DNS and TCP connections ko redirect kar sakta hai, jisse API calls ko corporate proxies ke through route karna ya bina code badle AI providers ko switch karna jaise use cases sambhav hote hain.
DNS resolution ko intercept karke configured IP addresses return karta hai:```yaml dns_redirect:
match: "api.anthropic.com" redirect_ip: "10.0.0.50" visibility: audit_only on_failure: fail_closed
match: ".*\.openai\.com" # Regex pattern redirect_ip: "10.0.0.51" visibility: warn
### Connect Redirect
TCP कनेक्शनों को वैकल्पिक TLS हैंडलिंग के साथ विभिन्न गंतव्यों पर रीडायरेक्ट करें:```yaml
connect_redirect:
- match: "api.anthropic.com:443"
redirect_to: "vertex-proxy.internal:8443"
tls_mode: passthrough # Forward encrypted traffic unchanged
visibility: silent
- match: "api.openai.com:443"
redirect_to: "azure-proxy.internal:443"
tls_mode: rewrite_sni # Modify SNI in TLS ClientHello
rewrite_sni: "azure-openai.example.com"
visibility: audit_only
agentsh प्रक्रियाओं के बीच भेजे गए सिग्नल (kill, SIGTERM, आदि) को इंटरसेप्ट करता है, जो कि कौन से सिग्नल किन लक्ष्यों तक पहुँच सकते हैं, इस पर नीति-आधारित नियंत्रण प्रदान करता है।
signal_rules:
name: allow-self signals: ["@all"] target: type: self decision: allow
name: allow-children signals: ["@all"] target: type: children decision: allow
### Signal Groups
- `@all` - सभी सिग्नल (1-31)
- `@fatal` - SIGKILL, SIGTERM, SIGQUIT, SIGABRT
- `@job` - SIGSTOP, SIGCONT, SIGTSTP, SIGTTIN, SIGTTOU
- `@reload` - SIGHUP, SIGUSR1, SIGUSR2
### Target Types
- `self` - स्वयं को संकेत देने वाली प्रक्रिया
- `children` - सीधी बाल प्रक्रियाएँ
- `descendants` - सभी वंशज प्रक्रियाएँ
- `session` - agentsh सत्र में कोई भी प्रक्रिया
- `external` - सत्र के बाहर के PID
- `system` - PID 1 और कर्नेल थ्रेड
पूर्ण कॉन्फ़िगरेशन विकल्पों के लिए [नीति दस्तावेज़ीकरण](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#signal-rules) देखें।
---
## macOS फ़ाइल I/O निगरानी
macOS पर, agentsh एंडपॉइंट सुरक्षा ढाँचे (ESF) का उपयोग करके फ़ाइल I/O की निगरानी करता है, जो AUTH और NOTIFY दोनों घटनाओं की सदस्यता लेता है। ट्रैक किए जाने वाले कार्यों में फ़ाइल खोलना, बनाना, हटाना, नाम बदलना, लिखना (close-modified के माध्यम से पता लगाया गया), और macOS 26+ पर, विशेषता परिवर्तन घटनाओं के माध्यम से chmod और chown शामिल हैं। प्रत्येक फ़ाइल घटना को PID-आधारित समाधान के माध्यम से उत्पन्न सत्र और कमांड के लिए जिम्मेदार ठहराया जाता है, जो उपप्रक्रिया पेड़ों पर पूर्ण ऑडिट ट्रेल प्रदान करता है।
ESF कर्नेल-स्तरीय अनुमति/अस्वीकृति प्रवर्तन प्रदान करता है लेकिन Linux FUSE जैसे पारदर्शी फ़ाइल अवरोधन का समर्थन नहीं करता है। नीति क्रियाएँ जिनमें अवरोधन की आवश्यकता होती है -- जैसे `redirect` (पथ पुनर्लेखन) और `soft_delete` (संगरोध) -- को अस्वीकार + मार्गदर्शन के रूप में लागू किया जाता है: ऑपरेशन ESF स्तर पर अवरुद्ध हो जाता है और एजेंट को सही पथ के साथ पुनः प्रयास करने या यह स्वीकार करने के निर्देश मिलते हैं कि फ़ाइल सुरक्षित है। घटना स्ट्रीम विवरण के लिए [macOS ESF+NE आर्किटेक्चर दस्तावेज़](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) और प्रति-कार्य व्यवहार के लिए [नीति दस्तावेज़ीकरण](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md#file-rule-actions-on-macos-esf) देखें।
---
## आरंभिक नीति पैक
आपके पास पहले से एक डिफ़ॉल्ट नीति है (`configs/policies/default.yaml`)। ये निजीकृत पैक अलग-अलग फ़ाइलों के रूप में उपलब्ध हैं ताकि टीमें एक चुन सकें:
* **[`policies/dev-safe.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/dev-safe.yaml)**: स्थानीय विकास के लिए सुरक्षित
* कार्यक्षेत्र पढ़ने/लिखने की अनुमति दें
* कार्यक्षेत्र में हटाने को स्वीकृत करें
* `~/.ssh/**`, `/root/.ssh/**` को अस्वीकार करें
* नेटवर्क को अनुमत डोमेन/पोर्ट तक सीमित करें
* **[`policies/ci-strict.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/ci-strict.yaml)**: CI रनर के लिए सुरक्षित
* कार्यक्षेत्र के बाहर किसी भी चीज़ को अस्वीकार करें
* आर्टिफैक्ट रजिस्ट्री को छोड़कर आउटबाउंड नेटवर्क को अस्वीकार करें
* स्पष्ट रूप से अनुमति न होने तक इंटरैक्टिव शेल को अस्वीकार करें
* सब कुछ ऑडिट करें (सारांश घटनाएँ)
* **[`policies/agent-sandbox.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/agent-sandbox.yaml)**: "एजेंट अज्ञात कोड चलाता है" मोड
* डिफ़ॉल्ट अस्वीकार + स्पष्ट अनुमति सूची
* किसी भी क्रेडेंशियल/पथ तक पहुँच को स्वीकृत करें
* नेटवर्क टूल उपयोग को आंतरिक प्रॉक्सी/मिरर पर पुनर्निर्देशित करें
* आसान पुनर्प्राप्ति के लिए विनाशकारी कार्यों को सॉफ्ट-डिलीट करें
---
## AI सहायक एकीकरण उदाहरण
AI कोडिंग सहायकों को agentsh का उपयोग करने के लिए कॉन्फ़िगर करने के लिए उपयोग-तैयार स्निपेट:
* **[Claude Code](https://github.com/canyonroad/agentsh/blob/HEAD/examples/claude/)** - Claude Code एकीकरण के लिए CLAUDE.md स्निपेट
* **[Cursor](https://github.com/canyonroad/agentsh/blob/HEAD/examples/cursor/)** - agentsh एकीकरण के लिए Cursor नियम
* **[AGENTS.md](https://github.com/canyonroad/agentsh/blob/HEAD/examples/agents/)** - सामान्य AGENTS.md स्निपेट (कई AI टूल के साथ काम करता है)
> **नोट:** ये उदाहरण स्थानीय विकास परिदृश्यों के लिए हैं जहाँ कंटेनर के अंदर AI एजेंट चलाना व्यावहारिक नहीं है। उत्पादन या CI/CD वातावरण के लिए, शेल शिम स्थापित कंटेनरों में एजेंट चलाना पसंद करें— [Docker में उपयोग](#use-in-docker-with-the-shell-shim) देखें।
---
## संदर्भ
* **MCP Protection Demo:** [`agentsh-mcp-protection-demo`](https://github.com/canyonroad/agentsh-mcp-protection-demo) - क्रॉस-सर्वर एक्सफिल्ट्रेशन डिटेक्शन, rug pull ब्लॉकिंग और नीति पीढ़ी का लाइव डेमो
* **Security & threat model:** [`SECURITY.md`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md) - agentsh किसके विरुद्ध सुरक्षा करता है, ज्ञात सीमाएँ, ऑपरेटर चेकलिस्ट
* **External KMS:** [`SECURITY.md#external-kms-integration`](https://github.com/canyonroad/agentsh/blob/HEAD/SECURITY.md#external-kms-integration) - ऑडिट अखंडता कुंजियों के लिए AWS KMS, Azure Key Vault, HashiCorp Vault, GCP Cloud KMS
* Config template: [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml)
* Default policy: [`configs/policies/default.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/policies/default.yaml)
* Example Dockerfile (with shim): [`Dockerfile.example`](https://github.com/canyonroad/agentsh/blob/HEAD/Dockerfile.example)
* **Policy documentation:** [`docs/operations/policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/operations/policies.md) - नीति चर, सिग्नल नियम, नेटवर्क पुनर्निर्देशन
* **Database access control:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - केवल Postgres डेटाबेस प्रवर्तन दायरा, नीति शब्दार्थ, पुनर्निर्देशन व्यवहार, और रोडमैप
* **Command policies cookbook:** [`docs/cookbook/command-policies.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/command-policies.md) - नए बाइनरी की अनुमति कैसे दें, `exec` के बजाय `wrap` का उपयोग कब करें, और अस्वीकृति को कैसे डीबग करें
* **HTTP services cookbook:** [`docs/cookbook/http-services.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/http-services.md) - नियमों और अनुमोदन गेटिंग के साथ घोषित सेवाओं के माध्यम से आउटबाउंड HTTP API कॉल को रूट करने की विधियाँ
* **Sandbox SDK integrations cookbook:** [`docs/cookbook/sandbox-sdk-integrations.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/cookbook/sandbox-sdk-integrations.md) - Tensorlake / E2B / Modal / Daytona के लिए `shim_install` कॉन्फ़िग, जहाँ कमांड agentsh सर्वर के सहोदर के रूप में चलते हैं
* **Policy authoring skills:** [`skills/`](https://github.com/canyonroad/agentsh/blob/HEAD/skills/) - Claude Code, NanoClaw आदि में नीतियाँ बनाने और संपादित करने के लिए AI-सहायक कौशल
* **Platform comparison:** [`docs/platform-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/platform-comparison.md) - फीचर समर्थन, सुरक्षा स्कोर, प्लेटफ़ॉर्म के अनुसार प्रदर्शन
* **Bubblewrap vs agentsh:** [`docs/bubblewrap-vs-agentsh-comparison.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/bubblewrap-vs-agentsh-comparison.md) - Linux कंटेनर सैंडबॉक्सिंग के लिए Bubblewrap से तुलना
* **Database access control:** [`docs/agentsh-db-access-spec.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/agentsh-db-access-spec.md) - PostgreSQL प्रॉक्सी वर्गीकरण, प्रभाव मॉडल, `database_rules`, कनेक्शन नियम, खतरा मॉडल
* **Security modes & `detect`:** [`docs/security-modes.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/security-modes.md) - प्रवर्तन मोड, सुरक्षा स्कोर, और `agentsh detect` क्या रिपोर्ट करता है
* **seccomp:** [`docs/seccomp.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/seccomp.md) - सिस्कॉल फ़िल्टरिंग, execve अवरोधन, और सॉकेट-फ़ैमिली ब्लॉकिंग
* **ptrace mode:** [`docs/ptrace-support.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ptrace-support.md) - प्रतिबंधित कंटेनरों के लिए PTRACE_SEIZE प्रवर्तन (`attach_mode`, seccomp प्रीफिल्टर)
* **eBPF:** [`docs/ebpf.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/ebpf.md) - eBPF नेटवर्क ट्रेसिंग और नीति प्रवर्तन
* **LLM Proxy & DLP:** [`docs/llm-proxy.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/llm-proxy.md) - एम्बेडेड प्रॉक्सी कॉन्फ़िगरेशन, DLP पैटर्न, उपयोग ट्रैकिंग
* **macOS build guide:** [`docs/macos-build.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-build.md) - ESF+NE बिल्ड निर्देश
* **macOS ESF+NE architecture:** [`docs/macos-esf-ne-architecture.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-esf-ne-architecture.md) - सिस्टम एक्सटेंशन, XPC, और तैनाती विवरण
* **macOS XPC sandbox:** [`docs/macos-xpc-sandbox.md`](https://github.com/canyonroad/agentsh/blob/HEAD/docs/macos-xpc-sandbox.md) - सैंडबॉक्सित प्रक्रियाओं के लिए XPC/Mach IPC नियंत्रण
* Environment variables (all `AGENTSH_*` overrides, auto-start toggles, transport selection): [`docs/spec.md` §15.3 "पर्यावरण चर"](https://github.com/canyonroad/agentsh/blob/HEAD/docs/spec.md#153-environment-variables)
* Architecture & data flow (FUSE + policy engine + API): inline comments in [`configs/server-config.yaml`](https://github.com/canyonroad/agentsh/blob/HEAD/configs/server-config.yaml) and [`internal/netmonitor`](https://github.com/canyonroad/agentsh/blob/HEAD/internal/netmonitor)
* CLI help: `agentsh --help`, `agentsh exec --help`, `agentsh shim --help`
---
एजेंटों की सहायता से एजेंटों के लिए बनाया गया।
sandbox.env_injectenv_injectconfig.yml और configs/ के अंतर्गत नीति नमूने देखें।| क्षेत्र | मान | विवरण |
|---|
visibility | silent, audit_only, warn | रीडायरेक्ट कैसे लॉग/दिखाए जाते हैं |
on_failure | fail_closed, fail_open, retry_original | अगर रीडायरेक्ट विफल होता है तो क्या होता है |
tls_mode | passthrough, rewrite_sni | कनेक्ट रीडायरेक्ट के लिए TLS हैंडलिंग |
| सुविधा | Linux | macOS | Windows |
|---|
| DNS रीडायरेक्ट | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| कनेक्ट रीडायरेक्ट | ✅ eBPF | ✅ pf/proxy | ✅ WinDivert |
| SNI Rewrite | ✅ | ✅ | ✅ |
| प्लेटफ़ॉर्म | अवरोधन | रीडायरेक्ट | ऑडिट |
|---|
| Linux | हाँ (seccomp user-notify) | हाँ | हाँ |
| macOS | नहीं | नहीं | हाँ (ES) |
| Windows | आंशिक | नहीं | हाँ (ETW) |