मुख्य कंटेंट तक स्किप करें

claude CLI: वे फ़्लैग जो नतीजा बदल देते हैं

मध्यम

ज़्यादातर लोग Claude Code कमांड लाइन की तीन चीज़ें सीखते हैं — claude, claude -c और claude -p — और वहीं रुक जाते हैं। अगर आप इसे सिर्फ़ सामने बैठकर चलाते हैं तो वहाँ रुकना ठीक है। लेकिन जैसे ही आप Claude Code को किसी स्क्रिप्ट, CI जॉब, बैकग्राउंड क्यू या किसी साथी के हाथों में देते हैं, फ़्लैग सुविधा नहीं रह जाते — वे तय करते हैं कि रन एक डॉलर में निपटेगा या एक घंटे अटका रहेगा।

यह पेज रेफ़रेंस तालिका की दूसरी प्रति नहीं है। यह है इस सतह को सीखने का क्रम, वे फ़्लैग जो सचमुच नतीजा बदलते हैं, और वे चार जाल जिनसे लोगों का असली समय बर्बाद हुआ है।

What you'll learn
  • आप कौन-से छह तरह के सेशन शुरू कर सकते हैं, और कौन-सा फ़्लैग कौन-सा चुनता है
  • वह पाँच-फ़्लैग अनुबंध जो बिना निगरानी वाले रन को सीमित, जवाबदेह और पार्स करने योग्य बनाता है
  • --append-system-prompt बदलकर --continue दोबारा चलाने पर कुछ होता क्यों नहीं दिखता — रिकॉर्ड किए गए प्रॉम्प्ट का नियम
  • --bare, --safe-mode और --restricted में क्या फ़र्क है, और कब कौन-सा चुनें
  • शेल से बैकग्राउंड सेशन चलाना: agents, attach, logs, respawn, rm, daemon
  • वे फ़्लैग जोड़ियाँ जिन्हें लोग गड्डमड्ड करते हैं: --tools बनाम --allowedTools बनाम --disallowedTools

सवाल से शुरू करें: यह किस तरह का सेशन है?​

बाक़ी हर फ़ैसला इसी से निकलता है। Claude Code छह मूलतः अलग चीज़ें शुरू कर सकता है, और जो फ़्लैग इनमें से एक चुनता है वही अक्सर आपका सबसे पहला टाइप किया हुआ होता है।

आप चाहते हैंफ़्लैगआपको मिलता है
एक बातचीत जिसे आप देखते रहें(कोई नहीं)इसी टर्मिनल में इंटरैक्टिव सेशन
एक जवाब, फिर बाहर-p / --printनॉन-इंटरैक्टिव रन, आउटपुट stdout पर
ऐसा काम जो इस टर्मिनल के बाद भी चले--bg / --backgroundएक बैकग्राउंड सेशन; यह अपनी ID और उसे सँभालने का तरीक़ा छापता है
प्रयोग के लिए एक अलग शाखा-w / --worktree<repo>/.claude/worktrees/<name> के अंतर्गत एक git worktree
Anthropic की मशीनों पर काम--cloudएक क्लाउड सेशन, या किसी मौजूदा सेशन में कतार में डाला गया फ़ॉलो-अप
इस सेशन को फ़ोन से चलाना--rc / --remote-controlएक इंटरैक्टिव सेशन जिसे claude.ai या Claude ऐप से भी नियंत्रित किया जा सकता है

इनमें से दो को मिलाया नहीं जा सकता: --bg और -p परस्पर अनन्य हैं, क्योंकि एक तुरंत लौट आता है और दूसरा जवाब का इंतज़ार करता है। अगर आप बैकग्राउंड में Claude सेशन की जगह शेल कमांड चलाना चाहते हैं, तो --bg को --exec के साथ जोड़ें:

Run the test suite as a background job, not a Claude session

claude --bg --exec 'pytest -x'

और --bg शुरू होने से पहले उस डायरेक्टरी के लिए वर्कस्पेस ट्रस्ट जाँचता है — इसलिए अविश्वसनीय रिपॉज़िटरी में बैकग्राउंड सेशन आधे रास्ते में नहीं, शुरू में ही विफल हो जाता है।

बिना निगरानी वाले रन के लिए पाँच-फ़्लैग अनुबंध​

