विषय-सूची
क्या Claude Code ने अचानक आपको ऐसा कोई message दिखाकर login करने को कहा है?
Not logged in · Please run /login
Invalid API key · Fix external API key
OAuth token has expired · Please run /login
API Error: 400 ... This organization has been disabled.
ये "authentication विफल (आप कौन हैं?)" वाले errors हैं, जो आमतौर पर 401/403 के रूप में सामने आते हैं। परेशान करने वाली बात यह है कि ये कितने उलझन भरे दिखते हैं — "मैं पैसे दे रहा हूँ, फिर भी मुझे reject किया जा रहा है" या "कल तक चल रहा था, अब अचानक login माँग रहा है।" लेकिन ज्यादातर कारण बिलकुल सामान्य (textbook) होते हैं, और एक बार जाँचने का क्रम पता चल जाए, तो यह जल्दी ठीक हो जाता है।
सबसे ज़रूरी बात पहले। (1) नंबर-एक auth समस्या यह है कि एक environment variable ANTHROPIC_API_KEY चुपचाप आपकी subscription (Pro/Max) login को override कर देती है — जो अप्रत्याशित pay-as-you-go शुल्क, "organization disabled", और "Invalid API key" का असली कारण बन जाती है। (2) शुरुआत हमेशा /status से होती है ताकि देखा जा सके कि "अभी कौन-सा credential active है।" (3) शक हो तो "भटकी हुई key को unset करें → /logout → /login" करके साफ-सुथरे ढंग से दोबारा अंदर जाएँ।
Credentials का एक "वरीयता-क्रम" होता है
— जो ऊपर है वही जीतता है, इसलिए env API key आपकी subscription को override कर देती है
ANTHROPIC_AUTH_TOKEN (gateways)
ANTHROPIC_API_KEY ← env var
यही जीतती है = pay-as-you-go
apiKeyHelper / 5. CLAUDE_CODE_OAUTH_TOKEN
/login)
असल में आप यही चाहते हैं
अगर ANTHROPIC_API_KEY आपके environment में बची रह जाती है, तो वह subscription पर वरीयता पा लेती है।
पहले /status से जाँचें → ज़रूरत न हो तो unset ANTHROPIC_API_KEY।
1. यह error आपको क्या बता रहा है
Authentication का मतलब है "यह साबित करना कि आप कौन हैं।" Claude Code "आप" को या तो आपकी subscription OAuth login से, या किसी API key से, या cloud credentials से साबित करता है। जब वह प्रमाण विफल हो जाता है, तो आपको 401 (authentication_error) या 403 (forbidden) के रूप में reject कर दिया जाता है। प्रमुख messages और उनके अर्थ:
| Message | अर्थ |
|---|---|
| Not logged in · Please run /login | कोई वैध credential नहीं → /login |
| Invalid API key · Fix external API key (पुराने builds में: "· Please run /login") | env var या apiKeyHelper से आई key को API ने reject कर दिया |
| This organization has been disabled | किसी disabled org की पुरानी API key आपको override कर रही है |
| OAuth token revoked / has expired · Please run /login | कहीं और sign out हुए / admin ने revoke किया / auto-refresh विफल |
| API Error: 403 ... forbidden ... Request not allowed | निष्क्रिय subscription, गायब Console role, या proxy की दखलंदाज़ी |
मुख्य आदत: खुद को दोष देने से पहले, /status चलाकर देखें कि "अभी कौन-सा credential active है।" ज़्यादातर auth errors की जड़ है किसी अनचाहे credential का चुना जाना — और सबसे बड़ा संदिग्ध है अगले section की "API key override।"
2. सबसे बड़ा जाल — API key आपकी subscription को override कर देती है
आधिकारिक docs बताते हैं कि Claude Code "वरीयता-क्रम" के अनुसार सिर्फ़ एक credential चुनता है (hero देखें)। पेच यह है कि environment variable ANTHROPIC_API_KEY आपकी subscription (Pro/Max) login के ऊपर बैठती है। यानी —
आधिकारिक व्याख्या (सार रूप में)
"active subscription होने पर भी, अगर आपके environment में ANTHROPIC_API_KEY set है, तो approve होने के बाद वही वरीयता पाती है। अगर वह key किसी disabled या expired org की है, तो authentication विफल हो जाता है। subscription पर वापस लौटने के लिए unset ANTHROPIC_API_KEY चलाएँ, और /status से पुष्टि करें कि कौन-सा active है।"
यह override तीन "उलझन भरे" लक्षण पैदा करता है। (1) अप्रत्याशित pay-as-you-go शुल्क — जो एक flat subscription होनी चाहिए, उस पर API key के ज़रिए प्रति-token शुल्क लगता है (बड़े चौंकाने वाले bills की रिपोर्टें आई हैं)। (2) This organization has been disabled — बची रह गई key किसी disabled पुराने org की थी। (3) Invalid API key — key expired या गलत है। इनमें से कोई भी "आपकी login की समस्या" नहीं है — ये "environment में एक भटकी हुई key के जमे रहने की समस्या" हैं।
key कहाँ से आती है: ~/.zshrc / ~/.bashrc / ~/.profile में कोई export ANTHROPIC_API_KEY=...; direnv, dotenv, या आपके IDE terminal द्वारा पढ़ी जाने वाली कोई .env; किसी पिछली नौकरी/project का अवशेष; कोई CI environment। Windows पर, PowerShell profile ($PROFILE) या User environment variables। /status और env | grep ANTHROPIC से पता लगाएँ; ठीक इस तरह करें:
# अस्थायी रूप से unset करके launch करें
unset ANTHROPIC_API_KEY
claude
# स्थायी समाधान: अपनी shell config / .env से export line हटाएँ, फिर /status से पुष्टि करें
ध्यान दें: interactive mode में आपसे एक बार पूछा जाता है कि key इस्तेमाल करनी है या नहीं, और आपका चुनाव याद रखा जाता है (बाद में बदलने के लिए /config में "Use custom API key" toggle का उपयोग करें)। जब तक आप जानबूझकर API key इस्तेमाल नहीं करना चाहते, /status से पुष्टि करें कि subscription active है।
3. अन्य कारण
override के अलावा बाकी auth समस्याओं के कारण भी आमतौर पर तयशुदा होते हैं।
override से परे की auth ठोकरें
/logout → /login से दोबारा अंदर जाएँ।claude doctor से जाँचें।c दबाएँ, या BROWSER set करें।
"हर बार login माँगा जाना" → पहले घड़ी का गड़बड़ होना या Keychain पर शक करें।
"403 के साथ reject" → पहले निष्क्रिय subscription, Console role, या proxy पर शक करें।
यह जानना कि credentials कहाँ रहते हैं, recovery को भी तेज़ करता है। macOS: Keychain; Linux: ~/.claude/.credentials.json (mode 0600); Windows: %USERPROFILE%\.claude\.credentials.json। सामान्यतः /login और /logout इन्हें manage करते हैं, लेकिन अगर store खराब हो जाए, तो साफ-सुथरे re-auth के लिए आप इस file को delete कर सकते हैं (advanced)।
4. निदान (diagnosis) का workflow
जब auth पर अटक जाएँ, तो ऊपर से नीचे की ओर चलें। ज़्यादातर मामले step 3 तक सुलझ जाते हैं।
ऊपर से नीचे तक अलग करें
/status से देखें कि कौन-सा credential active है (subscription, API key, या cloud)।env | grep ANTHROPIC (Windows: $PROFILE / User env vars) से किसी भटकी हुई key को खोजें।unset ANTHROPIC_API_KEY → दोबारा launch करें। अपनी shell config / .env से export line हटाकर इसे स्थायी बनाएँ।/logout → Claude Code बंद करें → /login।claude doctor से Keychain जाँचें (macOS) / अपनी Console role की पुष्टि करें (orgs)।
नियम: "पहले /status, फिर भटकी हुई key की तलाश।"
ज़्यादातर मामले बस उस key को हटाने भर से ठीक हो जाते हैं जो आपको override कर रही थी।
5. मिलते-जुलते errors से फर्क करना
"reject / रुक गया" के गैर-auth कारण भी हो सकते हैं। HTTP code के आधार पर बाँटना भरोसेमंद तरीका है।
| लक्षण | असल में यह क्या है | मुख्य उपाय |
|---|---|---|
| 401 / 403 · Invalid API key · Not logged in | यह लेख = auth (credential की समस्या) | /status → भटकी key हटाएँ → /login |
| usage limit reached | Plan quota खत्म (auth ठीक है) | reset का इंतज़ार करें; उपाय |
| 429 Request rejected | Rate limit (low-tier key override भी 429 ला सकती है) | गति धीमी करें; /status से भटकी key भी जाँचें |
| 529 / 500 | Server-side overload / internal error | इंतज़ार करके retry करें; उपाय |
| Credit balance is too low | Console prepaid balance खत्म (bill करें या subscription पर जाएँ) | credits जोड़ें, या subscription के लिए /login |
एक याद रखने का तरीका: 401/403 "आप कौन हैं?" वाली समस्या है = auth। usage limit और Credit balance "मात्रा / शेष" वाली समस्याएँ हैं। 429 rate है, 529/500 server-side है। खास बात यह है कि एक भटकी हुई API key सिर्फ़ "auth विफलता" ही नहीं, बल्कि "अप्रत्याशित शुल्क" और "low tier पर 429" भी पैदा करती है — इसीलिए उलझन का जवाब हमेशा पहले /status है। अन्य आम errors के लिए, error संग्रह देखें।
6. रोकथाम checklist
auth पर बार-बार न अटकने के लिए एक checklist।
(1) अगर आप subscription इस्तेमाल करते हैं, तो ANTHROPIC_API_KEY को अपनी shell config / .env में न छोड़ें (पुरानी नौकरियों/projects के अवशेषों से सावधान रहें)। (2) ज़रूरी काम से पहले /status चलाकर active credential की पुष्टि करने की आदत बनाएँ। (3) CI के लिए, interactive login की जगह claude setup-token का CLAUDE_CODE_OAUTH_TOKEN (या एक स्पष्ट API key) इस्तेमाल करें। (4) अगर हर बार login माँगा जाए, तो system घड़ी और macOS Keychain जाँचें। (5) org accounts के लिए, Console role और plan की स्थिति की पुष्टि करें। (6) WSL/SSH में, code-paste तरीका जान लें।
सारांश
Claude Code की auth/login errors (Not logged in / Invalid API key / organization disabled / OAuth token expired, आदि) ज़्यादातर 401/403 = credential की समस्याएँ हैं। सबसे आम असली कारण है "environment variable ANTHROPIC_API_KEY का चुपचाप आपकी subscription login को override करना" — जो अप्रत्याशित pay-as-you-go शुल्क, organization disabled, और Invalid API key पैदा करता है। इसलिए शुरुआत हमेशा /status से होती है ताकि देखा जा सके कि "कौन-सा credential active है।"
निदान इस तरह करें: (1) /status -> (2) env | grep ANTHROPIC से भटकी key खोजें -> (3) unset + shell config से हटाएँ -> (4) /logout -> /login -> (5) घड़ी / Keychain / Console role। ज़्यादातर मामले बस उस key को हटाने भर से ठीक हो जाते हैं जो आपको override कर रही थी। गलत उपाय से बचने के लिए इस तरह बाँटें: 401/403 = auth, usage limit / Credit = मात्रा-शेष, 429 = rate, 529/500 = server। संबंधित: usage limit, 529/500 errors, Claude Code error संग्रह।
FAQ
Q. मैं पैसे दे रहा हूँ, फिर भी "Invalid API key" या "organization has been disabled" आता है। क्यों?
A. लगभग निश्चित रूप से, एक environment variable ANTHROPIC_API_KEY आपकी subscription login को override कर रही है। अगर वह key किसी expired या disabled org की है, तो active subscription होने पर भी आपको reject किया जाता है। इसे env | grep ANTHROPIC से खोजें, unset ANTHROPIC_API_KEY चलाएँ, फिर /login करके /status से पुष्टि करें। अपनी shell config (.zshrc, आदि) या .env से export line भी हटाएँ।
Q. मैं एक flat subscription पर हूँ, फिर भी प्रति-token bill आया।
A. यह भी आमतौर पर ANTHROPIC_API_KEY override ही है। जब API key वरीयता पाती है, तो उपयोग आपकी flat subscription की जगह प्रति-token API billing में चला जाता है। /status से पुष्टि करें कि "subscription active है"; अगर API key चुनी गई है, तो उसे unset + config की सफाई से हटाएँ। इसे सिर्फ़ तभी रखें जब आप जानबूझकर API key इस्तेमाल करना चाहते हों।
Q. हर बार शुरू करने पर मुझसे login माँगा जाता है।
A. आम कारण हैं (1) system घड़ी का गड़बड़ होना (token की पुष्टि सही समय पर निर्भर है) और (2) locked macOS Keychain / password का बेमेल जो credentials को save होने से रोकता है। घड़ी को auto-sync पर set करें, और macOS पर claude doctor से Keychain जाँचें। अगर बना रहे, तो /logout → /login से साफ-सुथरे ढंग से दोबारा अंदर जाएँ।
Q. /status मुझे क्या बताता है?
A. यह दिखाता है कि अभी कौन-सी authentication method/credential active है (subscription OAuth, ANTHROPIC_API_KEY, या cloud credentials)। चूँकि ज़्यादातर auth परेशानी "किसी अनचाहे credential के चुने जाने" से होती है, इसलिए पहले /status नियम है। सटीक प्रदर्शन version के अनुसार बदलता है, इसलिए मौजूदा व्यवहार की पुष्टि आधिकारिक docs में करें।
Q. WSL या SSH पर login विफल हो जाता है क्योंकि browser नहीं खुलता।
A. remote setups पर, browser redirect स्थानीय callback पर वापस नहीं लौट सकता। इसका हल: Claude Code द्वारा दिखाया गया login code paste करें, URL कॉपी करने के लिए c दबाकर उसे अपने local browser में खोलें, या WSL2 पर BROWSER environment variable set करें। code-paste तरीका जान लेने से यह भरोसेमंद हो जाता है।