आपका AI कोडिंग एजेंट आपके सर्वर पर क्या चलाता है, यह कैसे देखें

आपका एजेंट प्रोडक्शन सर्वर पर है और टर्मिनल बस इतना बताता है कि वह एक टूल कॉल कर रहा है। उसने कौन-सी कमांड चलाई, और मशीन ने क्या जवाब दिया? ट्रांसक्रिप्ट यह बाद में बताता है। यहाँ बताया है कि हमने इसे होते समय ही कैसे दिखाया, पहले क्या आज़माया, और हमारे ऐप के बिना यही चीज़ कैसे पाएँ।

आप एक DevOps एजेंट से पूछते हैं कि प्रोडक्शन API धीमा क्यों है। वह काम शुरू करता है। उसके टर्मिनल में आपको एक लाइन दिखती है कि वह एक टूल कॉल कर रहा है, फिर दूसरी, फिर तीसरी। छह कॉल के बाद वह बताता है कि डिस्क 97 % भरी है और लॉग डायरेक्टरी साफ़ करने की पेशकश करता है।

उसने उस मशीन पर असल में क्या चलाया? कौन-सा du, कौन-सा find, क्या वह कुछ मिटा भी चुका है? जवाब मौजूद है, लेकिन वह सेशन ट्रांसक्रिप्ट में है, JSON में लिखा हुआ, और आप उसे सब हो जाने के बाद पढ़ते हैं। लैपटॉप पर इसमें कोई दिक़्क़त नहीं। प्रोडक्शन सर्वर पर, "सब हो जाने के बाद" इतनी देर है कि आप "रुको, वह फ़ोल्डर नहीं" कह ही न पाएँ।

हम AgentsRoom बनाते हैं, एक डेस्कटॉप ऐप जो कोडिंग एजेंट चलाता है और उन्हें आपके सर्वर, डेटाबेस और क्लस्टर तक पहुँचने के टूल देता है। यह कहानी है कि हमने उन कॉल को होते समय ही कैसे दिखाया: वह संस्करण जो नहीं चला, उस संस्करण के पीछे के आँकड़े जो चलता है, और अगर आप हमारा ऐप इस्तेमाल नहीं करते तो यही चीज़ कैसे पाएँ।

छोटा जवाब

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

सर्वर पर ट्रांसक्रिप्ट काफ़ी क्यों नहीं है

Claude Code, Codex और बाक़ी CLI सचमुच सब कुछ दर्ज करते हैं। Claude Code हर सेशन के लिए ~/.claude/projects/ के अंदर एक JSONL फ़ाइल लिखता है, Codex ~/.codex/sessions/ के अंदर। हर टूल कॉल उसमें अपने इनपुट और अपने नतीजे के साथ मौजूद है।

समस्या पूर्णता की नहीं, समय और रूप की है। ट्रांसक्रिप्ट CLI के लिए लिखा जाता है, ताकि वह सेशन फिर से शुरू कर सके। आप उसे एजेंट के रुकने के बाद पढ़ते हैं, JSON की लाइनों में खोदते हुए। जब तीन एजेंट एक साथ काम करते हैं, तो आप तीन फ़ाइलें पढ़ते हैं। और एजेंट का टर्मिनल, वह जगह जहाँ आप असल में देख रहे होते हैं, हर कॉल का बस एक समेटा हुआ सार दिखाता है।

आपके लैपटॉप के कोड के लिए बाद में पढ़ना सामान्य रिव्यू का तरीक़ा है: commit करने से पहले आप diff देखते हैं। सर्वर का कोई diff नहीं होता। systemctl restart या DELETE चलते ही असर कर देता है।

हमने पहले क्या आज़माया, और वे 166 कमांड

एजेंट के लिए हमारा पहला रिमोट टूल एक टर्मिनल टैब में कनेक्शन खोलता था। यह सही लगा: यूज़र सेशन देख सकता था। पर यह एक ऐसे तरीक़े से नाकाम हुआ जिसकी हमें उम्मीद नहीं थी।

