CLI commands
QR
openclaw qr
現在の Gateway 設定から、モバイルペアリング用 QR とセットアップコードを生成します。
openclaw qropenclaw qr --setup-code-onlyopenclaw qr --jsonopenclaw qr --remoteopenclaw qr --url wss://gateway.example/ws公式の OpenClaw iOS および Android アプリは、セットアップコードのメタデータが一致すると自動的に接続します。リクエストが保留中のままの場合(非公式クライアントやメタデータの不一致など)は、確認して承認します。
openclaw devices listopenclaw devices approve <requestId>オプション
--remote:gateway.remote.urlを優先します。この URL が未設定の場合はgateway.tailscale.mode=serve|funnelにフォールバックします。device-pairPlugin のpublicUrlは無視します。--url <url>: ペイロードで使用する Gateway URL を上書きします--public-url <url>: ペイロードで使用する公開 URL を上書きします--token <token>: ブートストラップフローの認証先となる Gateway トークンを上書きします--password <password>: ブートストラップフローの認証先となる Gateway パスワードを上書きします--setup-code-only: セットアップコードのみを出力します--no-ascii: ASCII QR のレンダリングを省略します--json: JSON(setupCode、gatewayUrl、省略可能なgatewayUrls、auth、urlSource)を出力します
--token と --password は同時に指定できません。
セットアップコードの内容
セットアップコードには、共有 Gateway トークン/パスワードではなく、不透明で有効期間の短い bootstrapToken が含まれます。組み込みのブートストラップフローは、以下を発行します。
scopes: []を持つプライマリnodeトークンoperator.approvals、operator.read、operator.talk.secrets、operator.writeに限定されたoperator引き継ぎトークン
ペアリング変更スコープと operator.admin には、引き続き別途承認済みのオペレーターペアリングまたはトークンフローが必要です。
Gateway URL の解決
モバイルペアリングでは、Tailscale/公開 ws:// Gateway URL は安全側に失敗します。これらには Tailscale Serve/Funnel または wss:// Gateway URL を使用してください。プライベート LAN アドレスと .local Bonjour ホストでは、引き続き平文の ws:// がサポートされます。
選択された Gateway URL が gateway.bind=lan から取得された場合、OpenClaw は永続的な tailscale serve status --json ルートも確認します。アクティブな Gateway のループバックポートをプロキシする HTTPS Serve ルートは、すべてフォールバックとして含まれます。QR コマンドがこのフォールバックを追加するのは lan の場合のみです。custom と tailnet では、明示的に公開されたルートが維持されます。現在の iOS クライアントは公開されたルートを順番にプローブし、最初に到達できたルートを保存します。旧クライアント向けの従来の url フィールドは変更されません。
--remote を使用する場合は、gateway.remote.url または gateway.tailscale.mode=serve|funnel のいずれかが必要です。
認証の解決(--remote なし)
CLI の認証上書きが渡されていない場合、ローカル Gateway 認証の SecretRef は次のように解決されます。
| 条件 | 解決先 |
|---|---|
gateway.auth.mode="token"、または優先されるパスワードソースがない推論モード |
gateway.auth.token |
gateway.auth.mode="password"、または認証設定/環境変数に優先されるトークンがない推論モード |
gateway.auth.password |
gateway.auth.token と gateway.auth.password の両方が設定され(SecretRef を含む)、gateway.auth.mode が未設定 |
失敗します。gateway.auth.mode を明示的に設定してください |
認証の解決(--remote)
実質的に有効なリモート認証情報が SecretRef として設定され、--token と --password のどちらも渡されていない場合、このコマンドはアクティブな Gateway スナップショットから認証情報を解決します。Gateway が利用できない場合、コマンドは即座に失敗します。