> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 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 theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw plugins enable onepassword
```

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

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
mkdir -p ~/.openclaw/credentials/onepassword
chmod 700 ~/.openclaw/credentials/onepassword
printf '%s' "$OP_SERVICE_ACCOUNT_TOKEN" > \
  ~/.openclaw/credentials/onepassword/service-account-token
chmod 600 ~/.openclaw/credentials/onepassword/service-account-token
unset OP_SERVICE_ACCOUNT_TOKEN
```

जब `OPENCLAW_STATE_DIR` सेट हो, तो `~/.openclaw` को उस डायरेक्टरी से बदलें।
टोकन फ़ाइल के समूह या अन्य उपयोगकर्ताओं द्वारा पठनीय या लिखने योग्य होने पर Plugin एक बार चेतावनी देता है।

## पंजीकृत सीक्रेट्स कॉन्फ़िगर करें

`openclaw.json` में Plugin कॉन्फ़िगरेशन जोड़ें:

```jsonc theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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` है।

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

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "action": "list" }
```

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

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

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "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 theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw onepassword status
```

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

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

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw onepassword audit
openclaw 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`                               | अनुमोदन लंबित रहने के दौरान रन निरस्त कर दिया गया                          |
