> ## 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

OpenClaw **1Password** के साथ दो स्वतंत्र तरीकों से काम करता है:

* **कॉन्फ़िग सीक्रेट:** `openclaw.json` में कोई भी [SecretRef](/hi/gateway/secrets) फ़ील्ड रनटाइम पर `op` CLI के माध्यम से हल हो सकती है, इसलिए API कुंजियाँ कभी भी कॉन्फ़िग फ़ाइल में नहीं रहतीं।
* **एजेंट कार्यप्रवाह:** बंडल की गई `1password` स्किल एजेंटों को अपने कार्यों के लिए `op` से साइन इन करना और सीक्रेट पढ़ना या इंजेक्ट करना सिखाती है।

## आवश्यकताएँ

* Gateway होस्ट पर [1Password CLI](https://developer.1password.com/docs/cli/get-started/) (`op`) इंस्टॉल हो (macOS पर `brew install 1password-cli`)।
* `op` के लिए एक प्रमाणीकरण मोड:
  * **सर्विस अकाउंट** (हेडलेस Gateway के लिए अनुशंसित): Gateway सेवा परिवेश में `OP_SERVICE_ACCOUNT_TOKEN` एक्सपोर्ट करें। किसी डेस्कटॉप ऐप या इंटरैक्टिव साइन-इन की आवश्यकता नहीं है।
  * **डेस्कटॉप ऐप इंटीग्रेशन**: 1Password ऐप उसी मशीन पर चलता है और उसमें CLI इंटीग्रेशन सक्षम होता है। शुरुआती कॉल Touch ID या सिस्टम प्रमाणीकरण ट्रिगर कर सकती हैं।
  * **स्टैंडअलोन साइन-इन**: `op signin` प्रत्येक सत्र में संकेत देता है। स्किल के माध्यम से एजेंटों के लिए व्यावहारिक है, लेकिन हेडलेस Gateway पर कॉन्फ़िग सीक्रेट समाधान के लिए उपयुक्त नहीं है।

## op से कॉन्फ़िग सीक्रेट हल करें

एक exec सीक्रेट प्रदाता घोषित करें, जो `op://vault/item/field` संदर्भ के साथ `op read` चलाता हो, फिर SecretRef समर्थित किसी भी फ़ील्ड को उसकी ओर इंगित करें:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  secrets: {
    providers: {
      onepassword_openai: {
        source: "exec",
        command: "/opt/homebrew/bin/op",
        allowSymlinkCommand: true, // Homebrew के सिमलिंक किए गए बाइनरी के लिए आवश्यक
        trustedDirs: ["/opt/homebrew"],
        args: ["read", "op://Personal/OpenClaw QA API Key/password"],
        passEnv: ["HOME"],
        jsonOnly: false,
      },
    },
  },
  models: {
    providers: {
      openai: {
        baseUrl: "https://api.openai.com/v1",
        models: [{ id: "gpt-5", name: "gpt-5" }],
        apiKey: { source: "exec", provider: "onepassword_openai", id: "value" },
      },
    },
  },
}
```

ये घटक इस प्रकार साथ काम करते हैं:

* `command` एक पूर्ण पथ होना चाहिए; `trustedDirs` इसकी डायरेक्टरी को विश्वसनीय चिह्नित करता है, और `allowSymlinkCommand` आवश्यक है क्योंकि Homebrew `op` को सिमलिंक के रूप में इंस्टॉल करता है।
* `args` में `op://vault/item/field` संदर्भ ज्यों का त्यों जाता है। OpenClaw स्वयं `op://` स्कीम को पार्स नहीं करता; `op` बाइनरी इसे हल करती है।
* `passEnv` सूचीबद्ध वेरिएबल को Gateway परिवेश से अग्रेषित करता है। डेस्कटॉप ऐप इंटीग्रेशन को `HOME` की आवश्यकता होती है; सर्विस अकाउंट के लिए भी Gateway सेवा परिवेश में `OP_SERVICE_ACCOUNT_TOKEN` उपस्थित होना चाहिए (इसे `passEnv` में जोड़ें, या `env` के माध्यम से केवल तभी सेट करें जब आपको टोकन का कॉन्फ़िग फ़ाइल में पठनीय होना स्वीकार्य हो)।
* एकल मान वाले आउटपुट के लिए `id: "value"` बनाए रखें। `jsonOnly: true` और JSON पेलोड के साथ, इसके बजाय JSON पॉइंटर आईडी से फ़ील्ड को संबोधित करें।
* प्रत्येक सीक्रेट के लिए एक प्रदाता प्रविष्टि रखने से संदर्भों का ऑडिट किया जा सकता है; प्रदाताओं का नाम उनके उपभोक्ता के अनुसार रखें (`onepassword_openai`, `onepassword_telegram`)।

