Claude Code spend tracker के प्रकार और तुलना
Claude Code spend tracker के तीन मुख्य प्रकारों की तुलना करें। जानें कि कैसे local log parsers, Anthropic dashboard और OpenTelemetry stack अलग डेटा दिखाते हैं।
Claude Code spend tracker वास्तव में क्या पढ़ता है
प्रत्येक Claude Code spend tracker तीन डेटा स्रोतों में से एक को पढ़ता है, और स्रोत यह तय करता है कि वह किस प्रश्न का उत्तर दे सकता है। एक log parser आपकी अपनी डिस्क पर मौजूद session transcript फाइलों को पढ़ता है। एक dashboard उन usage records को पढ़ता है जिन्हें Anthropic आपके खाते या आपके संगठन के लिए रखता है। एक metrics backend उस OpenTelemetry (OTel) stream को पढ़ता है जिसे Claude Code चालू करने पर उत्सर्जित (emit) करता है। तीनों एक ही समय में सही हो सकते हैं और फिर भी उनमें असहमति हो सकती है, क्योंकि वे अलग-अलग चीजों की गणना कर रहे होते हैं।
यह गाइड tokens की दोबारा व्याख्या नहीं करती है। Claude Code token usage की गणना कैसे करता है में input, output, cache writes और cache reads शामिल हैं, और जब तक वह हिस्सा स्पष्ट न हो, किसी भी dashboard का अधिक अर्थ नहीं है। यहाँ प्रश्न अधिक सीमित है: प्रत्येक टूल के स्वरूप के लिए, वह क्या देख सकता है, और वह क्या कभी नहीं देख सकता है।
एक ही दिन में तीन Claude Code spend trackers क्यों दिखाई दिए
एक ही दिन में तीन अलग-अलग Claude Code spend trackers पोस्ट किए गए। ये एक ही टूल के तीन संस्करण नहीं थे, और यही बात इन्हें उपयोगी बनाती है। एक ने local session files को पार्स किया। दूसरे ने account usage screens को रैप किया। तीसरा एक hosted tracing backend था जिसे आप स्वयं run करते हैं।
वे एक साथ इसलिए आए क्योंकि agent session की लागत अब स्पष्ट नहीं रह गई है। एक chat की लागत लगभग उतनी ही होती है जितनी आप स्क्रीन पर देख सकते हैं। एक agent बीस फाइलें पढ़ता है, test suite चलाता है, और हर टर्न पर पूरी बातचीत को फिर से भेजता है, इसलिए बिल उस context से बढ़ता है जिसे आपने कभी टाइप ही नहीं किया। subscription पर, Claude Code जो session dollar figure दिखाता है, वह एक अनुमान है जिसे Anthropic बिलिंग के लिए अप्रासंगिक बताता है, और जो संख्या मायने रखती है वह एक usage bar है जो कुछ दिनों में दूसरों की तुलना में तेजी से खाली हो जाती है। इन तीनों में से प्रत्येक टूल उस अंतर के एक अलग हिस्से को पूरा करता है।
आकार 1: एक स्थानीय लॉग पार्सर आपको बताता है कि आज का खर्च क्या है
Claude Code प्रत्येक बातचीत को ~/.claude/projects/<project>/<session-id>.jsonl पर JSON Lines (JSONL) के रूप में संग्रहीत करता है, जहाँ <project> आपका वर्किंग डायरेक्टरी पाथ है जिसमें गैर-अल्फ़ान्यूमेरिक वर्णों को - से बदल दिया गया है। उस फ़ाइल में प्रत्येक असिस्टेंट टर्न में उसके अनुरोध के लिए टोकन काउंट होते हैं। एक लॉग पार्सर उन्हें जोड़ता है और उनकी कीमत निर्धारित करता है।
ccusage वह है जिस पर अधिकांश लोग पहुँचते हैं। इसे किसी इंस्टॉलेशन की आवश्यकता नहीं है:
npx ccusage@latest daily
npx ccusage@latest daily --breakdown
npx ccusage@latest blocks
npx ccusage@latest session --jsondaily तिथि के अनुसार कुल योग दिखाता है। --breakdown प्रत्येक पंक्ति को मॉडल के आधार पर विभाजित करता है, जिससे आपको पता चलता है कि Opus के साथ बिताई गई एक दोपहर पूरे सप्ताह के खर्च का अधिकांश हिस्सा है। blocks उस पाँच-घंटे की विंडो के आधार पर समूहित करता है जिस पर सब्सक्रिप्शन रीसेट होता है। session प्रति बातचीत कुल योग दिखाता है, और daily --instances प्रोजेक्ट के अनुसार समूहित करता है ताकि आप देख सकें कि कौन सा रिपॉजिटरी महंगा है। सीमा निर्धारित करने के लिए --since और --until जोड़ें, और उस तिथि प्रारूप के लिए npx ccusage@latest daily --help चलाएँ जिसकी आपका वर्शन अपेक्षा करता है। अक्टूबर 2026 तक यह अन्य एजेंट CLI को भी पढ़ता है, जिसमें Codex और OpenCode शामिल हैं, जो तब मायने रखता है जब आप उनकी तुलना कर रहे हों।
मूल्य निर्धारण एक मॉडल मूल्य तालिका से आता है, और टूल में तीन कॉस्ट मोड हैं। --mode auto उस costUSD मान का उपयोग करता है जिसे Claude Code ने फ़ाइल में लिखा है जब वह मौजूद होता है, और जब वह नहीं होता है तो टोकन काउंट से गणना करता है। --mode calculate हमेशा टोकन से गणना करता है और किसी भी रिकॉर्ड की गई लागत को अनदेखा करता है। --mode display केवल रिकॉर्ड की गई लागत दिखाता है और उन पंक्तियों के लिए $0.00 प्रिंट करता है जिनमें कोई लागत नहीं है। यदि कोई कुल योग गलत लगता है, तो उसी रिपोर्ट को calculate के तहत और फिर display के तहत चलाएँ। उनके बीच एक बड़ा अंतर यह दर्शाता है कि अधिकांश प्रविष्टियों में कोई रिकॉर्ड की गई लागत नहीं है, इसलिए आप जो कुछ भी पढ़ रहे हैं वह एक अनुमान है। यदि आप अनुबंधित दरों पर भुगतान करते हैं, तो ccusage.json कॉन्फ़िगरेशन फ़ाइल में defaults के तहत pricingOverrides व्यक्तिगत मॉडल के लिए मूल्य को बदल देता है।
वही डेटा आपके प्रॉम्प्ट को फीड कर सकता है। ccusage statusline Claude Code स्टेटस बार के लिए एक कॉम्पैक्ट लाइन प्रिंट करता है, जिसे किसी भी अन्य स्टेटस लाइन कमांड की तरह ~/.claude/settings.json में जोड़ा जाता है। सेटिंग्स ब्लॉक और उसे प्राप्त होने वाले फ़ील्ड के लिए Claude Code स्टेटसलाइन बनाना देखें।
लॉग पार्सर जो नहीं देख सकता, वह कुछ भी ऐसा है जो इस मशीन पर नहीं हुआ। दूसरा लैपटॉप, claude.ai पर एक सत्र, किसी टीम के साथी का काम: वे ट्रांसक्रिप्ट उन डिस्क पर रहते हैं। पुराना डेटा भी गायब है, क्योंकि cleanupPeriodDays सेटिंग के तहत डिफ़ॉल्ट रूप से 30 दिनों के बाद ट्रांसक्रिप्ट को हटा दिया जाता है, इसलिए पिछली तिमाही का डेटा तब तक चला गया है जब तक आपने उसे आर्काइव नहीं किया था।
एक और जोखिम है, और वह संरचनात्मक है। Anthropic का दस्तावेज़ीकरण बताता है कि प्रविष्टि प्रारूप Claude Code के लिए आंतरिक है और वर्शन के बीच बदलता रहता है, इसलिए जो स्क्रिप्ट इन फ़ाइलों को सीधे पार्स करती हैं, वे किसी भी रिलीज़ पर टूट सकती हैं। यह इस आकार के हर टूल पर लागू होता है। यही कारण है कि JSONL पर हाथ से लिखा गया jq वन-लाइनर दिखने से कहीं अधिक खराब विचार है: मेंटेन किए गए पार्सर आपके लिए प्रारूप परिवर्तनों को ट्रैक करते हैं, और आपका वन-लाइनर उस दिन एक आत्मविश्वासपूर्ण गलत संख्या रिपोर्ट करेगा जिस दिन कोई फ़ील्ड रीनेम किया जाएगा।
अंत में, सब्सक्रिप्शन पर डॉलर के आंकड़े के साथ एक चेतावनी की आवश्यकता है। आपके Pro या Max प्लान सीमा के भीतर का उपयोग प्रति टोकन बिल नहीं किया जाता है, इसलिए यह संख्या वह है जो आपके टोकन की लागत लिस्ट API दरों पर होती। यह मापता है कि आपका उपयोग कितना अधिक है। यह आपका बिल नहीं है। अपवाद उपयोग क्रेडिट हैं: यदि आप उन्हें चालू करते हैं, तो प्लान सीमा से अधिक का उपयोग मानक API दरों पर एक अलग शुल्क के रूप में बिल किया जाता है, और claude.ai उस महीने का खर्च Settings > Usage के तहत दिखाता है। यदि वास्तविक प्रश्न यह है कि किस प्लान पर रहना है, तो वह तुलना अपने आप में एक अभ्यास है: Claude सब्सक्रिप्शन के मुकाबले API बिलिंग देखें।
आकृति 2: इन-बिल्ट यूसेज स्क्रीन आपको बताती है कि किस मॉडल ने बजट खर्च किया
Claude Code अपनी रिपोर्टिंग खुद तैयार करता है और ज्यादातर लोग इसे कभी नहीं खोलते। किसी सेशन के भीतर /usage चलाएं। सबसे ऊपर मौजूद Session ब्लॉक मॉडल के अनुसार टोकन और वर्तमान सेशन के लिए डॉलर का आंकड़ा दिखाता है। यह आंकड़ा मानक लिस्ट रेट्स पर टोकन काउंट से स्थानीय रूप से कैलकुलेट किया जाता है, जब तक कि किसी एडमिनिस्ट्रेटर ने मैनेज्ड सेटिंग्स में modelPricing टेबल सेट न की हो, ऐसी स्थिति में Total cost लाइन at your organization's configured rates दर्शाती है। किसी भी स्थिति में, यह आंकड़ा एक अनुमान है जो आपके इनवॉइस से भिन्न हो सकता है। Pro या Max प्लान पर Anthropic का कहना है कि यह बिलिंग के लिए प्रासंगिक नहीं है क्योंकि वह उपयोग प्लान में शामिल होता है। जब /clear नया कन्वर्सेशन शुरू करता है, तो टोटल रीसेट हो जाते हैं।
Pro, Max, Team या सीट-आधारित Enterprise प्लान पर, वही स्क्रीन दिखाती है कि आपने अपनी प्लान लिमिट का कितना उपयोग किया है। Usage-based Enterprise में खत्म होने के लिए कोई शामिल अलाउंस नहीं होता, क्योंकि हर टोकन API रेट्स पर बिल किया जाता है। इन प्लान्स पर, स्क्रीन हालिया उपयोग को स्किल्स, सब-एजेंट्स, प्लगइन्स और व्यक्तिगत MCP सर्वर्स के लिए कुल प्रतिशत के रूप में भी दर्शाती है। यह उन व्यवहारों को फ्लैग करती है जो हालिया उपयोग का 10% या उससे अधिक हिस्सा लेते हैं, जैसे कि लंबा कॉन्टेक्स्ट या कैश मिस। पिछले 24 घंटों और पिछले 7 दिनों के बीच स्विच करने के लिए d या w दबाएं। ये आंकड़े अनुमानित हैं और इस मशीन पर स्थानीय सेशन हिस्ट्री से कैलकुलेट किए जाते हैं, इसलिए दूसरे डिवाइस का उपयोग इसमें काउंट नहीं होता। जब वह बार खाली हो जाता है, तो स्क्रीन आपको बताती है कि विंडो बंद हो गई है, लेकिन काम जारी रखने का तरीका नहीं बताती, और लिमिट हिट करने के बाद क्या करें मॉडल, कॉन्टेक्स्ट और प्लान के बारे में एक अलग निर्णय है।
एक से अधिक डेवलपर होने पर, ये आंकड़े अकाउंट लेवल पर चले जाते हैं। एक API ऑर्गेनाइजेशन को कंसोल यूसेज पेज, प्रति सदस्य खर्च और एक्सेप्टेड लाइन्स के साथ Claude Code डैशबोर्ड, और एक Claude Code Analytics API मिलती है जो एडमिन की के साथ वही दैनिक प्रति-उपयोगकर्ता मेट्रिक्स लौटाती है। Teams और Enterprise प्लान्स को एडमिन कंसोल में CSV एक्सपोर्ट के साथ खर्च की रिपोर्ट मिलती है, जो दैनिक रूप से अपडेट होती है, लेकिन यह केवल यूसेज-क्रेडिट खर्च को कवर करती है: सीट अलाउंस के भीतर का उपयोग डॉलर में मीटर नहीं किया जाता। Enterprise में एनालिटिक्स API भी शामिल है। आप इनमें से क्या देखते हैं, यह इस पर निर्भर करता है कि प्रत्येक डेवलपर ने कैसे साइन इन किया है, इसलिए एक मिश्रित ऑर्गेनाइजेशन को दो रिपोर्ट पढ़नी पड़ती हैं और उन्हें हाथ से जोड़ना पड़ता है।
बजट निर्धारित करने के लिए, अक्टूबर 2026 तक Anthropic के कॉस्ट डॉक्यूमेंटेशन में प्रकाशित आंकड़ा प्रति सक्रिय दिन प्रति डेवलपर लगभग $13 और प्रति माह प्रति डेवलपर $150 से $250 के बीच है, जिसमें 90% उपयोगकर्ता प्रति सक्रिय दिन $30 से कम खर्च करते हैं। इसे एंटरप्राइज डिप्लॉयमेंट से प्राप्त एक प्रकाशित बेंचमार्क मानें, न कि अपनी टीम के लिए कोई भविष्यवाणी। एक्सट्रापोलेट करने से पहले एक पायलट ग्रुप चलाएं और मापें।
डैशबोर्ड जो नहीं देख सकते, वह दिन और व्यक्ति से नीचे का विवरण है। वे आपको बताएंगे कि मंगलवार को ज्यादातर उपयोग Opus का था। वे आपको यह नहीं बताएंगे कि किस प्रॉम्प्ट, किस रिपॉजिटरी या किस CI जॉब ने ऐसा किया। वे पीछे भी चलते हैं, क्योंकि ऑर्गेनाइजेशन रिपोर्ट्स दैनिक रूप से अपडेट होती हैं, इसलिए वे आज दोपहर किसी अनियंत्रित एजेंट को पकड़ने के बजाय समीक्षा करने का एक टूल हैं। अनियंत्रित एजेंट को पकड़ने के लिए रिपोर्ट्स नहीं, बल्कि लिमिट्स की आवश्यकता होती है, जो VPS पर एजेंट की लागत को सीमित रखने का विषय है।
आकृति 3: आपका अपना OpenTelemetry स्टैक आपको बताता है कि कौन सा प्रॉम्प्ट रिग्रेस हुआ
जब आप एक environment variable सेट करते हैं, तो Claude Code OpenTelemetry मेट्रिक्स और इवेंट्स उत्सर्जित (emit) करता है। यह एकमात्र विकल्प है जो प्रति-उपयोगकर्ता टोकन और लागत डेटा को आपके द्वारा नियंत्रित सिस्टम में लगभग वास्तविक समय में स्ट्रीम करता है। मेट्रिक्स में USD में claude_code.cost.usage, टोकन में claude_code.token.usage, claude_code.session.count और claude_code.active_time.total शामिल हैं।
टोकन मेट्रिक सबसे दिलचस्प है, क्योंकि इसके एट्रिब्यूट्स महत्वपूर्ण हैं। प्रत्येक डेटा पॉइंट में type होता है, जो input, output, cacheRead या cacheCreation हो सकता है, साथ ही model और query_source भी होता है, जो main, subagent या auxiliary हो सकता है। इसमें agent.name, skill.name, mcp_server.name और mcp_tool.name भी शामिल होते हैं। आपके द्वारा कॉन्फ़िगर किए गए MCP सर्वर्स और आपके स्वयं के कस्टम सब-एजेंट्स के नाम custom के रूप में आते हैं, जब तक कि आप OTEL_LOG_TOOL_DETAILS=1 सेट न करें, जो टूल इवेंट्स में Bash कमांड्स और टूल इनपुट भी जोड़ता है। यह उन सवालों के जवाब देने के लिए पर्याप्त है जिन तक कोई डैशबोर्ड नहीं पहुँच सकता: बिल का कितना हिस्सा आपके अपने टर्न्स के बजाय सब-एजेंट्स का है, क्या किसी एक MCP सर्वर ने आपके इनपुट टोकन्स को दोगुना कर दिया है, या क्या CLAUDE.md में संपादन के बाद कैश रीड्स कम हो गए हैं। कैश का व्यवहार आमतौर पर वह जगह है जहाँ आश्चर्य छिपा होता है, और जब प्रॉम्प्ट कैशिंग खुद का खर्च निकाल लेती है यह बताता है कि आप क्या देख रहे हैं।
एक सुधार जो करना आवश्यक है, क्योंकि यह इस विषय पर हर चर्चा में सामने आता है। Langfuse एक अच्छा सेल्फ-होस्टेड ट्रेसिंग बैकएंड है, और इसे VPS पर चलाने की जानकारी एजेंट ट्रेसिंग के लिए Langfuse को सेल्फ-होस्ट करना में दी गई है। इसका OTLP एंडपॉइंट केवल ट्रेसेस स्वीकार करता है। डिफ़ॉल्ट रूप से Claude Code मेट्रिक्स और लॉग इवेंट्स एक्सपोर्ट करता है, स्पैन्स (spans) नहीं, इसलिए OTEL_EXPORTER_OTLP_ENDPOINT को Langfuse की ओर पॉइंट करने से प्रोजेक्ट खाली रहता है और आपको कोई उपयोगी त्रुटि संदेश नहीं मिलता है। स्पैन एक्सपोर्ट मौजूद है, लेकिन यह एक बीटा फीचर है जो तब तक बंद रहता है जब तक आप CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 और OTEL_TRACES_EXPORTER सेट नहीं करते। Langfuse का अपना Claude Code इंटीग्रेशन एक अलग रास्ता अपनाता है: एक Stop हुक, या इसे इंस्टॉल करने वाला प्लगइन, प्रत्येक रिस्पॉन्स के बाद सेशन ट्रांसक्रिप्ट को पढ़ता है और उन्हें ट्रेसेस में बदल देता है, इसलिए यह लॉग पार्सर की स्थानीय-केवल सीमाओं को साझा करता है। Langfuse उन एजेंट्स के लिए सही टूल है जिन्हें आप स्वयं API पर बनाते हैं, जहाँ आपका अपना कोड प्रत्येक स्पैन को उसके प्रॉम्प्ट, मॉडल और लागत के साथ बनाता है। Claude Code CLI से खर्च के कुल योग के लिए, एक मेट्रिक्स स्टोर सबसे उपयुक्त है।
अपने VPS पर Claude Code खर्च ट्रैकिंग सेट अप करें
दो सेवाएं पर्याप्त हैं: मेट्रिक्स प्राप्त करने के लिए एक कलेक्टर और उन्हें स्टोर करने के लिए Prometheus। दोनों को सार्वजनिक इंटरनेट से दूर रखें, क्योंकि एक खुला OTLP पोर्ट उसे खोजने वाले किसी भी व्यक्ति से डेटा स्वीकार कर लेता है। /opt/ccmetrics/compose.yaml लिखें:
services:
collector:
image: otel/opentelemetry-collector-contrib:latest
command: ["--config=/etc/otel/config.yaml"]
volumes:
- ./collector.yaml:/etc/otel/config.yaml:ro
ports:
- "10.8.0.1:4318:4318"
restart: unless-stopped
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prom-data:/prometheus
ports:
- "127.0.0.1:9090:9090"
restart: unless-stopped
volumes:
prom-data:10.8.0.1 WireGuard टनल के अंदर सर्वर का पता है, इसलिए कलेक्टर केवल आपकी मशीनों से ही पहुंच योग्य है और कहीं से नहीं। पोर्ट के सामने वाला पता यहां वास्तविक सुरक्षा प्रदान करता है, क्योंकि प्रकाशित Docker पोर्ट ufw द्वारा फ़िल्टर नहीं किए जाते हैं: देखें Docker द्वारा प्रकाशित पोर्ट ufw को क्यों बायपास करते हैं। टनल को सेट अप करना अपने VPS पर WireGuard VPN के माध्यम से किया जाता है।
/opt/ccmetrics/collector.yaml:
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
processors:
batch:
exporters:
prometheus:
endpoint: 0.0.0.0:8889
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheus]/opt/ccmetrics/prometheus.yml। पोर्ट 8889 कभी भी होस्ट पर प्रकाशित नहीं होता है, क्योंकि Prometheus सेवा नाम द्वारा Compose नेटवर्क पर कलेक्टर तक पहुंचता है:
global:
scrape_interval: 30s
scrape_configs:
- job_name: claude-code
static_configs:
- targets: ["collector:8889"]cd /opt/ccmetrics
docker compose up -d
docker compose logs collectorकलेक्टर लॉग Everything is ready. Begin running and processing data. पर समाप्त होना चाहिए। यदि लॉग कॉन्फ़िगरेशन त्रुटि पर रुक जाता है, तो इसका मतलब है कि YAML पार्स नहीं हुआ है, और कंटेनर लूप में रीस्टार्ट होता रहेगा।
अब Claude Code को इसकी ओर निर्देशित करें। प्रत्येक मशीन पर जो Claude Code चलाती है, ~/.claude/settings.json में यह जोड़ें:
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "none",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://10.8.0.1:4318",
"OTEL_METRIC_EXPORT_INTERVAL": "10000"
}
}एक सत्र शुरू करें, एक प्रॉम्प्ट भेजें, एक्सपोर्ट अंतराल (यहां 10 सेकंड, डिफ़ॉल्ट रूप से 60 सेकंड) तक प्रतीक्षा करें, फिर Prometheus से पूछें कि उसने क्या सीखा है:
curl -s http://localhost:9090/api/v1/label/__name__/values | grep -o 'claude_code[a-z_]*'आपको claude_code_ से शुरू होने वाले कई नाम मिलने चाहिए। एक्सपोर्टर डॉट्स को अंडरस्कोर में बदल देता है और यूनिट जोड़ देता है, इसलिए सटीक स्ट्रिंग्स आपके कलेक्टर संस्करण पर निर्भर करती हैं। खाली परिणाम का मतलब है कि कुछ भी प्राप्त नहीं हुआ है। जांचें कि प्रोटोकॉल और पोर्ट मेल खाते हैं, क्योंकि http/protobuf 4318 पर जाता है और grpc 4317 पर जाता है, और बेमेल होने पर यह चुपचाप विफल हो जाता है। claude --debug-file /tmp/claude-debug.log चलाएं और उस फ़ाइल में [3P telemetry] लाइनों को देखें, जहां Claude Code OTel एक्सपोर्ट त्रुटियों की रिपोर्ट करता है।
एक मशीन और बिना सर्वर के लिए, उपरोक्त सभी को छोड़ दें। OTEL_METRICS_EXPORTER=prometheus सेट करें और Claude Code स्वयं http://localhost:9464/metrics पर एक स्क्रैप एंडपॉइंट एक्सपोज़ करता है। जब prometheus एकमात्र सूचीबद्ध एक्सपोर्टर होता है, तो Claude Code एक्सपोर्ट किए गए मेट्रिक्स से USD, tokens और s यूनिट्स को हटा देता है ताकि स्क्रैप वैध Prometheus टेक्स्ट फॉर्मेट में रहे। मेट्रिक के नाम नहीं बदलते हैं, और एक सेटिंग जो एक्सपोर्टर्स को जोड़ती है, जैसे कि otlp,prometheus, यूनिट्स को बनाए रखती है।
इस सेटअप के साथ एक गोपनीयता निर्णय जुड़ा है। डिफ़ॉल्ट रूप से केवल काउंट और मेटाडेटा मशीन से बाहर जाते हैं, कोई प्रॉम्प्ट टेक्स्ट और कोई टूल आउटपुट नहीं। OTEL_LOG_USER_PROMPTS=1 एक्सपोर्ट किए गए इवेंट्स में प्रॉम्प्ट टेक्स्ट जोड़ता है और OTEL_LOG_TOOL_CONTENT=1 ट्रेस स्पैन में टूल आउटपुट जोड़ता है, इसलिए एक बार जब आप किसी भी सिग्नल को एक्सपोर्ट करते हैं, तो आपके टेलीमेट्री बॉक्स में सोर्स कोड और संदर्भ में मौजूद अन्य सभी चीजें आ जाती हैं। इन्हें सोच-समझकर चालू करें, और पहले एजेंट संदर्भ से सीक्रेट्स को दूर रखना पढ़ें।
स्क्रिप्टेड और CI रन के लिए खर्च को ट्रैक करना
Non-interactive रन लोगों को आश्चर्यचकित करते हैं, क्योंकि उस समय कोई भी स्क्रीन नहीं देख रहा होता है। claude -p, --output-format json के साथ अपने result payload में उस रन की लागत की रिपोर्ट करता है:
claude -p "summarise the failing tests" --output-format json | jq '.total_cost_usd'इस payload में total_cost_usd और प्रति-मॉडल (per-model) विवरण शामिल होता है, इसलिए एक CI जॉब बिना किसी डैशबोर्ड के अपने खर्च को रिकॉर्ड कर सकती है। हर स्थानीय आंकड़े की तरह, यह एक client-side अनुमान है। यदि कोई रन --continue या --resume के साथ बातचीत जारी रखता है, तो वह पिछली बातचीत सहित पूरी बातचीत के कुल खर्च की रिपोर्ट करता है। इस मान (value) को किसी फाइल में जोड़ें, या इसे ऊपर बताए गए collector में एक metric के रूप में भेजें। यह उपलब्ध सबसे सस्ता उपयोगी खर्च ट्रैकिंग तरीका है, और इसमें प्रति रन एक jq कॉल का खर्च आता है।
विफलता के प्रकार और आप क्या देखेंगे
रिपोर्ट खाली है। npx ccusage@latest daily यदि कोई पंक्ति प्रिंट नहीं हो रही है, तो इसका मतलब है कि यह उस स्थान को नहीं पढ़ पा रहा है जहाँ Claude Code लिखता है। CLAUDE_CONFIG_DIR उस स्थान को बदल देता है, और पार्सर को इसके बारे में सूचित करना आवश्यक है। यदि पंक्तियाँ मौजूद हैं लेकिन लगभग एक महीने पहले रुक गई हैं, तो यह cleanupPeriodDays है जो डिज़ाइन के अनुसार काम कर रहा है: डिफ़ॉल्ट रूप से ट्रांसक्रिप्ट 30 दिनों के बाद हटा दिए जाते हैं।
दो मशीनें अलग-अलग कुल योग दिखा रही हैं। यह अपेक्षित है और कोई बग नहीं है। /usage ब्रेकडाउन और कोई भी लॉग पार्सर केवल स्थानीय सत्र इतिहास (local session history) को पढ़ते हैं, इसलिए किसी अन्य डिवाइस या claude.ai से किया गया उपयोग दोनों में अनुपस्थित रहता है।
स्थानीय कुल योग इनवॉइस से मेल नहीं खाता है। स्थानीय आंकड़े मानक सूची दरों पर टोकन गणना से निकाले जाते हैं, जब तक कि आप अनुबंधित दरें कॉन्फ़िगर न करें: /usage के लिए प्रबंधित सेटिंग्स में एक modelPricing तालिका, या ccusage के लिए pricingOverrides। सब्सक्रिप्शन पर, प्लान सीमा के भीतर का उपयोग प्रति टोकन बिल नहीं किया जाता है, केवल उपयोग क्रेडिट बिल किए जाते हैं। API बिलिंग के लिए Console उपयोग पृष्ठ ही आधिकारिक है।
आपके द्वारा समान कार्य करने के बावजूद लागत बढ़ गई। कुछ भी करने से पहले कैश कॉलम की जाँच करें। एक लंबा सत्र हर टर्न पर अपना पूरा इतिहास फिर से भेजता है, जिसकी कीमत कैश गर्म होने पर कैश दर पर और ठंडा होने पर पूर्ण इनपुट दर पर होती है, इसलिए एक लंबा ब्रेक पूरी बातचीत को फिर से प्रोसेस करता है। यह एक छोटे आउटपुट नंबर के बगल में एक बड़े इनपुट नंबर के रूप में दिखाई देता है, और इनपुट बनाम आउटपुट टोकन मूल्य निर्धारण बताता है कि दोनों स्वतंत्र रूप से क्यों चलते हैं।
सब-एजेंट्स वाला एक दिन असंभव लगता है। प्रत्येक सब-एजेंट अपनी स्वयं की कॉन्टेक्स्ट विंडो चलाता है, इसलिए टोकन का उपयोग इस आधार पर बढ़ता है कि कितने एजेंट चले और प्रत्येक कितने समय तक चला। एक प्लान पर, /usage एट्रिब्यूशन इस मशीन के लिए सब-एजेंट के हिस्से को प्रतिशत के रूप में देता है। प्रति-अनुरोध विवरण के लिए, OTel डेटा उन्हें claude_code.token.usage पर query_source एट्रिब्यूट के माध्यम से अलग करता है। एक लॉग पार्सर आपको कुल योग दिखाएगा और आपको अनुमान लगाने के लिए छोड़ देगा।
FAQ
क्या ccusage यह दिखाता है कि Max plan पर मुझसे वास्तव में कितना शुल्क लिया जा रहा है?
नहीं। किसी subscription की plan limit के भीतर के उपयोग के लिए प्रति token शुल्क नहीं लिया जाता है, इसलिए log parser आपके tokens की गणना मानक API दरों पर करता है और यह दिखाता है कि वही कार्य API के माध्यम से कितना महंगा पड़ता। यह किसी दिन के कार्यभार को मापने का एक अच्छा सापेक्ष पैमाना है और इसका उपयोग विभिन्न projects या models की तुलना करने के लिए किया जा सकता है। आपको कितना भुगतान करना है, इसके लिए Console का usage page API billing को कवर करता है और plan billing page subscription को कवर करता है। यदि आपने usage credits चालू किए हैं, तो limit से अधिक उपयोग का शुल्क मानक API दरों पर लिया जाता है, और claude.ai इस खर्च को Settings > Usage के अंतर्गत दिखाता है।
Claude Code उन session files को कहाँ store करता है जिन्हें ये tools पढ़ते हैं?
यह ~/.claude/projects/<project>/<session-id>.jsonl में होता है, जहाँ <project> वह working directory path है जिसमें non-alphanumeric characters को - से बदल दिया जाता है। प्रत्येक line एक message, tool use या metadata entry के लिए एक JSON object है। CLAUDE_CONFIG_DIR पूरी directory को move करता है, और settings.json में स्थित cleanupPeriodDays 30-दिनों के retention को नियंत्रित करता है। Anthropic इस entry format को आंतरिक मानता है और यह versions के बीच बदल सकता है, इसलिए इसे अपनी script के बजाय किसी maintained tool से ही parse करें।
क्या मैं Claude Code telemetry को Langfuse पर भेज सकता हूँ?
डिफ़ॉल्ट telemetry के साथ ऐसा नहीं किया जा सकता। Langfuse का OTLP endpoint traces को स्वीकार करता है, और डिफ़ॉल्ट रूप से Claude Code spans के बजाय metrics और log events को export करता है, इसलिए डेटा के लिए कोई गंतव्य नहीं होता। Span export एक beta feature है जिसे आपको चालू करना होगा, और Langfuse का अपना Claude Code integration एक Stop hook का उपयोग करता है जो session transcripts को traces में बदल देता है। खर्च के कुल योग के लिए, Claude Code metrics को OpenTelemetry collector पर भेजें और उन्हें Prometheus में store करें। Langfuse का उपयोग उन agents के लिए करें जिन्हें आप स्वयं API पर बनाते हैं, जहाँ आपका अपना code ऐसे spans उत्सर्जित करता है जिनमें prompt, model और लागत की जानकारी होती है।
मेरे local numbers Console के usage page से मेल क्यों नहीं खाते?
क्योंकि उनकी गणना अलग-अलग तरीके से की जाती है। /usage और log parsers उस machine पर मौजूद session files से token counts को जोड़ते हैं जिस पर आप काम कर रहे हैं, फिर उन्हें मानक दरों पर मूल्य देते हैं, जब तक कि अनुबंधित दरें कॉन्फ़िगर न की गई हों। यह /usage के लिए managed settings में modelPricing के माध्यम से या ccusage के लिए pricingOverrides के माध्यम से किया जाता है। Console यह रिपोर्ट करता है कि आपके संगठन से वास्तव में कितना शुल्क लिया गया है, जो हर machine और हर key पर, किसी भी छूट के बाद का होता है। अंतर होना सामान्य है। बहुत बड़ा अंतर आमतौर पर यह दर्शाता है कि कोई दूसरा device, CI runner, या टीम का कोई अन्य सदस्य उसी account पर billing कर रहा है।
मैं CI में claude -p run की लागत को कैसे track करूँ?
इसे --output-format json के साथ run करें और परिणाम से total_cost_usd को पढ़ें, उदाहरण के लिए claude -p "..." --output-format json | jq '.total_cost_usd' का उपयोग करके। उसी payload में प्रति-model विवरण और session ID शामिल होती है। उस मान को प्रति-job record करें और आपके पास बिना किसी agent, dashboard या अतिरिक्त service के प्रति-pipeline खर्च का विवरण होगा।