Claude Code बार-बार permission माँगता है? --dangerously-skip-permissions के बिना इसे ठीक करें

चालीसवीं बार npm test को मंज़ूरी देना बस शोर है। Claude Code में उबाऊ prompts को चुप कराने और ख़तरनाक prompts को बनाए रखने के लिए सब कुछ मौजूद है। बस यह तीन फ़ाइलों और छह modes में बिखरा हुआ है।

लेखक: Aslan, Pet Island टीम · अपडेट: 26 अक्टू॰ 2026 · पढ़ने में 5 मिनट

संक्षेप में

जिन commands को आप हमेशा मंज़ूरी देते हैं उन्हें permissions.allow में रखें (जैसे Bash(npm run *)), जिन पर हमेशा रुकना ज़रूरी है उन्हें ask या deny में, और काम के हिसाब से permission mode चुनें: ज़्यादा editing के लिए acceptEdits, रोज़मर्रा के काम के लिए auto, पढ़ने के लिए plan। Rules deny → ask → allow क्रम में जाँचे जाते हैं, इसलिए deny को कभी override नहीं किया जा सकता। हर rule कहाँ से आया है, यह देखने के लिए /permissions चलाएँ। --dangerously-skip-permissions को सिर्फ़ ऐसे containers के लिए रखें जिन्हें बाद में फेंक दिया जाएगा।

Claude Code इतनी बार क्यों पूछता है

Default mode में (CLI में इसका label Manual है), Claude Code हर tool को पहली बार इस्तेमाल करते समय पूछता है, और हर उस shell command के लिए फिर से पूछता है जिसे चलाने की अनुमति उसे नहीं मिली है। Prompt वही पल है जब आप ग़लत rm या अनजाने में हुए git push को रोक सकते हैं, इसलिए इसे बनाए रखना फ़ायदेमंद है। दिक्कत यह है कि यह उन सैकड़ों बेनुक़सान कामों के लिए भी आता है जो एक एजेंट एक session में करता है।

आपको prompt दिखेगा या नहीं, यह तीन चीज़ें तय करती हैं: आपकी settings फ़ाइलों के rules, आप जिस permission mode में हैं, और “Yes, and don’t ask again” के साथ पहले दिए गए आपके जवाब। शोर ठीक करने का मतलब है तीनों को ट्यून करना।

Claude Code v2.1.283 और उसके बाद के versions interactive terminal और VS Code sessions को auto mode में शुरू करते हैं, हर plan और provider पर। Auto mode में एक background classifier रोज़मर्रा के कामों के लिए पूछने के बजाय commands और network requests को आपकी माँगी गई चीज़ से मिलाकर जाँचता है। अगर आपको अब भी हर चीज़ के लिए prompt दिख रहा है, तो status bar देखें: “⏸ manual mode on” का मतलब है कि आप default mode में हैं।

Allow, ask और deny rules

Rules किसी settings फ़ाइल में permissions के नीचे रहते हैं। यह उदाहरण सीधे Anthropic के settings reference से लिया गया है:

~/.claude/settings.jsonकॉपी करें
{
"permissions": {
"allow": ["Bash(npm run *)"],
"ask": ["Bash(git push *)"],
"deny": ["Read(./.env)"],
"defaultMode": "acceptEdits"
}
}
  • allow: बिना पूछे चलता है।
  • ask: हमेशा पूछता है, उन modes में भी जो वरना इसे मंज़ूर कर देते।
  • deny: कभी नहीं चलता।

सबसे ज़रूरी बात क्रम है: पहले deny, फिर ask, फिर allow। पहला match जीतता है, और rule कितना specific है इससे क्रम नहीं बदलता। कोई allow rule किसी deny rule में अपवाद नहीं बना सकता, और अगर किसी tool को किसी भी level पर deny किया गया है, तो कोई दूसरा level उसे allow नहीं कर सकता। Rules को Claude Code ख़ुद लागू करता है, model नहीं, इसलिए CLAUDE.md में “कभी push मत करना” लिखना deny rule जैसा काम नहीं करता।

Rule कैसे लिखें

Ruleकिससे match करता है
Bash(npm run *)npm run build, npm run test --watch, लेकिन npm install नहीं
Bash(git log *)सिर्फ़ git log …। इसकी तुलना Bash(git *) से करें, जो हर git command को allow करता है।
Bash(ls:*)Bash(ls *) जैसा ही: :* आख़िर में wildcard लिखने का दूसरा तरीक़ा है
Read(./.env)उस फ़ाइल को पढ़ना। Read और Edit rules gitignore patterns इस्तेमाल करते हैं
Edit(//Users/alice/notes/**)एक absolute path। शुरुआत में अकेला / settings फ़ाइल के relative होता है, इसलिए absolute paths के लिए // चाहिए
WebFetch(domain:example.com)सिर्फ़ example.com। Subdomains के लिए WebFetch(domain:*.example.com) जोड़ें
mcp__github__*github MCP server का हर tool। mcp__ के बाद parentheses वाले rules छोड़ दिए जाते हैं

Windows पर PowerShell rules का रूप Bash rules जैसा ही होता है।

कौन-सी settings फ़ाइल इस्तेमाल करें

Scopeफ़ाइलकिसके लिए
User~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json)आपकी अपनी आदतें, हर project में
Project, shared.claude/settings.jsonऐसे rules जो पूरी टीम को मिलने चाहिए (इसे commit करें)
Project, local.claude/settings.local.jsonएक repo के लिए आपके निजी rules (commit नहीं होते)
Managedmanaged-settings.json और दूसरे managed sourcesकंपनी की policy; इसे कुछ भी override नहीं कर सकता

