# न्यूनतम विशेषाधिकार, Allow-Lists और मानव अनुमोदन — MCP और Agent-to-Agent Protocols

Source: https://www.geekswithgeeks.com/hi/mcp-a2a/s-privilege

> Host में नीति लागू करें, मॉडल के बाहर।

## मॉडल प्रस्तावित करता है, कोड निर्णय लेता है

नियम लागू करने के लिए अकेले मॉडल पर कभी निर्भर न रहें। "मॉडल X बुलाना चाहता है" और "X चलता है" के बीच **host में नीति परत** रखें: tools की **allow-list**, **argument जाँचें** (सीमाएँ, patterns, अनुमत hosts और folders), लिखने, हटाने, भुगतान और बाहरी संदेशों के लिए **मानव अनुमोदन** वाले **जोखिम स्तर**, **दर और लागत सीमाएँ**, और हर call का **audit log**। हर server को सिर्फ़ उतने **credentials और scopes** दें जितने चाहिए, **केवल-पढ़ने** वाले tools को प्राथमिकता दें, और जोखिम भरी शक्तियों के लिए अलग servers या accounts उपयोग करें। User को ठीक दिखाएँ कि क्या होगा ("X को body Y के साथ ईमेल भेजें?"), अस्पष्ट सार नहीं।

## नीति परत, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। Reads पास होते हैं। अज्ञात tool अस्वीकृत है। Refund को अनुमोदन चाहिए; अनुमोदित होने पर वह 0 से 5000 की सीमा में अनुमत है, और अनुमोदित 90,000 का refund फिर भी argument जाँच से रुकता है।

```python
ALLOWED = {
    "get_order_status": {"risk": "read",  "approval": False},
    "propose_refund":   {"risk": "write", "approval": True},
}

def authorize(tool, args, approved=False):
    spec = ALLOWED.get(tool)
    if spec is None:
        return False, "tool not on the allow-list"
    if spec["approval"] and not approved:
        return False, "needs human approval"
    if tool == "propose_refund" and not (0 < args.get("amount", 0) <= 5000):
        return False, "amount out of policy range"
    return True, "ok"

for call in [("get_order_status", {"order_id": "481516"}, False),
             ("delete_all", {}, False),
             ("propose_refund", {"amount": 300}, False),
             ("propose_refund", {"amount": 300}, True),
             ("propose_refund", {"amount": 90000}, True)]:
    print(call[0], call[1], "->", authorize(*call))

```

Output:

```
get_order_status {'order_id': '481516'} -> (True, 'ok')
delete_all {} -> (False, 'tool not on the allow-list')
propose_refund {'amount': 300} -> (False, 'needs human approval')
propose_refund {'amount': 300} -> (True, 'ok')
propose_refund {'amount': 90000} -> (False, 'amount out of policy range')
```

**Quiz:** अनुमोदन जैसी नीति कहाँ लागू होनी चाहिए?

- [ ] कहीं नहीं
- [ ] सिर्फ़ system prompt में
- [ ] सिर्फ़ मॉडल से विनम्रता से कहकर
- [x] Host के कोड में, मॉडल के बाहर

*Answer:* Host के कोड में, मॉडल के बाहर. कोड से लागू नियम injected पाठ से टाले नहीं जा सकते।
