- 設定秘密:
openclaw.json中的任何 SecretRef 欄位都能在執行階段透過op命令列介面解析,因此 API 金鑰絕不會存放在設定檔中。 - 代理工作流程: 內建的
1passwordskill 會教導代理登入,並使用op讀取或注入秘密,以完成自身的任務。 - 瀏覽器登入:
claude-cli後端可以搭配 1Password for Claude 使用 Claude Code 的 Chrome 整合,讓代理登入網站,而密碼絕不會傳送至模型或 OpenClaw。
需求
- 在閘道主機上安裝 1Password CLI(
op;在 macOS 上為brew install 1password-cli)。 - 為
op設定一種驗證模式:- 服務帳戶(建議用於無頭閘道):在閘道服務環境中匯出
OP_SERVICE_ACCOUNT_TOKEN。不需要桌面應用程式,也不需要互動式登入。 - 桌面應用程式整合:1Password 應用程式需在同一台機器上執行,並啟用命令列介面整合。首次呼叫可能會觸發 Touch ID 或系統驗證。
- 獨立登入:
op signin會在每個工作階段提示登入。代理可透過該 skill 使用此方式,但不適合在無頭閘道上解析設定秘密。
- 服務帳戶(建議用於無頭閘道):在閘道服務環境中匯出
使用 op 解析設定秘密
宣告一個執行op read 並使用 op://vault/item/field 參照的 exec 秘密提供者,接著讓任何支援 SecretRef 的欄位指向它:
command必須是絕對路徑;trustedDirs會將其目錄標示為受信任,而由於 Homebrew 會將op安裝為符號連結,因此需要allowSymlinkCommand。args會原封不動地傳遞op://vault/item/field參照。OpenClaw 本身不會剖析op://配置;該參照由op二進位檔解析。passEnv會轉送閘道環境中列出的變數。桌面應用程式整合需要HOME;服務帳戶也需要閘道服務環境中存在OP_SERVICE_ACCOUNT_TOKEN(將它加入passEnv;只有在你接受該權杖可從設定檔中讀取時,才透過env設定)。- 若輸出為單一值,請保留
id: "value"。若使用jsonOnly: true與 JSON 承載資料,則改用 JSON 指標 ID 指定欄位。 - 每項秘密使用一個提供者項目,可確保參照便於稽核;請依其使用者命名提供者(
onepassword_openai、onepassword_telegram)。
無頭閘道的服務帳戶設定
- 在你的 1Password 帳戶中建立服務帳戶,並僅授予其讀取閘道所需保存庫項目的權限。
- 將
OP_SERVICE_ACCOUNT_TOKEN提供給閘道服務(launchd plist、systemd unit 或容器環境)。 - 將
"OP_SERVICE_ACCOUNT_TOKEN"加入提供者的passEnv清單。 - 從閘道主機環境驗證:
op whoami應在不提示登入的情況下輸出服務帳戶。
op:// 參照中明確指定保存庫名稱。請嚴格限制帳戶範圍;它是持有者認證資訊。
代理使用的 1password skill
OpenClaw 內建一個1password skill,可讓代理熟練操作 op:它會偵測可用的驗證模式(服務帳戶、桌面應用程式整合或獨立登入),在讀取任何內容前使用 op whoami 驗證存取權,並優先使用 op run / op inject,而不是將秘密值寫入磁碟。此 skill 需要 op 二進位檔,若缺少該檔案,則會提供 Homebrew 安裝選項。
代理會將它用於自身工作流程,例如在任務進行期間讀取部署權杖,或將環境變數注入命令。它與設定秘密解析彼此獨立;閘道解析 SecretRef 時不會使用任何 skill。
使用 1Password for Claude 進行瀏覽器登入
1Password for Claude 可讓 Claude 要求登入,而 1Password 瀏覽器擴充功能會透過加密通道,將認證資訊直接填入頁面。秘密絕不會進入模型上下文、逐字稿或 OpenClaw。當 OpenClaw 執行claude-cli 後端,且已啟用 Claude Code 的 Chrome 整合時,代理任務便可針對需要實際登入工作階段的網站使用此流程。
除了後端本身,還需要:
- 一台配備 Chrome 的 macOS 閘道主機、已連線的 Claude in Chrome extension、1Password 桌面應用程式,以及 1Password 瀏覽器擴充功能(兩者皆須為 8.12.28 或更新版本)。
- Claude Code 已登入直接的 Anthropic 方案(Pro、Max、Team 或 Enterprise)。Amazon Bedrock、Google Cloud 或其他第三方提供者不支援 Chrome 整合。
- 在 Anthropic 端完成一次性的 1Password 連線:透過 1Password 指南中所述的 Claude 桌面應用程式或擴充功能流程設定 1Password for Claude;目前此功能是 macOS 測試版。使用 1Password Business 時,管理員必須先在 Policies 下啟用 “Allow AI agents to autofill for users”;Anthropic Team/Enterprise 方案的此整合預設也是關閉的,必須由 Owner 啟用。
- 一個命令列介面後端外掛,用於將
--chrome加入 Claude 啟動引數;內建後端不會啟用 Chrome。 - 閘道主機旁需要有人操作:每次使用認證資訊時,都會顯示 1Password 提示,並需在該主機上確認(例如使用 Touch ID)。在限制嚴格的 exec 政策下,瀏覽器工具呼叫本身也會先轉送至你的頻道,作為 OpenClaw 核准要求。
claude --chrome、確認擴充功能已連線,並檢查 claude-in-chrome 工具是否包含認證資訊工具。若這些工具未在該處出現,也不會透過 OpenClaw 出現。
一次性密碼會由 1Password 填入同一頁面;絕不要透過聊天轉送驗證碼或密碼。目前無頭或遠端閘道無法使用此流程,因為核准操作與瀏覽器都位於閘道主機上。
安全性注意事項
- 透過 exec 提供者解析的秘密值會保留在閘道記憶體中;設定快照與
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已傳入閘道服務,且列於passEnv中;若使用桌面整合,請確認應用程式正在執行且已解鎖。- 首次讀取緩慢:提高提供者的
timeoutMs;在繁忙的主機上,op冷啟動可能超過嚴格的逾時限制。