टूल ने एजेंट को यह पढ़ने का कोई तरीक़ा नहीं दिया कि अभी-अभी खोले गए टैब में क्या हुआ। तो एक यूज़र के प्रोजेक्ट पर एजेंट ने उसका इस्तेमाल ही बंद कर दिया। उस सेशन की गिनती: हमारे कनेक्शन टूल की 16 कॉल, और एजेंट के अपने शेल टूल से चलाई गईं 166 sshpass कमांड, जिनमें एजेंट यूज़र से पासवर्ड माँगता रहा और यूज़र उसे चैट में पेस्ट करता रहा। प्रोडक्शन के क्रेडेंशियल सादे टेक्स्ट में ट्रांसक्रिप्ट में पहुँच गए, हर कमांड चलते समय ps aux में, और /tmp के अंदर एक फ़ाइल में।

सबक़ यह नहीं था कि "एजेंट लापरवाह होते हैं"। एजेंट ने वही किया जो अकेला काम कर रहा था। एक सुरक्षित टूल जो एजेंट को उसका काम न करने दे, उसे बायपास कर दिया जाता है, और वह बायपास टूल न होने से भी बुरा है।

तो हमने ssh_exec लिखा: एजेंट एक कमांड भेजता है, AgentsRoom उसे सहेजे गए कनेक्शन पर चलाता है, पासवर्ड ऐप में ही रहता है, और आउटपुट व एग्ज़िट कोड लौटा देता है। एजेंट क्रेडेंशियल कभी नहीं देखता और उसके पास sshpass लाइन बनाने की कोई वजह नहीं रहती।

इससे सुरक्षा की समस्या हल हुई और दिखाई देने की एक समस्या पैदा हो गई। अगर हर ssh_exec एक टैब खोलता, तो उस सेशन से 166 टैब बनते। इसलिए ssh_exec ने कोई टैब नहीं खोला, और दो महीने तक उन कमांड को देखने की अकेली जगह, फिर से, एजेंट की बातचीत ही थी।

हर कनेक्शन का एक लॉग

29 अक्टूबर 2026 को जारी किया गया संस्करण (AgentsRoom 1.242.0) एक नियम पर टिका है: हर कमांड का टैब नहीं। उसकी जगह, हर कॉल एक लॉग में पहुँचती है, हर कनेक्शन का एक।

  • दाएं पैनल का गतिविधि टैब, फ़ाइलें, बदलाव और टेस्ट के बगल में, उन कनेक्शन को कार्ड के रूप में दिखाता है जिन्हें एजेंट ने छुआ (आख़िरी कमांड, एजेंट, समय, स्थिति), और एक टाइमलाइन पर सबसे हाल की 40 कॉल। यह एजेंट के हिसाब से फ़िल्टर करता है और कमांड, कनेक्शन के नामों और आउटपुट में खोजता है।
  • किसी कनेक्शन का लॉग टर्मिनल जैसा पढ़ा जाता है: agent · time, फिर $ command, फिर आउटपुट, फिर Done · exit 0 · 1.2 s। SSH आउटपुट लाइव आता जाता है और दृश्य नीचे के साथ चलता रहता है, जब तक आप ऊपर स्क्रॉल न करें। एक बटन पूरे लॉग को टेक्स्ट के रूप में कॉपी करता है।
  • एजेंट के हेडर में लेबल, हर उस सर्वर, डेटाबेस या क्लस्टर के लिए एक जिसे उस एजेंट ने छुआ, कॉल के दौरान एक हरे बिंदु के साथ। एक क्लिक वह लॉग खोल देता है।
  • एजेंट काम पर बैज सर्वर, डेटाबेस और Kubernetes विंडो में कनेक्शन की पंक्ति पर, सिर्फ़ तब जब कोई कॉल चल रही हो।

लॉग सिर्फ़ पढ़ने के लिए है। मशीन में ख़ुद टाइप करने के लिए, सर्वर विंडो का SSH टैब ही रास्ता है। पूरी फ़ीचर पेज है AI एजेंट के लिए SSH कनेक्शन, और डेटाबेस वाला हिस्सा डेटाबेस कनेक्शन पर है।

क्या दर्ज होता है, और क्या नहीं

कॉललॉग मेंक्यों
ssh_exec (SSH, AWS SSM, WinRM)हाँमुख्य मामला: किसी रिमोट मशीन पर एक कमांड, जिसका अपना कोई टैब नहीं
ssh_transferहाँकिसी सर्वर पर या वहाँ से कॉपी की गई फ़ाइल उस सर्वर पर की गई एक कार्रवाई है
db_query, db_schemaहाँSQL वैसा ही जैसा एजेंट ने लिखा, और नतीजे की पहली पंक्तियाँ
kube_kubectlहाँअपने आर्ग्युमेंट के साथ kubectl लाइन के रूप में दिखता है
commands_run, ssh_connectनहींवे पहले से एक टर्मिनल टैब खोलते हैं जिसे आप देख सकते हैं
एजेंट का अपना शेल टूल (ssh, psql, kubectl सीधे टाइप किए गए)नहींयह AgentsRoom से होकर नहीं जाता: यह एजेंट के टर्मिनल और ट्रांसक्रिप्ट में है

