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 の権限ダイアログは表示されません。
始める前に
必要なもの:- Gateway ホストにインストールされた 1Password CLI(
op) - 選択した項目へのアクセス権を持つ 1Password サービスアカウント
- 専用のサービスアカウントトークンファイル
OPENCLAW_STATE_DIR が設定されている場合は、~/.openclaw をそのディレクトリに置き換えてください。トークンファイルがグループまたは他のユーザーから読み取り可能または書き込み可能な場合、Plugin は一度だけ警告します。
登録済みシークレットの設定
openclaw.json に Plugin 設定を追加します。
field は 1 つのフィールドラベルまたは ID を受け付けます。カンマを含めることはできず、デフォルトは credential です。項目レベルの vault は、デフォルトの保管庫を上書きします。opBin には op 実行可能ファイルへの絶対パスを設定できます。設定しない場合、Plugin は PATH から op を解決します。項目タイトルの先頭をハイフンにすることはできません。
エージェントツールの使用
ツール名はonepassword です。
登録済みのスラッグを一覧表示します。
reason は必須で、空にすることはできず、300 文字以内に制限されます。成功した get は、値に加えて、設定されたスラッグ、項目タイトル、フィールドラベルを返します。
ツールスキーマでは、内部用の authorizationNonce パラメーターも宣言されています。ポリシー層はリクエストを評価した後、このパラメーターを注入して、実行するツール呼び出しに認可を引き渡します。手動で設定しないでください。指定した値はポリシーフックによって上書きされ、不明な値の場合はリクエストが失敗します。
ポリシー階層と承認
auto:直ちに取得し、リクエストを監査します。deny:リクエストをブロックし、監査します。approve:有効期限内の常時許可を使用するか、人間に今回のみ許可、常に許可、または拒否を求めます。
grantTtlHours 後に失効します。デフォルトは 720 時間です。未解決またはタイムアウトした承認ではリクエストが拒否されます。承認の最大待機時間は 600 秒です。Plugin は最大 1,024 件の常時許可を保持します。この上限に達すると、最も古い許可が削除され、そのエージェントは次回のアクセス時に承認を受ける必要があります。
評価された各認可は 1 回限り使用でき、共有 SQLite 状態を通じて実行するツール呼び出しに引き渡されます。そのため、Gateway プロセス内で複数の Plugin インスタンスが有効な場合でも、この引き渡しは機能します。未使用の認可は 600 秒の承認期間後に失効します。
メモリ内キャッシュのデフォルトは 300 秒で、設定済みのスラッグレジストリによって上限が定められます。無効にするには、cacheTtlSeconds を 0 に設定します。ポリシーはキャッシュ検索のたびに事前評価され、キャッシュヒットも監査されます。ランタイム設定の再読み込みは、各ポリシーおよび実行境界で反映されます。Plugin を無効にした場合、またはスラッグを削除、拒否、もしくは別の対象に変更した場合、保留中の認可とキャッシュされた値は無効になります。
状態と監査履歴の確認
準備状態とレジストリ件数を表示します。op が解決されたかとそのパス、登録済み項目数、およびポリシー別の件数を報告します。トークンやシークレット値を読み取ったり表示したりすることはありません。
最新の 50 件の監査行を表示します。
errorCode、および切り詰められた理由が表示されます。理由は指定されたまま保存されます。ブローカーが取得した値を監査ログに追加することはありません。
1Password CLI の動作
キャッシュミスごとに、設定済みの項目、保管庫、完全一致のフィールドセレクター、JSON 出力、制限付きタイムアウト、および--cache=false を指定して op item get を実行します。子プロセスは項目全体ではなく、そのフィールドのみを受け取ります。子プロセス環境には OP_SERVICE_ACCOUNT_TOKEN と HOME のみが存在します。
Plugin が試行するのは 1 回だけです。RATE_LIMITED エラーが発生した場合は、時間を置いてから後続のエージェントリクエストを行って対処してください。Plugin は自動再試行ループを作成しません。
エラーコード
失敗した試行では、ツール結果と監査行に限定的なエラーコードが 1 つ記録されます。 1Password アクセスエラー:
ポリシーおよび検証エラー: