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 को सक्षम करें:

bash
openclaw plugins enable onepassword

OpenClaw स्थिति डायरेक्टरी के अंतर्गत टोकन डायरेक्टरी और फ़ाइल बनाएँ:

bash
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 कॉन्फ़िग जोड़ें:

jsonc
{  "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 PATH से op का समाधान करता है। आइटम शीर्षक हाइफ़न से शुरू नहीं होने चाहिए।

एजेंट टूल का उपयोग करें

टूल का नाम onepassword है।

पंजीकृत स्लग सूचीबद्ध करें:

json
{ "action": "list" }

परिणाम में केवल स्लग, विवरण, नीति और यह जानकारी होती है कि स्थायी अनुदान सक्रिय है या नहीं। इसमें कभी कोई सीक्रेट मान नहीं होता और यह 1Password को क्वेरी नहीं करता।

एक सीक्रेट का अनुरोध करें:

json
{  "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 को अक्षम करने या किसी स्लग को हटाने, अस्वीकार करने या पुनः लक्षित करने से लंबित प्राधिकरण और कैश किए गए मान अमान्य हो जाते हैं।

स्थिति और ऑडिट इतिहास की जाँच करें

तत्परता और रजिस्ट्री गणनाएँ दिखाएँ:

bash
openclaw onepassword status

यह बताता है कि टोकन फ़ाइल मौजूद है या नहीं, op का समाधान हुआ या नहीं और उसका पथ, पंजीकृत आइटम की संख्या तथा प्रति-नीति गणनाएँ। यह टोकन या सीक्रेट मानों को कभी पढ़ता या प्रिंट नहीं करता।

50 सबसे हाल की ऑडिट पंक्तियाँ दिखाएँ:

bash
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 अनुमोदन लंबित रहने के दौरान रन निरस्त कर दिया गया
Was this useful?
On this page

On this page