इस पेज की सबसे क़ीमती चीज़ यही है। बिना निगरानी वाले claude -p रन के बिगड़ने के तीन तरीक़े हैं जो इंटरैक्टिव सेशन में होते ही नहीं: यह उन परमिशन प्रॉम्प्ट पर अटक सकता है जिनका जवाब देने वाला कोई नहीं, आपकी उम्मीद से कहीं ज़्यादा देर लूप में चल सकता है, और जब आपकी स्क्रिप्ट को डेटा चाहिए तब गद्य उगल सकता है। पाँच फ़्लैग तीनों को बंद कर देते हैं।

Guided walkthrough1 of 5
  1. `claude -p "query"` जवाब छापकर बाहर निकल जाता है। नीचे सब कुछ सिर्फ़ print मोड का है, इसलिए यह फ़्लैग बाक़ी सबका दरवाज़ा है।

A CI step that cannot hang, cannot loop forever, and cannot overspend

claude -p "Review the staged diff and list bugs" \
--permission-prompts none \
--allowedTools "Read" "Bash(git diff *)" \
--max-turns 6 \
--max-budget-usd 2.00 \
--output-format json
--max-budget-usd एक अनुमान है, आपका इनवॉइस नहीं
  • Claude Code सीमा को अपने क्लाइंट-साइड लागत अनुमान से जाँचता है, जो आपके असल बिल से अलग हो सकता है।
  • जब आप --continue या --resume से किसी बातचीत में लौटते हैं, तो पिछले रनों से बहाल किए गए कुल योग सीमा में नहीं गिने जाते — इसलिए $2 की सीमा में तीन बार बहाल किए गए रन कुल मिलाकर $2 से ज़्यादा ख़र्च कर सकते हैं।
  • इसे एक रन के लिए सर्किट ब्रेकर मानें। पूरे खाते या प्रोजेक्ट की असली ऊपरी सीमा के लिए Hard Spend Caps देखें।

इंसान के बिना रन को आगे बढ़ने देने के पूरे रुख़ के लिए — क्या अनुमति दें, क्या छिपाएँ, क्या लॉग करें — स्वायत्त रनों को सख़्त बनाना और हेडलेस मोड और Agent SDK देखें। प्रोवाइडर-स्तर की सीमाओं के लिए Hard Spend Caps।

सिस्टम-प्रॉम्प्ट परिवार, और उसमें छिपा जाल​

पाँच फ़्लैग सिस्टम प्रॉम्प्ट को आकार देते हैं। चार उसका टेक्स्ट तय करते हैं; पाँचवाँ तय करता है कि बातचीत वही टेक्स्ट रखती है जिससे वह शुरू हुई थी या नहीं।

फ़्लैगक्या करता है
--system-promptपूरे डिफ़ॉल्ट प्रॉम्प्ट की जगह आपका टेक्स्ट रखता है
--system-prompt-fileउसकी जगह किसी फ़ाइल की सामग्री रखता है
--append-system-promptडिफ़ॉल्ट प्रॉम्प्ट के अंत में आपका टेक्स्ट जोड़ता है
--append-system-prompt-fileडिफ़ॉल्ट प्रॉम्प्ट के अंत में किसी फ़ाइल की सामग्री जोड़ता है
--system-prompt-snapshotoff हर अनुरोध पर प्रॉम्प्ट दोबारा बनाता है; on (डिफ़ॉल्ट) रिकॉर्ड किया हुआ दोबारा इस्तेमाल करता है

जोड़ने और बदलने के बीच चुनाव पहचान का चुनाव है। जोड़ना Claude Code के डिफ़ॉल्ट टूल मार्गदर्शन, सुरक्षा निर्देश और कोडिंग परंपराएँ बनाए रखता है और उन पर आपके नियम चढ़ा देता है — प्रति-रन निर्देश, आउटपुट फ़ॉर्मैट या प्रोजेक्ट संदर्भ के लिए सही। बदलना यह सब हटा देता है, टूल मार्गदर्शन समेत, इसलिए यह तभी सही है जब सतह सचमुच कोडिंग असिस्टेंट न हो: किसी ऐसी पाइपलाइन में गैर-कोडिंग एजेंट जिसे कोई देख नहीं रहा। अगर आप बदलते हैं, तो काम को जो भी चाहिए उसकी ज़िम्मेदारी आपकी है।

