
AI एजेंटों के लिए छेड़छाड़-रोधी ऑडिट ट्रेल: हैश-चेन्ड Runtime Records, डिपेंडेंसी-मुक्त, जिसे कोई भी सत्यापित कर सकता है।
छेड़छाड़-स्पष्ट AI एजेंट्स के लिए ऑडिट ट्रेल्स — हैश-चेन्ड Runtime Records, जिन्हें एक Runtime Report के रूप में प्रस्तुत किया जाता है जिसे आपके ग्राहक स्वयं जाँच सकते हैं।
आपके instrumentation द्वारा कैप्चर की गई प्रत्येक क्रिया (टूल कॉल्स, मॉडल कॉल्स, डेटा एक्सेस, अनुमोदन) एक Runtime Record बन जाती है, जो एक append-only, हैश-चेन्ड लॉग में दर्ज होती है; Runtime Report उस चेन को एक HTML पेज के रूप में प्रस्तुत करता है जो पाठक के ब्राउज़र में हैश चेन की पुनर्गणना करता है और जो प्रदर्शित करता है उसे उन रिकॉर्ड्स से रेंडर करता है जिन्हें उसने सत्यापित किया है (ऐसी जाँच के लिए जो पेज के स्वयं के कोड पर निर्भर न हो, JSONL पर halo verify चलाएँ)। चेन का चेकपॉइंट रखने वाला कोई भी पक्ष यह सत्यापित कर सकता है कि उस चेकपॉइंट तक के रिकॉर्ड्स उसके लिए गए होने के बाद से बदले नहीं गए हैं, बिना उनके निर्माता पर भरोसा किए — वह चेकपॉइंट ही भार वहन करने वाला हिस्सा है: चेन अकेले ही रिकॉर्डर चलाने वाले पक्ष को छोड़कर सभी के विरुद्ध छेड़छाड़-स्पष्ट है (LIMITS.md §1)। जब किसी ग्राहक की सुरक्षा टीम पूछे "आपके एजेंट ने हमारे डेटा के साथ क्या किया?", तो आप उन्हें एक पैराग्राफ के बजाय एक लिंक थमा देते हैं। सुरक्षा समीक्षाएँ पहले से ही SOC 2 चेकलिस्ट के साथ-साथ AI से जुड़े प्रश्न पूछती हैं — और तेजी से ये प्रश्न ISO 42001, EU AI Act के रिकॉर्ड-कीपिंग अनुच्छेदों, और ग्राहकों की अपनी प्रश्नावलियों से आ रहे हैं। आज एक लिखित आश्वासन अभी भी पास हो जाता है। इस परियोजना के पीछे का दाँव यह है कि यह ज्यादा दिन नहीं चलेगा।
Help Net Security में प्रमुखता से शामिल (अगस्त 2026)।
रिकॉर्ड प्रारूप खुला है और इसे लागू करना निःशुल्क है। यह पैकेज संदर्भ कार्यान्वयन है: रिकॉर्डर, सत्यापनकर्ता, विटनेस क्लाइंट, और रिपोर्ट सर्वर।
halo-record का उपयोग कर रहे हैं, या इसके बारे में सोच रहे हैं? मुझे बताएँ कि आप कौन हैं और किसलिए → halo-record का उपयोग कौन कर रहा है?
आपसे कहा जा रहा है कि आप अपने एजेंट के अंदर एक रिकॉर्डर लगाएँ। आपको इसे विश्वास पर नहीं लेना चाहिए:
pip install halo-record ठीक एक पैकेज इंस्टॉल करता है।halo serve --verify-email (एक वन-टाइम कोड और रिपोर्ट का subject name, $HALO_SMTP_HOST में आपके द्वारा कॉन्फ़िगर किए गए सर्वर के माध्यम से SMTP द्वारा, उस पते पर भेजता है जो रिपोर्ट दर्शक दर्ज करता है)। जब तक आप उन्हें आमंत्रित नहीं करते, ये सभी बंद रहते हैं; कोई अन्य रिकॉर्ड सामग्री आपके इंफ्रास्ट्रक्चर से बाहर नहीं जाती।summaries=False) कोई सारांश नहीं रखता। रिडैक्शन सर्वोत्तम-प्रयास है (सामान्य सीक्रेट और PII प्रारूपों पर regex के साथ-साथ एक एन्ट्रॉपी कैच-ऑल): इसे defense-in-depth मानें, गारंटी नहीं। summary से परे आपके द्वारा दिए गए outcome फ़ील्ड्स को उन्हीं पैटर्नों से स्कैन और मास्क किया जाता है, लेकिन 200 अक्षरों तक नहीं काटा जाता (LIMITS §13)।प्रत्येक परत क्या सिद्ध करती है — इस परियोजना में भार वहन करने वाला अंतर (LIMITS.md §1): आपके पास स्वयं की चेन सिद्ध करती है कि रिकॉर्ड्स संपादित नहीं किए गए, उस head के सापेक्ष जो किसी और के पास पहले से है; केवल ऑपरेटर के बाहर रखे गए चेकपॉइंट्स सिद्ध करते हैं कि कोई हटाया नहीं गया; और कोई भी हैश यह सिद्ध नहीं करता कि प्रत्येक क्रिया कैप्चर की गई थी।
| दावा | स्व-धारित चेन | + बाहरी चेकपॉइंट्स | + विश्वसनीय कैप्चर |
|---|---|---|---|
| स्थापित आर्टिफैक्ट में संपादन का पता लगाना | ✔ | ✔ | ✔ |
| कमिटेड इतिहास के पुनर्लेखन का पता लगाना | — | ✔ | ✔ |
| गुम/देर से आए चेकपॉइंट्स का पता लगाना | — | ✔ (सहमत कैडेंस) | ✔ |
| सिद्ध करना कि प्रत्येक क्रिया रिकॉर्ड की गई थी | — | — | कैप्चर सीमा पर निर्भर |
इंस्टॉल करने से पहले एक देखें: एक नमूना Runtime Report — काल्पनिक डेटा, वास्तविक चेन, और इसे खोलने पर इसकी स्क्रिप्ट आपके ब्राउज़र में एम्बेडेड रिकॉर्ड्स की हैश चेन की पुनर्गणना करती है।
किसी एजेंट की आवश्यकता नहीं। uv के साथ, कुछ भी इंस्टॉल करने की जरूरत नहीं:
uvx --from halo-record halo demo --serve
या क्लासिक तरीका:
pip install halo-record
halo demo --serve
या तो दो ग्राहकों वाले एक काल्पनिक सपोर्ट-एजेंट विक्रेता को स्कैफ़ोल्ड करता है, श्रृंखलाओं को साक्षी बनाता है (ऑपरेटर के बाहर वाले के लिए एक स्थानीय साक्षी फ़ाइल को प्रतिस्थापित करता है — देखें LIMITS.md §1), उनकी गेटेड Runtime Reports प्रस्तुत करता है, और आपके ब्राउज़र में ऑपरेटर कंसोल खोलता है। फिर टैम्पर परीक्षण आज़माएँ: .jsonl फ़ाइलों में से एक से एक पंक्ति हटाएँ और पुनः लोड करें। रिपोर्ट इसे पकड़ लेती है।
सीमा पर एक पंक्ति:
from halo_record import trace
agent = trace(run_my_agent, profile="my-agent", log="audit.jsonl") # wraps your entrypoint; records the run boundary to ./audit.jsonl — add record_call() or a framework adapter at each tool boundary to capture individual calls
from halo import ... सुविधा शिम भी शिप होती है — लेकिन PyPI पर halo नाम एक असंबंधित terminal-spinner पैकेज का है, और यदि वह पैकेज इंस्टॉल है तो इम्पोर्ट में वही जीतता है। halo_record स्पष्ट है, इसलिए उदाहरण इसे उपयोग करते हैं।
log= के बिना, रिकॉर्ड ~/.halo/my-agent.jsonl में जाते हैं (प्रति एजेंट एक चेन)। रैपर रन सीमा को सील करता है; साक्ष्य प्रति-कॉल रिकॉर्ड में रहता है। उन्हें एक फ्रेमवर्क एडाप्टर (नीचे मैट्रिक्स) से कैप्चर करें — या स्पष्ट रूप से, जो यह भी दिखाता है कि प्रतिनिधिमंडल कैसे लिंक होता है:
from halo_record import Recorder, record_call
rec = Recorder("audit.jsonl")
with record_call(rec, "crm.lookup", {"account": "acct-9"}) as call: # one sealed record per tool call
call.result = crm.lookup("acct-9")
with record_call(rec, "payments.refund", {"amount": 120},
parent_id=rec.last_record_id()) as call: # child links to the action that spawned it
call.result = payments.refund(120)
फिर रिपोर्ट रेंडर करें:
halo report audit.jsonl -o report.html # one chain -> HTML that re-verifies in the browser
halo serve ./records --port 8721 # all tenants, gated per customer