प्राथमिकता, सबसे ऊँची से शुरू करके: managed, command line, project local, shared project, user। permissions.allow जैसी list keys फ़ाइलों के बीच जोड़ी जाती हैं, बदली नहीं जातीं। दो बातें लोगों को उलझा देती हैं:

  • Settings फ़ाइलें strict JSON होती हैं: // comment या आख़िर में रह गया comma syntax error देता है, और पूरी फ़ाइल ignore हो जाती है।
  • Shared project फ़ाइल के allow rules तभी लागू होते हैं जब हर teammate उस folder को trust कर ले। Deny और ask rules तुरंत लागू होते हैं।

ज़्यादातर बदलाव चल रहे session पर बिना restart के लागू हो जाते हैं, permissions और hooks समेत। असल में क्या load हुआ यह देखने के लिए /status (Setting sources वाली line) या /permissions चलाएँ, जो हर rule और उसकी फ़ाइल दिखाता है।

“Yes, and don’t ask again” असल में क्या सेव करता है

किसी prompt का जवाब “don’t ask again” से देने पर git repository के root में .claude/settings.local.json में आपके लिए एक rule लिख दिया जाता है। यह कितने समय तक रहता है, यह tool पर निर्भर है:

Toolकितने समय याद रहता है
Bash commandsहमेशा के लिए, हर repository और command के हिसाब से
फ़ाइल editsSession ख़त्म होने तक
WebFetchहमेशा के लिए, हर repository और domain के हिसाब से

तो अगर Claude हर नए session में फ़ाइलें edit करने की अनुमति माँगता रहता है, तो यह जानबूझकर है: फ़ाइल-edit की मंज़ूरी हर session के लिए अलग होती है। इसके बजाय acceptEdits mode या Edit(...) allow rule इस्तेमाल करें। और अगर कोई command “don’t ask again” के बाद भी पूछता रहता है, तो किसी project या managed फ़ाइल में ask rule देखें। आपकी local फ़ाइल का allow rule उससे ऊपर नहीं है।

Permission modes, और कब कौन-सा इस्तेमाल करें

Modeक्या करता हैकिसके लिए अच्छा
default (Manual)हर tool के पहले इस्तेमाल पर पूछता हैअनजान repos, जोखिम वाला काम
acceptEditsफ़ाइल edits बिना पूछे मंज़ूर करता हैलंबे refactors जिन्हें आप git में review करेंगे
planपढ़ता है और plan बनाता है, कुछ नहीं बदलताCodebase को समझना, किसी बदलाव का design बनाना
autoरोज़मर्रा के prompts नहीं; एक classifier पहले commands और network requests जाँचता हैरोज़ का काम
dontAskPrompt नहीं करताScripts और automation
bypassPermissionsPrompts छोड़ देता है, .git और .claude में लिखने समेतसिर्फ़ isolated containers या VMs

Modes बदलने के लिए Shift+Tab दबाएँ। Auto से पहली बार दबाने पर default आता है, फिर default → acceptEdits → plan। शुरुआती mode permissions.defaultMode से सेट करें; ध्यान दें कि auto और bypassPermissions सिर्फ़ user या managed settings से लागू होते हैं, project फ़ाइल से नहीं।

कुछ चीज़ें हमेशा पूछती हैं, bypass समेत हर mode में: explicit ask rules, Claude के आपसे पूछे गए सवाल, और critical paths पर rm, और भी कुछ। Admins permissions.disableBypassPermissionsMode या permissions.disableAutoMode को "disable" पर सेट करके जोखिम वाले modes बंद कर सकते हैं।

--dangerously-skip-permissions के बारे में

--dangerously-skip-permissions बिल्कुल --permission-mode bypassPermissions जैसा है। Anthropic के docs साफ़ कहते हैं: इसे सिर्फ़ isolated environments में इस्तेमाल करें, जैसे बिना internet access वाले containers, VMs या dev containers। यह Linux और macOS पर root के रूप में चलने से मना करता है, और warning मंज़ूर करते ही यह आपकी user settings में skipDangerousModePermissionPrompt सेट कर देता है।

अगर आप असल में यह चाहते हैं कि “उबाऊ चीज़ों के बारे में पूछना बंद करो”, तो auto mode और कुछ allow rules आपको वहाँ पहुँचा देते हैं, ज़रूरी prompts छोड़े बिना।