आप इन्हें मिला सकते हैं। जोड़ने वाला फ़्लैग बदलने वाले फ़्लैग के साथ देने पर डिफ़ॉल्ट बदल जाता है और फिर आपका टेक्स्ट जुड़ता है। v2.1.283 से आप किसी फ़्लैग को उसके अपने फ़ाइल रूप के साथ भी दे सकते हैं — --append-system-prompt और --append-system-prompt-file — और Claude Code दोनों इस्तेमाल करता है, फ़ाइल की सामग्री पहले, चाहे आपने उन्हें किसी भी क्रम में टाइप किया हो।

जाल: दोबारा शुरू की गई बातचीत उसी प्रॉम्प्ट को इस्तेमाल करती है जिसके साथ वह जन्मी थी
  • Claude Code सिस्टम प्रॉम्प्ट को एक बार, बातचीत के पहले अनुरोध पर बनाता है, और उसे सेशन में रिकॉर्ड कर लेता है।
  • बातचीत के कॉम्पैक्ट होने तक, बाद का हर अनुरोध उसी रिकॉर्ड किए प्रॉम्प्ट का उपयोग करता है — --resume या --continue के बाद भी।
  • तो आप अपना --append-system-prompt टेक्स्ट बदलते हैं, claude --continue दोबारा चलाते हैं, और कुछ नहीं बदलता। फ़्लैग टूटा नहीं है; बातचीत अब भी रिकॉर्डिंग इस्तेमाल कर रही है।
  • नया टेक्स्ट तब असर करता है जब बातचीत कॉम्पैक्ट होती है, या बिल्कुल नई बातचीत में।
  • --continue रनों के बीच शब्दों पर काम करने के लिए --system-prompt-snapshot off दें और प्रॉम्प्ट हर अनुरोध पर दोबारा बनेगा। v2.1.257 या बाद का वर्ज़न चाहिए।

स्थिर निर्देशों और प्रति-रन संदर्भ को मिलाने वाले बदलने वाले प्रॉम्प्ट में एक और तरकीब जानने लायक़ है। दोनों के बीच ऐसी लाइन रखें जिसमें सिर्फ़ __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ हो: Claude Code पहली ऐसी लाइन पर बाँटता है और उसे हटा देता है, इसलिए ऊपर का हिस्सा कैश में रहता है जबकि नीचे का हिस्सा बदलता रहता है। v2.1.275 या बाद का वर्ज़न चाहिए। यह आपके बिल के लिए क्यों मायने रखता है, यह Prompt Caching का विषय है।

और बहु-उपयोगकर्ता स्क्रिप्टेड वर्कलोड के लिए, --exclude-dynamic-system-prompt-sections प्रति-उपयोगकर्ता संदर्भ — जैसे ऑटो-मेमोरी की जगह — को सिस्टम प्रॉम्प्ट से हटाकर पहले यूज़र मैसेज में ले जाता है, ताकि अलग-अलग मशीनों पर वही काम एक ही कैश्ड प्रीफ़िक्स साझा करे। यह सिर्फ़ डिफ़ॉल्ट प्रॉम्प्ट पर लागू होता है और --system-prompt या --system-prompt-file सेट करने पर नज़रअंदाज़ हो जाता है।

चीज़ें बंद करने वाले तीन फ़्लैग, और वे एक जैसे नहीं हैं​

लोग इन्हें एक-दूसरे की जगह इस्तेमाल करते हैं और फिर सोचते हैं कि लक्षण क्यों नहीं हिला। ये तीन अलग समस्याएँ हल करते हैं।

