मंज़ूरियाँ
Claude Code (और Codex) के अनुमति अनुरोध फ़ोन से मंज़ूर करना
किसी एजेंट के आगे न बढ़ने की आम वजह होती है एक अनुमति अनुरोध जिसे किसी ने देखा ही नहीं। जेब से इसका जवाब देने के तीन तरीक़े हैं: Claude Code के अपने पुश नोटिफ़िकेशन, ख़ुद बनाया ntfy hook, या इनबॉक्स वाला कोई ऐप। Claude Code के लिए हर एक कैसे काम करता है, Codex और दूसरे एजेंट के लिए क्या बदलता है, और सुरक्षा के मामले में हर एक की क्या क़ीमत है।
छोटा जवाब
Pro, Max, Team या Enterprise प्लान हो तो Remote Control शुरू करें और /config में Push when actions required चालू करें। फिर Claude ऐप आपको नोटिफ़िकेशन भेजता है, और आप ऐप में अनुरोध का जवाब देते हैं। मुफ़्त, ख़ुद होस्ट किए जाने वाले विकल्प के लिए claude-remote-approver जैसे ओपन-सोर्स hooks हर PermissionRequest को Approve/Deny बटन के साथ ntfy पर भेजते हैं। Codex में भी यही PermissionRequest hook है। Maude जैसे ऐप कई एजेंट के अनुरोध एक इनबॉक्स में दिखाते हैं, “अनुमति दें / अस्वीकार करें” वाले पुश नोटिफ़िकेशन के साथ।
जब Claude Code कोई ऐसी कमांड चलाना या फ़ाइल एडिट करना चाहता है जिसे आपने पहले से मंज़ूर नहीं किया, तो वह रुककर पूछता है। अगर आप टर्मिनल पर हैं, तो इसमें एक सेकंड लगता है। अगर नहीं हैं, तो सेशन इंतज़ार करता है — यानी एक कीप्रेस के लिए घंटे भर का इंतज़ार भी हो सकता है। हर रिमोट-मंज़ूरी सेटअप अनुरोध को आपके फ़ोन तक और आपका जवाब एजेंट तक पहुँचाता है। फ़र्क़ इसमें है कि अनुरोध को बीच में कैसे पकड़ा जाता है, वह कहाँ से गुज़रता है, और उसका जवाब कौन दे सकता है।
रिमोट मंज़ूरियाँ कैसे काम करती हैं
दो तंत्र हैं, और हर टूल इनमें से एक इस्तेमाल करता है।
- एजेंट का अपना रिमोट प्रोटोकॉल। Claude Code का Remote Control असली अनुमति डायलॉग को Claude ऐप तक भेजता है। Antigravity का Remote Control और Codex का app-server भी इसी तरह काम करते हैं। बीच में कोई कुछ तय नहीं करता: आप एजेंट के अपने अनुरोध का जवाब दे रहे होते हैं।
- Hooks। Claude Code तय मौक़ों पर आपका कॉन्फ़िगर किया एक प्रोग्राम चलाता है।
PermissionRequesthook तब चलता है जब अनुमति डायलॉग दिखने वाला हो, और वह{"behavior": "allow"}या"deny"जैसा फ़ैसला प्रिंट करके आपकी ओर से जवाब दे सकता है।PreToolUsehook हर tool call से पहले चलता है औरallow,deny,askयाdeferलौटा सकता है। पुश भेजकर आपके टैप का इंतज़ार करने वाला hook — यही हर ख़ुद बनाए फ़ोन-मंज़ूरी टूल का तरीक़ा है। विवरण hooks reference में है।
Claude Code में नेटिव पुश
Anthropic का अपना रास्ता Remote Control से होकर जाता है:
claude remote-control(सर्वर मोड) याclaude --remote-controlसे सेशन शुरू करें, या चल रहे सेशन में/remote-controlटाइप करें।- फ़ोन पर Claude ऐप में उसी खाते से साइन इन करें, और नोटिफ़िकेशन की अनुमति दें।
- टर्मिनल में
/configचलाएँ और Push when actions required चालू करें, जो अनुमति अनुरोध और सवाल कवर करता है। Push when Claude decides "टेस्ट पूरे हुए" जैसे सक्रिय अपडेट कवर करता है।
दस्तावेज़ कुछ बातें बताते हैं जिनसे आपका सामना होगा:
- प्लान और ऑथ। Remote Control, Pro, Max, Team और Enterprise पर है, और API कुंजियाँ सपोर्टेड नहीं हैं। Team और Enterprise पर किसी Owner को इसे चालू करना होता है।
- अनुरोधों का टाइमआउट नहीं होता। अनुमति अनुरोध और सवाल तब तक खुले रहते हैं जब तक आप जवाब न दें।
- टर्मिनल पर होने पर पुश रुक जाता है। जब आप जुड़े टर्मिनल में टाइप कर रहे हों या उस पर फ़ोकस हो, तब Claude Code पुश नहीं भेजता।
CLAUDE_CLIENT_PRESENCE_FILEइसे उस पूरे समय तक बढ़ाता है जब आप मशीन पर हों। - प्रोसेस को चालू रहना होगा।
claudeप्रोसेस चलता रहना चाहिए, इसलिए सर्वर पर उसे tmux के अंदर शुरू करें। - कुछ मोड ऐप से नहीं चुने जा सकते। मोबाइल दस्तावेज़ों के अनुसार आप ऐप से Bypass permissions नहीं चुन सकते, न Remote Control सेशन के लिए Auto।
अगर आप Claude प्लान पर हैं और सिर्फ़ Claude Code इस्तेमाल करते हैं, तो यहीं से शुरू करें। यह आपके प्लान के साथ मुफ़्त है और Anthropic इसे संभालता है।
ntfy hooks के साथ ख़ुद बनाएँ
ntfy एक ओपन-सोर्स पुश सेवा है। आप एक सादे HTTP अनुरोध से किसी topic पर पब्लिश करते हैं, और आपके फ़ोन पर ntfy ऐप उसे दिखाता है। कई ओपन-सोर्स प्रोजेक्ट इसे PermissionRequest hook के साथ जोड़ते हैं। hook रुके हुए tool call को ऐक्शन बटन के साथ आपके topic पर भेजता है, दूसरे topic पर आपके टैप का इंतज़ार करता है, और फ़ैसला वापस Claude Code को प्रिंट कर देता है। जिनका श्रेय है, उन्हें:
| प्रोजेक्ट | Hook | अगर आप जवाब न दें | टिप्पणी |
|---|---|---|---|
| claude-remote-approver (yuuichieguchi) | PermissionRequest | 120 s बाद (प्लान रिव्यू के लिए 300 s) टर्मिनल प्रॉम्प्ट पर लौट आता है | npm install -g claude-remote-approver; 128-बिट का रैंडम topic बनाता है; Approve / Always Approve / Deny |
| claude-push (coa00) | PermissionRequest | 90 s बाद टर्मिनल पर लौट आता है (बदला जा सकता है) | शेल इंस्टॉल स्क्रिप्ट; Allow / Deny |
| claude-code-phone-notifications (ssarnecki) | PermissionRequest, PreToolUse, Stop | लगभग 9 मिनट इंतज़ार करता है, फिर टर्मिनल पर लौट आता है | पुश से पहले 30 s रुकता है, अगर आप डेस्क पर हों; AskUserQuestion अनुरोध भी पुश करता है (बिना बटन के) |
| hookline (tsyche) | Claude के लिए PreToolUse; Codex के लिए PermissionRequest | डिफ़ॉल्ट 15 मिनट, देर से आए जवाबों के लिए लंबी अवधि के साथ | Codex, Grok और OpenCode भी कवर करता है; क्रेडेंशियल वाले सेल्फ़-होस्टेड ntfy को सपोर्ट करता है |
चारों MIT-लाइसेंस वाले हैं। टाइमआउट उनके दस्तावेज़ों में बताए डिफ़ॉल्ट हैं। अगर आपको सिर्फ़ एक सूचना चाहिए, रिमोट से जवाब नहीं, तो Claude Code का Notification hook काफ़ी है। डायलॉग दिखने पर permission_prompt matcher चलता है:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt",
"hooks": [
{ "type": "command",
"command": "curl -s -d 'Claude Code is waiting for approval' https://ntfy.sh/your-long-random-topic" }
]
}
]
}
}
इसे Claude Code चलाने वाली मशीन पर ~/.claude/settings.json में रखें। जवाब देने के लिए आपको फिर भी टर्मिनल तक जाना होगा। ऊपर के प्रोजेक्ट जवाब देने का रास्ता जोड़ते हैं।
Maude का इनबॉक्स
Maude पहला तरीक़ा अपनाता है। आपके सर्वर पर इसका daemon हर एजेंट के अपने प्रोटोकॉल से बात करता है, इसलिए अनुमति अनुरोध ऐप तक hook के अंदाज़े के बजाय असली अनुरोध के रूप में पहुँचता है। हर सर्वर के हर सेशन के अनुरोध त्रुटियों और पूरे हुए काम के साथ एक इनबॉक्स में आते हैं। आप वहीं जवाब दे सकते हैं, या सीधे पुश नोटिफ़िकेशन से, जिसमें “अनुमति दें” और “अस्वीकार करें” होते हैं। अनुरोध आपके जवाब तक इंतज़ार करता है; सेशन टाइमआउट होकर आपके बिना आगे नहीं बढ़ता। यह Claude Code, Codex, OpenCode और Grok Build के लिए काम करता है। Antigravity अपवाद है: headless agy किसी टूल के चलने से पहले रुक नहीं सकता, इसलिए Maude अस्वीकार किया गया ऐक्शन बाद में दिखाता है और आपके allow करने पर उसे दोबारा चलाता है। Maude एक पेड ऐप है, और हर एजेंट के लिए उसका अपना खाता चाहिए। इनबॉक्स और पुश वाला यह अकेला ऐप नहीं है: Happier समेत कुछ और में भी दोनों हैं।
Codex और दूसरे एजेंट
- Codex में भी hooks हैं, जो डिफ़ॉल्ट रूप से चालू हैं।
PermissionRequesthook"behavior": "allow"या"deny"से जवाब दे सकता है, औरPreToolUseअस्वीकार कर सकता है। ये~/.codex/hooks.jsonमें याconfig.tomlके[hooks]में रहते हैं। hookline, Codex के लिए यही इस्तेमाल करता है। Codex की पुरानीnotifyसेटिंग टर्न पूरा होने पर एक प्रोग्राम चलाती है। थर्ड-पार्टी लेखों के अनुसार यह मंज़ूरी के अनुरोधों पर नहीं चलती, इसलिए मंज़ूरियों के लिए hooks इस्तेमाल करें। Codex के आधिकारिक फ़ोन ऐप वाले रास्ते और उसकी Linux सीमाओं के लिए VPS पर Codex CLI देखें। - Antigravity इंटरैक्टिव या daemon के रूप में चलाने पर अपने Remote Control डैशबोर्ड से अनुरोधों का जवाब देता है। headless
agyपूछने के बजाय अस्वीकार करता है। सर्वर पर Antigravity CLI देखें। - OpenCode और Grok Build hookline के प्लगइन और hook सपोर्ट से, या मल्टी-एजेंट ऐप से कवर होते हैं।
रिमोट मंज़ूरियों की सुरक्षा
फ़ोन से दी गई मंज़ूरी उतनी ही मज़बूत है जितनी अनुरोध और आपके टैप के बीच की सबसे कमज़ोर कड़ी।
- ntfy.sh पर topic ही पासवर्ड है। ntfy के दस्तावेज़ यह सीधे कहते हैं: बिना साइन-अप के, topic का नाम जानने वाला कोई भी उसे पढ़ सकता है और उस पर पब्लिश कर सकता है। सार्वजनिक सर्वर पर अंदाज़ा लगाया गया topic मतलब कोई और आपके एजेंट की कमांड मंज़ूर कर सकता है। लंबा रैंडम topic इस्तेमाल करें, या ऑथेंटिकेशन के साथ ntfy ख़ुद होस्ट करें।
- शीर्षक नहीं, कमांड पढ़ें। लॉक-स्क्रीन पुश एक सारांश दिखाता है। 6 इंच की स्क्रीन पर किसी लंबी Bash लाइन के अंदर
rm -rfआसानी से छूट जाता है। "always allow" सिर्फ़-पढ़ने वाले टूल के लिए इस्तेमाल करें,Bash(*)के लिए नहीं। - अपना बैकअप जानें। ऊपर के ख़ुद बनाए hooks टाइमआउट होने पर टर्मिनल प्रॉम्प्ट पर लौट आते हैं, इसलिए बिना जवाब का अनुरोध अपने-आप मंज़ूर होने के बजाय रुका रहता है। अपना hook लिखें तो यही नियम रखें। Claude Code के दस्तावेज़ चेतावनी देते हैं कि टाइमआउट हुआ
PreToolUsehook tool call को नहीं रोकता — वह सामान्य अनुमति प्रक्रिया से आगे बढ़ जाता है — इसलिए अटके हुए hook को रोक मानकर न चलें। - चैनल को सुरक्षित करें। मंज़ूरी का ट्रैफ़िक बताता है कि आपका एजेंट क्या कर रहा है। Anthropic का Remote Control, Anthropic के सर्वरों से होकर जाता है, और Maude के रिले को सिर्फ़ एंड-टू-एंड एन्क्रिप्टेड ट्रैफ़िक दिखता है। hook के साथ आप तय करते हैं कि वह कहाँ जाए। Anthropic की Require trusted devices सेटिंग सीमित करती है कि कौन-से डिवाइस Remote Control इस्तेमाल कर सकते हैं।
- मंज़ूरियाँ सुरक्षा जाल हैं, sandbox नहीं। एजेंट को ऐसी मशीन पर non-root यूज़र के रूप में चलाना, जिसे आप दोबारा बना सकें, किसी भी मंज़ूरी UI से ज़्यादा मायने रखता है। पूरी अनुमतियों के साथ एजेंट को सुरक्षित रूप से चलाना देखें।
Maude से जवाब दें
अगर आपके एजेंट किसी सर्वर पर चलते हैं और आप सबका जवाब एक जगह से देना चाहते हैं, तो Claude Code या Codex के साथ Maude आज़माएँ। ऐप से सर्वर जोड़ें, अपने प्लान से साइन इन करें, और अनुमति अनुरोध “अनुमति दें” और “अस्वीकार करें” वाले पुश नोटिफ़िकेशन के रूप में आते हैं। इनबॉक्स वह सब इकट्ठा करता है जो आपका इंतज़ार कर रहा है।
अक्सर पूछे जाने वाले सवाल
क्या Claude Code पुश नोटिफ़िकेशन भेज सकता है?
/config में Push when actions required (और चाहें तो Push when Claude decides) चालू करें। इसके लिए Pro, Max, Team या Enterprise प्लान चाहिए; API-कुंजी वाले लॉगिन सपोर्टेड नहीं हैं।क्या मैं लॉक स्क्रीन से Allow या Deny कर सकता हूँ?
अगर मैं जवाब न दूँ तो क्या होता है?
PreToolUse hook, tool call को नहीं रोकता।क्या यह Codex के लिए काम करता है?
PermissionRequest hook सपोर्ट करता है जो allow या deny कर सकता है, और hookline जैसे प्रोजेक्ट इसका इस्तेमाल Codex की मंज़ूरियाँ ntfy पर भेजने में करते हैं। थर्ड-पार्टी रिपोर्ट के अनुसार Codex की notify सेटिंग सिर्फ़ पूरे हुए टर्न कवर करती है, इसलिए मंज़ूरियों के लिए hooks इस्तेमाल करें।क्या फ़ोन से कमांड मंज़ूर करना सुरक्षित है?
क्या बदला
- — पहली बार प्रकाशित। Remote Control और hooks का व्यवहार Anthropic और OpenAI के दस्तावेज़ों से जाँचा गया; रिपॉज़िटरी का विवरण और डिफ़ॉल्ट इसी तारीख़ को हर प्रोजेक्ट के README से।