आख़िरी पंक्ति ईमानदार सीमा है। लॉग वही देखता है जो हमारे टूल से होकर जाता है। अगर आप चाहते हैं कि हर रिमोट कार्रवाई वहाँ दिखे, तो टूल को एजेंट के लिए आसान रास्ता होना होगा, और यही 166 कमांड का सबक़ है।

एक और बात: कमांड चलते समय सिर्फ़ SSH आउटपुट स्ट्रीम करता है, क्योंकि वह आपकी मशीन पर एक असली टर्मिनल से होकर जाता है। WinRM, SQL और kubectl के नतीजे कॉल ख़त्म होने पर दिखते हैं।

लॉग रखने की क़ीमत क्या है

हमारे यूज़र एक साथ बहुत सारे एजेंट चलाते हैं: एक मशीन पर 18 प्रोजेक्ट में 45 एजेंट, दूसरी पर 48 कंसोल। जो कुछ भी हर एजेंट या आउटपुट के हर टुकड़े के हिसाब से गिना जाता है, वह इनसे गुणा हो जाता है, इसलिए लॉग की सख़्त सीमाएँ हैं:

  • हर प्रोजेक्ट के लिए 120 कॉल, सबसे पुरानी पहले हटती है।
  • हर कॉल के लिए आउटपुट के 32,000 अक्षर, आख़िरी हिस्सा रखते हुए, जहाँ एरर और एग्ज़िट कोड होते हैं।
  • हर कॉल के लिए कमांड या SQL के 2,000 अक्षर।
  • लाइव आउटपुट के लिए हर कॉल का एक अपडेट संदेश हर 120 ms पर, टर्मिनल आउटपुट के हर टुकड़े पर एक नहीं।
  • ख़ाली बैठे समय कोई टाइमर नहीं। जब तक कोई एजेंट रिमोट टूल कॉल नहीं करता, लॉग की कोई क़ीमत नहीं।

दर्ज करने का काम एक ही जगह होता है: वह ब्रिज जिससे होकर हर CLI की टूल कॉल जाती हैं। इसीलिए यह Claude Code, Codex, Antigravity CLI या ऐप जो भी दूसरा CLI चलाता है, सबके लिए एक जैसा काम करता है, बिना किसी प्रोवाइडर के लिए अलग कोड के।

हमने जो सीमा चुनी: मशीन से कुछ बाहर नहीं जाता

लॉग डेस्कटॉप ऐप की मेमोरी में रखा जाता है और ऐप बंद करते ही ग़ायब हो जाता है। यह हमारे सर्वर से सिंक नहीं होता, जो हमारे लिए असामान्य है: AgentsRoom में लगभग बाक़ी सब कुछ आपके खाते के साथ एक कंप्यूटर से दूसरे पर चलता है।

यह नहीं, जानबूझकर। सर्वर पर env के आउटपुट में सीक्रेट होते हैं। ग्राहकों की टेबल पर SELECT में ग्राहकों का डेटा होता है। जो टूल इन्हें दिखाने के लिए बना है, उसे इन्हें किसी नई जगह कॉपी भी नहीं करना चाहिए।

फ़ोन एजेंट की प्रोफ़ाइल से यही लॉग फ़ॉलो कर सकता है (मोबाइल ऐप 2.47 और उसके बाद)। स्ट्रीम आपके कंप्यूटर से आपके फ़ोन तक एंड-टू-एंड एन्क्रिप्टेड कनेक्शन से जाती है, बाहर निकलने से पहले सीक्रेट छिपा दिए जाते हैं (API कुंजियाँ, KEY=value जोड़े, URL में पासवर्ड, टोकन), और किसी सर्वर पर कुछ भी स्टोर नहीं होता। वही कॉल पहले की तरह एजेंट की बातचीत में भी पढ़ी जा सकती है।

Claude Code के ऑडिट लॉग एक अलग चीज़ हैं

