Plugin guides
1Password सीक्रेट्स ब्रोकर
1Password सीक्रेट्स ब्रोकर
बंडल किया गया onepassword Plugin एजेंटों को 1Password फ़ील्ड के चुनिंदा सेट को
पढ़ने के लिए एक नीति-नियंत्रित टूल देता है। यह डिफ़ॉल्ट रूप से अक्षम होता है और
plugins.entries.onepassword.config मौजूद होने तक कुछ नहीं करता।
यह एक एजेंट टूल है, SecretRef प्रदाता नहीं। यह एनवायरनमेंट वेरिएबल इंजेक्ट नहीं करता या OpenClaw कॉन्फ़िगरेशन सीक्रेट्स को रिज़ॉल्व नहीं करता।
सुरक्षा मॉडल
- केवल सर्विस-अकाउंट प्रमाणीकरण। टोकन एक स्थानीय क्रेडेंशियल्स
फ़ाइल में रहता है और
openclaw.jsonमें कभी स्वीकार नहीं किया जाता। - केवल चुनिंदा रजिस्ट्री। एजेंट कॉन्फ़िगर किए गए स्लग सूचीबद्ध कर सकते हैं, लेकिन Plugin कभी किसी 1Password वॉल्ट की गणना नहीं करता।
- प्रति-स्लग
auto,approve, याdenyनीति। - अनुमोदन अनुदान की अवधि समाप्त होती है। कैश किया गया मान वर्तमान नीति को कभी बायपास नहीं करता।
- हर एक्सेस प्रयास OpenClaw की साझा SQLite स्थिति में दर्ज किया जाता है। ऑडिट पंक्तियों में दिया गया कारण शामिल होता है; कारणों में संवेदनशील जानकारी न रखें। ब्रोकर प्राप्त किए गए मान या सर्विस टोकन को कभी किसी ऑडिट पंक्ति में कॉपी नहीं करता।
- वर्तमान टूल निष्पादन के बाद, OpenClaw के स्वामित्व वाला ट्रांसक्रिप्ट परसिस्टेंस
सफल
getमान को संशोधित मेटाडेटा से बदल देता है। - उस निष्पादन के दौरान मान मॉडल को दिखाई देता है। यदि मॉडल उसे बाद की किसी टूल कॉल या उत्तर में कॉपी करता है, तो वह अलग रिकॉर्ड इस Plugin के परसिस्टेंस हुक से बाहर होता है। नीतियों को सीमित रखें और मॉडल से किसी मान को दोहराने के लिए न कहें।
- Plugin प्रत्येक कैश मिस पर
opको एक बार इनवोक करता है। यह रेट लिमिट या अन्य विफलताओं पर पुनः प्रयास नहीं करता। - प्रत्येक
opकॉल न्यूनतम एनवायरनमेंट के साथ चलती है, जो 1Password डेस्कटॉप-ऐप इंटीग्रेशन (OP_LOAD_DESKTOP_APP_SETTINGS=false,OP_BIOMETRIC_UNLOCK_ENABLED=false) अक्षम करता है, ताकि Gateway होस्ट पर इंस्टॉल किया गया 1Password ऐप कभी बायोमेट्रिक या macOS अनुमति डायलॉग ट्रिगर न करे।
सर्विस अकाउंट को केवल Plugin कॉन्फ़िगरेशन में पंजीकृत वॉल्ट और आइटम के लिए रीड एक्सेस दें।
शुरू करने से पहले
आपको चाहिए:
- Gateway होस्ट पर इंस्टॉल किया गया 1Password CLI (
op) - चुने गए आइटम तक पहुँच वाला 1Password सर्विस अकाउंट
- एक समर्पित सर्विस-अकाउंट टोकन फ़ाइल
बंडल किया गया Plugin सक्षम करें:
openclaw plugins enable onepasswordOpenClaw स्थिति डायरेक्टरी के अंतर्गत टोकन डायरेक्टरी और फ़ाइल बनाएँ:
mkdir -p ~/.openclaw/credentials/onepasswordchmod 700 ~/.openclaw/credentials/onepasswordprintf '%s' "$OP_SERVICE_ACCOUNT_TOKEN" > \ ~/.openclaw/credentials/onepassword/service-account-tokenchmod 600 ~/.openclaw/credentials/onepassword/service-account-tokenunset OP_SERVICE_ACCOUNT_TOKENजब OPENCLAW_STATE_DIR सेट हो, तो ~/.openclaw को उस डायरेक्टरी से बदलें।
टोकन फ़ाइल के समूह या अन्य उपयोगकर्ताओं द्वारा पठनीय या लिखने योग्य होने पर Plugin एक बार चेतावनी देता है।
पंजीकृत सीक्रेट्स कॉन्फ़िगर करें
openclaw.json में Plugin कॉन्फ़िगरेशन जोड़ें:
{ "plugins": { "entries": { "onepassword": { "enabled": true, "config": { "vault": "Automation", "defaultPolicy": "approve", "cacheTtlSeconds": 300, "grantTtlHours": 720, "opTimeoutMs": 15000, "items": { "repository-token": { "item": "Repository automation token", "field": "credential", "policy": "approve", "description": "Token for repository automation", }, "model-key": { "item": "Model provider key", "vault": "Agent credentials", "policy": "auto", }, }, }, }, }, },}स्लग में लोअरकेस अक्षर, संख्याएँ और हाइफ़न होते हैं, वे किसी अक्षर या
संख्या से शुरू होते हैं और उनमें अधिकतम 64 वर्ण होते हैं। किसी रजिस्ट्री में अधिकतम 32
स्लग हो सकते हैं; विवरण में अधिकतम 200 वर्ण हो सकते हैं। field एक फ़ील्ड
लेबल या ID स्वीकार करता है, उसमें कॉमा नहीं होना चाहिए और उसका डिफ़ॉल्ट credential है।
आइटम-स्तरीय vault डिफ़ॉल्ट वॉल्ट को ओवरराइड करता है। opBin, op
एक्ज़ीक्यूटेबल के लिए एक निरपेक्ष पथ सेट कर सकता है; अन्यथा Plugin op को PATH से रिज़ॉल्व करता है।
आइटम शीर्षक हाइफ़न से शुरू नहीं होने चाहिए।
एजेंट टूल का उपयोग करें
टूल का नाम onepassword है।
पंजीकृत स्लग सूचीबद्ध करें:
{ "action": "list" }परिणाम में केवल स्लग, विवरण, नीति और यह जानकारी होती है कि कोई स्थायी अनुदान सक्रिय है या नहीं। इसमें कभी कोई सीक्रेट मान नहीं होता और यह 1Password से क्वेरी नहीं करता।
एक सीक्रेट का अनुरोध करें:
{ "action": "get", "slug": "repository-token", "reason": "Authenticate the requested repository operation"}reason आवश्यक है, रिक्त नहीं होना चाहिए और 300 वर्णों तक सीमित है।
सफल get कॉन्फ़िगर किए गए स्लग, आइटम शीर्षक और
फ़ील्ड लेबल के साथ मान लौटाता है।
टूल स्कीमा एक आंतरिक authorizationNonce पैरामीटर भी घोषित करता है।
नीति परत अनुरोध का मूल्यांकन करने के बाद निष्पादित हो रही टूल कॉल को प्राधिकरण
देने के लिए इसे इंजेक्ट करती है। इसे कभी मैन्युअल रूप से सेट न करें: नीति हुक
दिए गए किसी भी मान को ओवरराइट कर देता है और अज्ञात मान अनुरोध को विफल कर देता है।
नीति स्तर और अनुमोदन
auto: तुरंत प्राप्त करें और अनुरोध का ऑडिट करें।deny: अनुरोध को ब्लॉक करें और उसका ऑडिट करें।approve: अवधि समाप्त न हुआ स्थायी अनुदान उपयोग करें, या किसी व्यक्ति से एक बार अनुमति देने, हमेशा अनुमति देने या अस्वीकार करने के लिए कहें।
एक बार अनुमति केवल वर्तमान टूल कॉल को अधिकृत करती है। हमेशा अनुमति उस एजेंट और स्लग के लिए SQLite में
स्थायी अनुदान लिखती है; अन्य एजेंटों को अपना अलग
अनुमोदन प्राप्त करना होगा। OpenClaw हमेशा अनुमति का विकल्प केवल तभी देता है जब कॉलर की कोई ठोस एजेंट
पहचान हो। अनुदान की अवधि grantTtlHours के बाद समाप्त होती है, जिसका डिफ़ॉल्ट 720 घंटे है।
अनसुलझा या समय-समाप्त अनुमोदन अनुरोध को अस्वीकार कर देता है; अनुमोदन की अधिकतम
प्रतीक्षा 600 सेकंड है। Plugin अधिकतम 1,024 स्थायी अनुदान रखता है; उस
सीमा पर सबसे पुराना अनुदान हटा दिया जाता है और उसके एजेंट को अगली एक्सेस का अनुमोदन करना होगा।
हर मूल्यांकित प्राधिकरण एकल-उपयोग वाला होता है और साझा SQLite स्थिति के माध्यम से निष्पादित हो रही टूल कॉल को सौंपा जाता है, इसलिए Gateway प्रक्रिया में एक से अधिक Plugin इंस्टेंस सक्रिय होने पर भी यह हस्तांतरण काम करता है। अप्रयुक्त प्राधिकरण 600-सेकंड की अनुमोदन अवधि के बाद समाप्त हो जाते हैं।
इन-मेमोरी कैश का डिफ़ॉल्ट 300 सेकंड है और यह कॉन्फ़िगर की गई
स्लग रजिस्ट्री तक सीमित है। इसे अक्षम करने के लिए cacheTtlSeconds को 0 पर सेट करें। हर कैश लुकअप से
पहले नीति का मूल्यांकन होता है और कैश हिट का ऑडिट किया जाता है। रनटाइम कॉन्फ़िगरेशन रीलोड
हर नीति और निष्पादन सीमा पर प्रभावी होता है; Plugin को अक्षम करना या
किसी स्लग को हटाना, अस्वीकार करना या पुनः लक्षित करना लंबित प्राधिकरण और
कैश किए गए मानों को अमान्य कर देता है।
स्थिति और ऑडिट इतिहास देखें
तैयारी और रजिस्ट्री गणनाएँ दिखाएँ:
openclaw onepassword statusयह बताता है कि टोकन फ़ाइल मौजूद है या नहीं, op रिज़ॉल्व हुआ या नहीं और उसका पथ,
पंजीकृत आइटम की संख्या और प्रति-नीति गणनाएँ। यह टोकन या सीक्रेट मानों को कभी
पढ़ता या प्रिंट नहीं करता।
50 सबसे हाल की ऑडिट पंक्तियाँ दिखाएँ:
openclaw onepassword auditopenclaw onepassword audit --limit 100पंक्तियाँ नवीनतम से शुरू होती हैं और टाइमस्टैम्प, एजेंट, स्लग, परिणाम, प्रयास विफल होने पर
एक errorCode और संक्षिप्त किया गया कारण दिखाती हैं। कारण दिए गए रूप में
संग्रहीत होता है; ब्रोकर प्राप्त किए गए मान को ऑडिट लॉग में कभी नहीं जोड़ता।
1Password CLI व्यवहार
हर कैश मिस कॉन्फ़िगर किए गए आइटम, वॉल्ट और सटीक
फ़ील्ड चयनकर्ता, JSON आउटपुट, सीमित टाइमआउट और --cache=false के साथ op item get चलाता है। चाइल्ड को
पूरे आइटम के बजाय केवल वह फ़ील्ड प्राप्त होता है। चाइल्ड एनवायरनमेंट में केवल
OP_SERVICE_ACCOUNT_TOKEN और HOME मौजूद होते हैं।
Plugin एक प्रयास करता है। RATE_LIMITED त्रुटियों को बाद के एजेंट अनुरोध से पहले प्रतीक्षा करके
संभाला जाना चाहिए; Plugin स्वचालित पुनः प्रयास
लूप नहीं बनाता।
त्रुटि कोड
विफल प्रयासों के टूल परिणाम और ऑडिट पंक्ति में एक सीमित त्रुटि कोड होता है।
1Password एक्सेस त्रुटियाँ:
| कोड | अर्थ |
|---|---|
TOKEN_MISSING |
टोकन फ़ाइल अनुपस्थित या रिक्त है |
OP_NOT_FOUND |
op बाइनरी रिज़ॉल्व नहीं की जा सकी |
ITEM_NOT_FOUND |
कॉन्फ़िगर किया गया आइटम वॉल्ट में नहीं है |
FIELD_NOT_FOUND |
कॉन्फ़िगर किया गया फ़ील्ड आइटम पर नहीं है; उपलब्ध लेबल सूचीबद्ध हैं |
RATE_LIMITED |
1Password सर्विस-अकाउंट रेट लिमिट पूरी हो गई |
AUTH_FAILED |
सर्विस-अकाउंट प्रमाणीकरण विफल रहा |
TIMEOUT |
op ने opTimeoutMs पार कर लिया |
OP_ERROR |
कोई अन्य op विफलता या अमान्य आउटपुट |
नीति और सत्यापन त्रुटियाँ:
| कोड | अर्थ |
|---|---|
INVALID_ACTION, INVALID_REASON, INVALID_SLUG |
अनुरोध इनपुट सत्यापन में विफल रहा |
UNKNOWN_SLUG |
स्लग कॉन्फ़िगर की गई रजिस्ट्री में नहीं है |
TOOL_CALL_ID_MISSING |
कॉल बिना टूल कॉल ID के प्राप्त हुई |
POLICY_NOT_EVALUATED |
इस कॉल के लिए कोई मेल खाता प्राधिकरण नहीं है; अनुरोध नीति-अनुमोदित नहीं था |
POLICY_CHANGED |
अनुमोदन और निष्पादन के बीच कॉन्फ़िगरेशन बदल गया |
GRANT_EXPIRED |
स्थायी अनुदान निष्पादन से पहले समाप्त हो गया |
APPROVAL_CANCELLED |
अनुमोदन लंबित रहने के दौरान रन निरस्त कर दिया गया |