पाठ 5 / 25

Allow, Ask, Deny

ऐसी permission नीति लिखें जो सुरक्षित reads अपने आप allow करे, जोखिम वाले कर्मों पर पूछे और ख़तरनाक कर्म deny करे।

जोखिम के अनुपात में रुकावट

Read-only कर्म (project files पढ़ना, git status, tests चलाना) allow में रखें ताकि agent उपयोगी रहे। State बदलने वाले पर पलटने योग्य कर्म (files बदलना, dev packages install करना) ask में रखें या सिर्फ़ branch पर allow करें। ख़तरनाक या अपरिवर्तनीय कर्म (project के बाहर हटाना, git push --force, secrets पढ़ना, अज्ञात hosts तक network) deny में रखें। जो सूचीबद्ध नहीं है उसका डिफ़ॉल्ट ask हो, allow कभी नहीं।

Allow, ask, deny

Permission नीति हर कर्म को तीन खानों में बाँटती है, और अज्ञात कर्म सबसे सख़्त खाने में जाते हैं।

तीन खाने: allow, ask, deny।
चित्र 2.1 — Allow, ask और deny।

Project की permission फ़ाइल

यह Claude Code की settings.json का रूप है; अन्य tools की भी ऐसी ही फ़ाइलें होती हैं। नियमों का syntax versions में बदल सकता है, इसलिए अपने tool का दस्तावेज़ देखें।

{
  "permissions": {
    "allow": ["Bash(git status:*)", "Bash(git diff:*)", "Bash(npm test:*)", "Read(./src/**)"],
    "ask":   ["Bash(npm install:*)", "Edit(./package.json)"],
    "deny":  ["Read(./.env*)", "Bash(git push --force:*)", "Bash(rm -rf:*)", "Bash(curl:*)"]
  }
}

Project नीति को repo में रखें

Permission फ़ाइल commit करें ताकि पूरी टीम का एक आधार रहे और बदलावों की कोड की तरह समीक्षा हो। निजी बदलाव local, uncommitted फ़ाइल में रखें।

त्वरित जाँच: नीति में सूचीबद्ध न किए गए कर्म को कैसे लें?

  • अपने आप allow
  • पूछा जाए, यह सुरक्षित डिफ़ॉल्ट है
  • अनदेखा
  • हटाया जाए
Answer

पूछा जाए, यह सुरक्षित डिफ़ॉल्ट है — Ask को डिफ़ॉल्ट रखना (fail closed) का मतलब है कि भूला हुआ मामला चुपचाप जोखिम भरा कुछ नहीं चला सकता।