--bare--safe-mode--restricted
यह कौन-सी समस्या हल करता हैस्क्रिप्टेड कॉल के लिए स्टार्टअप बहुत धीमा हैमेरी कॉन्फ़िगरेशन टूटी है और मुझे नहीं पता कौन-सा हिस्साइवैल हार्नेस को इस साझा मशीन को नहीं छूना चाहिए
CLAUDE.md, स्किल, कमांड, सबएजेंट, प्लगइन, MCP, ऑटो मेमोरीखोजे नहीं जातेलोड नहीं होतेसिर्फ़ मैनेज्ड सेटिंग और --settings लोड होते हैं
बिल्ट-इन टूलBash, फ़ाइल रीड, फ़ाइल एडिटसामान्य रूप से काम करते हैंकमांड/कोड चलाने वाले टूल और WebFetch हटा दिए जाते हैं, जब तक --tools में अलग-अलग नाम से न दिए जाएँ
फ़ाइल एक्सेससामान्यसामान्यवर्किंग डायरेक्टरी तक सीमित
bypassPermissionsअनुमतअनुमतअस्वीकृत
मैनेज्ड पॉलिसीलागू होती हैफिर भी लागू रहती है, पॉलिसी हुक और स्टेटस लाइन समेतलागू होती है
साइड इफ़ेक्टCLAUDE_CODE_SIMPLE सेट करता हैCLAUDE_CODE_SAFE_MODE सेट करता हैक्लाउड सेशन बनाने से इनकार करता है

तालिका को इरादे की प्रगति की तरह पढ़ें: --bare रफ़्तार के लिए है, --safe-mode निदान के लिए, --restricted नियंत्रण के लिए। एक काम की बात: --add-dir से दी गई डायरेक्टरी की स्किल --bare में भी लोड होती हैं, और इसी तरह आप बाक़ी सब छीन लिए गए रन में ठीक एक क्षमता बनाए रखते हैं।

जब कुछ गड़बड़ हो और आप तय न कर पाएँ कि दोष Claude Code का है या आपकी अपनी कॉन्फ़िगरेशन का, तब सबसे पहले --safe-mode आज़माएँ — इसमें यह पता लगाना भी शामिल है कि कहीं कोई कस्टमाइज़ेशन ही ऑटोमैटिक मॉडल फ़ॉलबैक तो नहीं चला रहा। इसे claude doctor के साथ जोड़ें, जो सेशन शुरू किए बिना रीड-ओनली इंस्टॉलेशन और सेटिंग निदान छापता है। (सेशन के अंदर वाला /doctor कमांड अलग चीज़ है: वह सुधार भी लागू कर सकता है।) लक्षण से शुरू होने वाली और डिबगिंग Claude Code की समस्याएँ सुलझाना में है। --restricted के लिए v2.1.248 या बाद का वर्ज़न चाहिए।

शेल से बैकग्राउंड सेशन चलाना​

जब आप --bg से सेशन शुरू करते हैं, तो टर्मिनल एक कंट्रोल प्लेन बन जाता है। पूरे जीवनचक्र के लिए एक कमांड है, और किसी के लिए इंटरैक्टिव UI खोलना ज़रूरी नहीं।

Guided walkthrough1 of 6
  1. समानांतर बैकग्राउंड सेशन की निगरानी और डिस्पैच के लिए एजेंट व्यू खोलता है। स्क्रिप्टिंग के लिए `--json` सक्रिय सेशन को JSON ऐरे के रूप में छापता है, और `--json --all` पूरे हो चुके सेशन भी शामिल करता है। `--cwd <path>` उस डायरेक्टरी के अंतर्गत शुरू हुए सेशन तक सीमित करता है। व्यू खोलने के लिए इंटरैक्टिव टर्मिनल चाहिए; JSON रूप के लिए नहीं।

इसका सेशन के भीतर से जवाबी पहलू — काम बैकग्राउंड में कैसे जाता है, और जाने पर क्या साथ जाता है — बैकग्राउंड टास्क, /loop और शेड्यूलिंग में है।

फ़्लैग जोड़ियाँ जिन्हें लोग ग़लत समझते हैं​