Sandbox: कम prompts, साथ में safety net

Claude Code shell commands को sandbox में चला सकता है। यह default रूप से बंद है; इसे /sandbox या sandbox.enabled: true से चालू करें। एक sandbox mode sandbox में चलने वाले commands को अपने आप मंज़ूर करता है, दूसरा फिर भी पूछता है। Sandbox सिर्फ़ shell commands को कवर करता है: file tools, MCP servers और hooks उसके बाहर चलते हैं।

यह macOS, Linux और WSL2 पर चलता है। Native Windows पर sandbox नहीं चलता, और commands बिना sandbox के चलते हैं। वहाँ ask list छोटी रखने की यह एक और वजह है।

एक setup जो काम करता है

JavaScript project के लिए यह शुरुआत का एक ठीक-ठाक तरीक़ा है। Commands को अपने stack के हिसाब से बदलें:

~/.claude/settings.jsonकॉपी करें
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(npx tsc *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)"
],
"ask": [
"Bash(git push *)",
"Bash(npm publish *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
  1. Read-only और test commands की allow list से शुरू करें।
  2. जो कुछ भी आपकी मशीन से बाहर जाता है (push, publish, deploy) उसे ask में रखें।
  3. Secrets को सीधे deny करें।
  4. Auto या acceptEdits में काम करें, और कुछ explore करते समय plan mode पर जाएँ।
  5. हर कुछ दिनों में .claude/settings.local.json खोलें और “don’t ask again” ने जो rules जोड़े हैं उनकी छँटाई करें।

जब बचे हुए prompts ग़लत जगह पर हों

ट्यूनिंग के बाद आपसे सिर्फ़ उन्हीं चीज़ों के बारे में पूछा जाना चाहिए जिन पर फ़ैसला लेना ज़रूरी है। बची हुई समस्या यह है कि सवाल कहाँ दिखता है: browser के पीछे किसी terminal tab में, जहाँ एजेंट आपके ध्यान देने से पहले बीस मिनट तक इंतज़ार कर सकता है।

Pet Island इन सवालों को आपकी स्क्रीन के ऊपर एक छोटे island पर ले आता है। जब Claude Code को permission चाहिए होती है, तो request वहाँ command या diff के साथ दिखती है, और आप window बदले बिना allow, deny या always allow कर देते हैं। Claude Code के सवाल और plans भी island से काम करते हैं, और अगर island बंद है, तो Claude Code बस terminal में पूछने पर लौट आता है।

अक्सर पूछे जाने वाले सवाल

Claude Code को हर command के लिए permission माँगने से कैसे रोकूँ?

जिन commands पर आप भरोसा करते हैं उन्हें ~/.claude/settings.json में permissions.allow में जोड़ें, जैसे "Bash(npm run *)", और auto या acceptEdits mode इस्तेमाल करें। जोखिम वाले commands को permissions.ask में रखें ताकि वे फिर भी रुकें।

“don’t ask again” चुनने के बाद भी Claude Code फ़ाइल edits के लिए फिर से क्यों पूछता है?

फ़ाइल-edit की मंज़ूरी सिर्फ़ session ख़त्म होने तक रहती है। अगर आप चाहते हैं कि edits सभी sessions में मंज़ूर रहें, तो acceptEdits mode या Edit(...) allow rule इस्तेमाल करें।

क्या कोई allow rule किसी deny rule को override कर सकता है?

नहीं। Rules पहले deny, फिर ask, फिर allow क्रम में जाँचे जाते हैं, और पहला match जीतता है। किसी भी level पर deny किया गया tool कहीं और allow नहीं किया जा सकता।

क्या --dangerously-skip-permissions सुरक्षित है?

Anthropic इसे सिर्फ़ isolated environments में इस्तेमाल करने की सलाह देता है, जैसे बिना internet access वाले containers या VMs। यह .git और .claude में लिखने के prompts भी छोड़ देता है।

“Yes, and don’t ask again” rule को कहाँ सेव करता है?

Git repository के root में .claude/settings.local.json में।

क्या Claude Code का sandbox Windows पर काम करता है?

Native Windows पर नहीं; वहाँ commands बिना sandbox के चलते हैं। यह macOS, Linux और WSL2 पर चलता है।

स्रोत

इस पेज की हर setting और हर व्यवहार को 26 अक्टूबर 2026 को इन पेजों से मिलाकर जाँचा गया। एजेंट तेज़ी से बदलते हैं; अगर कुछ अब मेल नहीं खाता, तो आधिकारिक पेज ही मान्य है।

आगे पढ़ें

हर एजेंट को अपनी स्क्रीन के ऊपर से जवाब दें।

Windows और Mac · 7 दिन मुफ़्त, फिर एक बार $8.99 · हर बिक्री से $1 सड़क के बेसहारा जानवरों के खाने पर जाता है

Pet Island मुफ़्त आज़माएँ