समाधान क्रम, कैशिंग और विफलता अर्थविज्ञान के लिए [Gateway सीक्रेट](/hi/gateway/secrets), और SecretRef स्वीकार करने वाले प्रत्येक फ़ील्ड के लिए [SecretRef क्रेडेंशियल सतह](/hi/reference/secretref-credential-surface) देखें।

## हेडलेस Gateway के लिए सर्विस अकाउंट सेटअप

1. अपने 1Password अकाउंट में एक सर्विस अकाउंट बनाएँ और उसे केवल उन वॉल्ट आइटम का पढ़ने का एक्सेस दें जिनकी Gateway को आवश्यकता है।
2. Gateway सेवा (launchd plist, systemd unit या container env) को `OP_SERVICE_ACCOUNT_TOKEN` उपलब्ध कराएँ।
3. प्रदाता की `passEnv` सूची में `"OP_SERVICE_ACCOUNT_TOKEN"` जोड़ें।
4. Gateway होस्ट परिवेश से सत्यापित करें: `op whoami` को बिना संकेत दिए सर्विस अकाउंट प्रिंट करना चाहिए।

सर्विस अकाउंट से पढ़ने के लिए `op://` संदर्भ में वॉल्ट का नाम स्पष्ट रूप से देना आवश्यक है। अकाउंट का दायरा सीमित रखें; यह एक बेयरर क्रेडेंशियल है।

## एजेंटों के लिए 1password स्किल

OpenClaw एक `1password` स्किल बंडल करता है, जो एजेंटों को सक्षम `op` ऑपरेटर बनाती है: यह उपलब्ध प्रमाणीकरण मोड (सर्विस अकाउंट, डेस्कटॉप ऐप इंटीग्रेशन या स्टैंडअलोन साइन-इन) का पता लगाती है, कुछ भी पढ़ने से पहले `op whoami` से एक्सेस सत्यापित करती है और सीक्रेट मानों को डिस्क पर लिखने के बजाय `op run` / `op inject` को प्राथमिकता देती है। इस स्किल के लिए `op` बाइनरी आवश्यक है और उसके अनुपस्थित होने पर यह Homebrew इंस्टॉल की पेशकश करती है।

एजेंट इसका उपयोग अपने कार्यप्रवाहों के लिए करते हैं, उदाहरण के लिए कार्य के बीच में डिप्लॉय टोकन पढ़ना या किसी कमांड में पर्यावरण वेरिएबल इंजेक्ट करना। यह कॉन्फ़िग सीक्रेट समाधान से स्वतंत्र है; Gateway किसी स्किल की भागीदारी के बिना SecretRef हल करता है।

## सुरक्षा संबंधी टिप्पणियाँ

* exec प्रदाताओं के माध्यम से हल किए गए सीक्रेट मान Gateway मेमोरी में रहते हैं; कॉन्फ़िग स्नैपशॉट और `config.get` प्रतिक्रियाएँ SecretRef फ़ील्ड को छिपाती हैं।
* सीक्रेट मानों को कभी भी `openclaw.json`, लॉग या चैट में न रखें। आइटम के नाम कॉन्फ़िग में और मान 1Password में रखें।
* 1Password ऑडिट ट्रेल प्रत्येक सर्विस अकाउंट रीड दिखाता है, जिससे कुंजी रोटेशन और घटना समीक्षा व्यावहारिक हो जाती है।

## समस्या निवारण

* `command not found` या स्पॉन त्रुटियाँ: पूर्ण `op` पथ का उपयोग करें और इसकी डायरेक्टरी को `trustedDirs` में शामिल करें।
* `op` हल हो जाता है, लेकिन सिमलिंक त्रुटियों के कारण रीड विफल हो जाते हैं: Homebrew इंस्टॉल के लिए `allowSymlinkCommand: true` सेट करें।
* `account is not signed in`: सर्विस अकाउंट के लिए पुष्टि करें कि `OP_SERVICE_ACCOUNT_TOKEN` Gateway सेवा तक पहुँचता है और `passEnv` में सूचीबद्ध है; डेस्कटॉप इंटीग्रेशन के लिए पुष्टि करें कि ऐप चल रहा है और अनलॉक है।
* शुरुआती रीड धीमे हैं: प्रदाता पर `timeoutMs` बढ़ाएँ; व्यस्त होस्ट पर `op` कोल्ड स्टार्ट सख्त टाइमआउट से अधिक समय ले सकते हैं।