छह उलझनें जिन्हें पहले ही सुलझा लेना ठीक रहेगा
  • --tools तय करता है कि कौन-से बिल्ट-इन टूल मौजूद हैं। --allowedTools बताता है कि कौन-सी कॉल परमिशन प्रॉम्प्ट छोड़ें। --disallowedTools कॉल को अस्वीकार करता है। ये तीन अलग काम हैं, और ग़लत वाला देना “यह अब भी क्यों पूछ रहा है” का सबसे आम कारण है।
  • --tools MCP टूल पर बिल्कुल असर नहीं डालता। उन्हें भी हटाने के लिए --disallowedTools "mcp__*" जोड़ें।
  • --disallowedTools में सिर्फ़ नाम देने से टूल Claude के संदर्भ से हट जाता है; Bash(rm *) जैसा दायरे वाला नियम टूल को उपलब्ध रखता है और केवल मेल खाती कॉल अस्वीकार करता है।
  • --dangerously-skip-permissions bypassPermissions में शुरू करता है। --allow-dangerously-skip-permissions केवल उस मोड को Shift+Tab चक्र में जोड़ता है, ताकि आप plan मोड में शुरू करके बाद में बदल सकें। आप असल में लगभग हमेशा दूसरा वाला चाहते थे।
  • --add-dir फ़ाइल एक्सेस देता है, लेकिन Claude Code उन डायरेक्टरी से अधिकांश .claude/ कॉन्फ़िगरेशन नहीं खोजता। डायरेक्टरी जोड़ना उसकी कॉन्फ़िगरेशन अपनाने के बराबर नहीं है।
  • --desktop कोई प्रॉम्प्ट और --verbose तथा --debug फ़्लैग के सिवा कोई अन्य फ़्लैग नहीं लेता, क्योंकि Desktop ऐप सेशन ख़ुद शुरू करता है। v2.1.285 या बाद का वर्ज़न चाहिए।

एक छोटी-सी सुविधा की बात: किसी सबकमांड की स्पेलिंग गड़बड़ करें तो Claude Code सबसे क़रीबी मेल सुझाता है और सेशन शुरू किए बिना बाहर निकल जाता है — claude udpate वह बातचीत खोलने की बजाय जो आप नहीं चाहते थे, Did you mean claude update? छापता है।

ख़ुद को परखें​

Check yourself

0/3
  1. आपका रात का जॉब एक Agent SDK ऐप के अंदर `claude -p` चलाता है जिसका `canUseTool` कॉलबैक किसी इंसान से पूछता है, और रात को वह टाइमआउट तक अटका रहता है। सबसे संभावित रूप से कौन-सा फ़्लैग छूटा है?
  2. आप अपना --append-system-prompt टेक्स्ट बदलते हैं, `claude --continue` दोबारा चलाते हैं, और व्यवहार वैसा ही रहता है। क्यों?
  3. कोई कस्टमाइज़ेशन आपके सेशन को तोड़ रहा है और आपको नहीं पता कौन-सा। कौन-सा फ़्लैग उसे अलग करता है जबकि आपके टूल और परमिशन सामान्य रूप से काम करते रहें?
कार्ड पलटने के लिए Enter या Space दबाएँ। कार्ड बदलने के लिए बाएँ और दाएँ तीर कुंजियों का उपयोग करें।शब्द दिखाया गया।
1 / 8
Key takeaways
  • पहले सेशन का प्रकार चुनें — जो फ़्लैग इसे चुनता है वही तय करता है कि आप बाक़ी कौन-से फ़्लैग दे सकते हैं।
  • बिना निगरानी वाले रन को एक नहीं, पाँच फ़्लैग चाहिए: -p, --permission-prompts none, --max-turns, --max-budget-usd, और एक संरचित आउटपुट फ़ॉर्मैट।
  • --max-budget-usd को एक रन के लिए सर्किट ब्रेकर मानें, बिल की ऊपरी सीमा नहीं। यह क्लाइंट-साइड अनुमान है और बहाल कुल योग इससे बच निकलते हैं।
  • बातचीतें पहले अनुरोध पर अपना सिस्टम प्रॉम्प्ट रिकॉर्ड कर लेती हैं। अगर प्रॉम्प्ट का बदलाव नज़रअंदाज़ होता लगे, तो यही कारण है — काम करते समय --system-prompt-snapshot off इस्तेमाल करें।
  • --bare रफ़्तार है, --safe-mode निदान है, --restricted नियंत्रण है। ग़लत वाला उठाने से एक पूरी दोपहर बर्बाद होती है।
  • --help जानबूझकर अधूरा है। CLI रेफ़रेंस ही सच्चाई का स्रोत है, और वर्ज़न की सीमाएँ मायने रखती हैं — किसी फ़्लैग को दोष देने से पहले claude -v जाँच लें।

आगे​