अगर आपने "Claude Code audit log" खोजा, तो शायद आपको Claude Enterprise के लिए Anthropic का Compliance API मिला: एक एक्टिविटी फ़ीड, ऑडिट लॉग इवेंट और, Enterprise खाते में साइन-इन किए हुए लोकल सेशन के लिए, सेशन ट्रांसक्रिप्ट। यह एडमिन और कंप्लायंस टीमों के लिए बना है, पूरे संगठन को कवर करता है, और आप इसे सब हो जाने के बाद पढ़ते हैं।

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

अगर आप AgentsRoom इस्तेमाल नहीं करते

CLI पहले से जो देते हैं, उससे आप इसका बड़ा हिस्सा पा सकते हैं।

हर शेल कमांड को उसके शुरू होते ही लॉग करें। Claude Code के हुक हर टूल कॉल से पहले एक कमांड चला सकते हैं। हुक गाइड यह पैटर्न दिखाता है: Bash टूल पर एक PreToolUse हुक जो jq -r .tool_input.command को एक लॉग फ़ाइल में भेजता है। उस फ़ाइल पर दूसरे टर्मिनल में tail -f चलाइए और एजेंट के भेजते ही आपको हर कमांड दिखेगी, ssh लाइनें भी।

जब आउटपुट चाहिए तो ट्रांसक्रिप्ट पढ़ें। हुक आपको कमांड देता है, यह नहीं कि सर्वर ने क्या जवाब दिया। उसके लिए, ~/.claude/projects/ (या Codex के लिए ~/.codex/sessions/) के अंदर की सेशन फ़ाइल में हर कॉल का पूरा नतीजा है।

एजेंट को सर्वर पर उसका अपना खाता दें। एक अलग यूज़र से सर्वर के auth लॉग में हर कनेक्शन किसके नाम है यह पता चलता है, और अगर आपके सर्वर auditd चलाते हैं, तो उस यूज़र के लिए execve पर एक नियम उसके शुरू किए हर प्रोसेस को दर्ज करता है, सर्वर की तरफ़, जहाँ एजेंट उसे छोड़ नहीं सकता।

क्रेडेंशियल को एजेंट की पहुँच से दूर रखें। अगर कनेक्ट करने का अकेला तरीक़ा एक पासवर्ड है जो एजेंट को आपसे माँगना पड़ता है, तो आपको चैट में sshpass लाइनें दिखेंगी। ऐसी कुंजी इस्तेमाल करें जिसे एजेंट कभी न पढ़े, या ऐसा टूल जो उसकी ओर से सीक्रेट सँभाले। हमने प्रॉम्प्ट में डाले बिना एजेंट को सीक्रेट देने पर एक अलग गाइड लिखी है।

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

लोग असल में जो पूछते हैं

क्या मैं देख सकता हूँ कि Claude Code किसी रिमोट सर्वर पर काम करते हुए क्या कर रहा है?

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

Claude Code अपनी चलाई कमांड का रिकॉर्ड कहाँ रखता है?

सेशन ट्रांसक्रिप्ट में, जो ~/.claude/projects/ के अंदर एक JSONL फ़ाइल है, हर प्रोजेक्ट के लिए एक फ़ोल्डर और हर सेशन के लिए एक फ़ाइल। हर टूल कॉल उसमें एक लाइन है, अपने इनपुट और अपने नतीजे के साथ। Codex भी हर सेशन के लिए ऐसी ही फ़ाइल ~/.codex/sessions/ के अंदर रखता है। दोनों पूरी हैं, और दोनों CLI के लिए लिखी गई हैं ताकि वह सेशन फिर से शुरू कर सके, इसलिए नहीं कि कोई इंसान उन्हें सरसरी नज़र से पढ़े।

क्या यह Claude Code के ऑडिट लॉग जैसा ही है?

नहीं। लोग इस नाम से जिन ऑडिट लॉग को ढूँढते हैं, वे संगठन के स्तर के रिकॉर्ड हैं जो Anthropic अपने Enterprise प्लान में Compliance API के ज़रिए देता है: एक एक्टिविटी फ़ीड, ऑडिट इवेंट और, साइन-इन किए हुए सेशन के लिए, ट्रांसक्रिप्ट, जिन्हें बाद में कोई एडमिन पढ़ता है। वे बताते हैं कि संगठन में किसने क्या किया। एक सर्वर पर चल रही कमांड का लाइव दृश्य एक अलग इंसान के लिए एक अलग टूल है।

एजेंट जो भी कमांड चलाए, उसके लिए एक टर्मिनल टैब क्यों न खोला जाए?

हमने यह रास्ता आज़माया और उसे मापा: प्रोडक्शन की एक समस्या पर काम कर रहे एक एजेंट ने एक ही सेशन में 166 रिमोट कमांड चलाईं। हर कमांड का एक टैब हो तो दस मिनट बाद टैब बार किसी काम का नहीं रहता। जो काम करता है वह है हर कनेक्शन का एक लॉग, जिसमें हर कॉल एक एंट्री है, अपनी कमांड, अपने लाइव आउटपुट, अपने एग्ज़िट कोड और अपनी अवधि के साथ।

क्या AgentsRoom कमांड और उनका आउटपुट किसी सर्वर पर भेजता है?

नहीं। लॉग डेस्कटॉप ऐप की मेमोरी में रहता है, हर प्रोजेक्ट के लिए अधिकतम 120 कॉल, और ऐप बंद करते ही मिट जाता है। फ़ोन एजेंट की प्रोफ़ाइल से इसे फ़ॉलो कर सकता है (मोबाइल ऐप 2.47 और उसके बाद): स्ट्रीम आपके कंप्यूटर से आपके फ़ोन तक एंड-टू-एंड एन्क्रिप्टेड कनेक्शन से जाती है, सीक्रेट छिपाकर, और किसी सर्वर पर कुछ भी स्टोर नहीं होता।

एजेंट की कौन-सी कमांड गतिविधि टैब में नहीं दिखतीं?

सिर्फ़ वही कॉल दर्ज होती हैं जो AgentsRoom के टूल से होकर जाती हैं: ssh_exec, ssh_transfer, db_query, db_schema और kube_kubectl। एजेंट अपने ख़ुद के शेल टूल से जो कमांड चलाता है, जैसे सीधी ssh या psql लाइन, वह उसके टर्मिनल और उसके ट्रांसक्रिप्ट में है, लॉग में नहीं। commands_run और ssh_connect जानबूझकर छोड़े गए हैं, क्योंकि वे पहले से एक टर्मिनल टैब खोलते हैं जिसे आप देख सकते हैं।

छोटे में

सर्वर पर काम कर रहे एजेंट को आपसे दो चीज़ें चाहिए: काम करने का ऐसा तरीक़ा जिसमें आपका पासवर्ड शामिल न हो, और ऐसा तरीक़ा जिससे आप देख सकें कि वह क्या कर रहा है, उसी वक़्त जब वह कर रहा है। दूसरी के बिना पहली आपको सब हो जाने के बाद JSON पढ़ते छोड़ देती है। पहली के बिना दूसरी को वह एजेंट बायपास कर देता है जो sshpass लाइनें पेस्ट करता है।

आख़िर में हमारे पास हर कनेक्शन का एक लॉग रहा, सीमित, और आपकी मशीन पर रखा हुआ। आज़माना चाहें तो AgentsRoom मुफ़्त डाउनलोड होता है, और SSH कनेक्शन पेज सेटअप क़दम-दर-क़दम दिखाता है। अगर आप सिर्फ़ अपने CLI के साथ रहना पसंद करते हैं, तो PreToolUse हुक और एक tail -f से शुरू करें: इसमें पाँच मिनट लगते हैं और फिर आपको कभी नहीं सोचना पड़ेगा कि आख़िरी छह टूल कॉल क्या थीं।

AgentsRoom डाउनलोड करें

अपने सभी AI एजेंट्स को, अपने सभी प्रोजेक्ट्स पर, एक ही विंडो से चलाएं।

मुफ़्तAgentsRoom डाउनलोड करें

कंपेनियन ऐप: चलते-फिरते अपने एजेंट्स मॉनिटर करें

Claude, Codex, Antigravity CLI या किसी अन्य AI प्रदाता का उपयोग करें।

एक्सटेंशन इंस्टॉल करें
Chrome Web Store

बग और अनुरोध सीधे अपने सार्वजनिक बैकलॉग में भेजें।

मल्टी-प्रोजेक्ट
मल्टी-प्रोवाइडर
मल्टी-एजेंट
लाइव स्टेटस
फाइल डिफ और कमिट
मोबाइल ऐप
लाइव प्रीव्यू
एजेंट टीमें
ब्राउज़र ऑटोमेशन
बैकलॉग-संचालित डेव
प्रॉम्प्ट लाइब्रेरी
स्किल्स लाइब्रेरी
सभी सुविधाएँ देखें

पढ़ते रहें