Configuration
OpenClaw は~/.openclaw/openclaw.json から任意の config を読み込みます。
このファイルが存在しない場合、OpenClaw は安全なデフォルトを使用します。config を追加する一般的な理由:
- チャネルを接続し、誰がボットにメッセージを送れるかを制御する
- モデル、ツール、sandboxing、または自動化(cron、hooks)を設定する
- セッション、メディア、ネットワーク、または UI を調整する
最小構成
config を編集する
- 対話型ウィザード
- CLI(ワンライナー)
- Control UI
- 直接編集
厳格な検証
スキーマツールに関する注意:openclaw config schemaは、Control UI と config 検証で使用されるものと同じ JSON Schema ファミリーを出力します。- フィールドの
titleとdescriptionの値は、エディターおよびフォームツール向けに スキーマ出力へ引き継がれます。 - ネストしたオブジェクト、ワイルドカード(
*)、および配列アイテム([])のエントリーは、 一致するフィールドドキュメントが存在する場所では、同じドキュメントメタデータを継承します。 anyOf/oneOf/allOfの合成ブランチも同じドキュメントメタデータを 継承するため、union / intersection のバリアントでも同じフィールドヘルプを維持します。config.schema.lookupは、1 つの正規化された config path と、浅い スキーマノード(title、description、type、enum、const、共通の境界値、 および同様の検証フィールド)、一致した UI ヒントメタデータ、さらにドリルダウンツール向けの 直下の子要約を返します。- 実行時の plugin / channel スキーマは、gateway が現在の manifest registry を読み込める場合にマージされます。
- Gateway は起動しません
- 診断コマンドだけが動作します(
openclaw doctor,openclaw logs,openclaw health,openclaw status) - 正確な問題を確認するには
openclaw doctorを実行します - 修復を適用するには
openclaw doctor --fix(または--yes)を実行します
よくある作業
チャネルをセットアップする(WhatsApp、Telegram、Discord など)
チャネルをセットアップする(WhatsApp、Telegram、Discord など)
各チャネルには
channels.<provider> 配下に独自の config セクションがあります。セットアップ手順は各チャネル専用ページを参照してください:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
モデルを選択して設定する
モデルを選択して設定する
プライマリモデルと任意のフォールバックを設定します:
agents.defaults.modelsはモデルカタログを定義し、/modelの allowlist として機能します。- モデル参照は
provider/model形式を使用します(例:anthropic/claude-opus-4-6)。 agents.defaults.imageMaxDimensionPxは transcript / tool 画像のダウンスケーリングを制御します(デフォルト1200)。値を下げると、通常はスクリーンショットの多い実行で vision token 使用量を減らせます。- チャット内でのモデル切り替えについては Models CLI、auth ローテーションとフォールバック動作については Model Failover を参照してください。
- カスタム / セルフホスト型プロバイダーについては、リファレンスの Custom providers を参照してください。
誰がボットにメッセージを送れるかを制御する
誰がボットにメッセージを送れるかを制御する
DM アクセスは、チャネルごとに
dmPolicy で制御されます:"pairing"(デフォルト): 未知の送信者には承認用の 1 回限りの pairing コードが送られます"allowlist":allowFrom内の送信者のみ(または paired allow store)"open": すべての受信 DM を許可します(allowFrom: ["*"]が必要)"disabled": すべての DM を無視します
groupPolicy + groupAllowFrom またはチャネル固有の allowlist を使用します。チャネルごとの詳細については、完全なリファレンス を参照してください。グループチャットのメンションゲーティングを設定する
グループチャットのメンションゲーティングを設定する
グループメッセージはデフォルトで メンション必須 です。エージェントごとにパターンを設定します:
- メタデータメンション: ネイティブの @ メンション(WhatsApp のタップしてメンション、Telegram の @bot など)
- テキストパターン:
mentionPatterns内の安全な regex パターン - チャネルごとのオーバーライドと self-chat モードについては、完全なリファレンス を参照してください。
エージェントごとに Skills を制限する
エージェントごとに Skills を制限する
共通のベースラインには
agents.defaults.skills を使用し、その後
特定のエージェントを agents.list[].skills で上書きします:- デフォルトで Skills を無制限にするには
agents.defaults.skillsを省略します。 - defaults を継承するには
agents.list[].skillsを省略します。 - Skills をなしにするには
agents.list[].skills: []を設定します。 - Skills、Skills config、および Configuration Reference を参照してください。
Gateway のチャネルヘルス監視を調整する
Gateway のチャネルヘルス監視を調整する
停滞しているように見えるチャネルを gateway がどの程度積極的に再起動するかを制御します:
- グローバルにヘルス監視再起動を無効にするには
gateway.channelHealthCheckMinutes: 0を設定します。 channelStaleEventThresholdMinutesは、チェック間隔以上にする必要があります。- グローバル監視を無効にせずに、1 つのチャネルまたはアカウントだけの自動再起動を無効にするには、
channels.<provider>.healthMonitor.enabledまたはchannels.<provider>.accounts.<id>.healthMonitor.enabledを使用します。 - 運用上のデバッグについては Health Checks、すべてのフィールドについては 完全なリファレンス を参照してください。
セッションとリセットを設定する
セッションとリセットを設定する
セッションは会話の継続性と分離を制御します:
dmScope:main(共有) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: スレッドに束縛されたセッションルーティングのグローバルデフォルト(Discord は/focus、/unfocus、/agents、/session idle、/session max-ageをサポート)- スコープ、識別リンク、送信ポリシーについては Session Management を参照してください。
- すべてのフィールドについては 完全なリファレンス を参照してください。
sandboxing を有効にする
sandboxing を有効にする
エージェントセッションを分離された Docker コンテナーで実行します:最初にイメージをビルドします:
scripts/sandbox-setup.sh完全なガイドについては Sandboxing、すべてのオプションについては 完全なリファレンス を参照してください。公式 iOS ビルド向けに relay-backed push を有効にする
公式 iOS ビルド向けに relay-backed push を有効にする
relay-backed push は CLI の同等設定:これにより何が行われるか:
openclaw.json で設定します。Gateway config に次を設定します:- gateway は外部 relay を通じて
push.test、wake nudges、reconnect wakes を送信できるようになります。 - paired iOS app が転送する registration スコープの send grant を使用します。gateway にはデプロイメント全体の relay token は不要です。
- 各 relay-backed registration は、その iOS app が pairing した gateway identity に結び付けられるため、別の gateway が保存済み registration を再利用することはできません。
- ローカル / 手動の iOS ビルドは direct APNs のままです。relay-backed 送信は、relay を通じて登録された公式配布ビルドにのみ適用されます。
- 公式 / TestFlight iOS ビルドに組み込まれた relay base URL と一致している必要があります。これにより registration と送信トラフィックの両方が同じ relay デプロイメントに到達します。
- 同じ relay base URL でコンパイルされた公式 / TestFlight iOS ビルドをインストールします。
- gateway で
gateway.push.apns.relay.baseUrlを設定します。 - iOS app を gateway に pairing し、node セッションと operator セッションの両方を接続します。
- iOS app は gateway identity を取得し、App Attest と app receipt を使って relay に登録し、その後 relay-backed の
push.apns.registerペイロードを paired gateway に公開します。 - gateway は relay handle と send grant を保存し、
push.test、wake nudges、reconnect wakes にそれらを使用します。
- iOS app を別の gateway に切り替えた場合は、app を再接続して、その gateway に結び付いた新しい relay registration を公開できるようにしてください。
- 別の relay デプロイメントを指す新しい iOS ビルドを出荷した場合、app は古い relay origin を再利用する代わりに、キャッシュされた relay registration を更新します。
OPENCLAW_APNS_RELAY_BASE_URLとOPENCLAW_APNS_RELAY_TIMEOUT_MSは、引き続き一時的な env 上書きとして動作します。OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueは、引き続き loopback 専用の開発用エスケープハッチです。HTTP relay URL を config に永続化しないでください。
heartbeat(定期チェックイン)を設定する
heartbeat(定期チェックイン)を設定する
every: 期間文字列(30m、2h)。無効にするには0mを設定します。target:last|none|<channel-id>(例:discord,matrix,telegram,whatsapp)directPolicy: DM 形式の heartbeat ターゲットに対してallow(デフォルト)またはblock- 完全なガイドについては Heartbeat を参照してください。
cron ジョブを設定する
cron ジョブを設定する
sessionRetention: 完了した分離実行セッションをsessions.jsonから削除します(デフォルト24h。無効にするにはfalseを設定)。runLog: サイズと保持行数に基づいてcron/runs/<jobId>.jsonlを削減します。- 機能概要と CLI 例については Cron jobs を参照してください。
webhooks(hooks)をセットアップする
webhooks(hooks)をセットアップする
Gateway で HTTP webhook エンドポイントを有効にします:セキュリティに関する注意:
- すべての hook / webhook ペイロード内容は信頼できない入力として扱ってください。
- 専用の
hooks.tokenを使用してください。共有 Gateway token を再利用しないでください。 - hook 認証はヘッダーのみです(
Authorization: Bearer ...またはx-openclaw-token)。クエリ文字列の token は拒否されます。 hooks.pathを/にすることはできません。webhook 受信は/hooksのような専用サブパスにしてください。- 安全でないコンテンツのバイパスフラグ(
hooks.gmail.allowUnsafeExternalContent、hooks.mappings[].allowUnsafeExternalContent)は、厳密に範囲を絞ったデバッグを行う場合を除き無効のままにしてください。 hooks.allowRequestSessionKeyを有効にする場合は、呼び出し元が選択する session key を制限するためにhooks.allowedSessionKeyPrefixesも設定してください。- hook 駆動エージェントでは、強力で現代的なモデル階層と厳格なツールポリシーを推奨します(たとえば、可能であればメッセージング専用 + sandboxing)。
マルチエージェントルーティングを設定する
マルチエージェントルーティングを設定する
別々の workspace とセッションを持つ複数の分離エージェントを実行します:バインディングルールとエージェントごとのアクセスプロファイルについては、Multi-Agent と 完全なリファレンス を参照してください。
config を複数ファイルに分割する($include)
config を複数ファイルに分割する($include)
大きな config を整理するには
$include を使用します:- 単一ファイル: 含まれているオブジェクトを置き換えます
- ファイル配列: 順番に deep-merge されます(後のものが優先)
- 兄弟キー: include の後にマージされます(含まれた値を上書き)
- ネストした include: 最大 10 階層までサポート
- 相対パス: include 元ファイルを基準に解決
- エラー処理: ファイル欠落、パースエラー、循環 include に対して明確なエラー
config の hot reload
Gateway は~/.openclaw/openclaw.json を監視し、自動的に変更を適用します。ほとんどの設定では手動再起動は不要です。
reload モード
| モード | 動作 |
|---|---|
hybrid(デフォルト) | 安全な変更は即座に hot-apply します。重要な変更は自動的に再起動します。 |
hot | 安全な変更のみ hot-apply します。再起動が必要な場合は警告を記録し、対応は自分で行います。 |
restart | 安全かどうかに関係なく、あらゆる config 変更で Gateway を再起動します。 |
off | ファイル監視を無効にします。変更は次回の手動再起動時に反映されます。 |
hot-apply されるものと再起動が必要なもの
ほとんどのフィールドはダウンタイムなしで hot-apply されます。hybrid モードでは、再起動が必要な変更は自動処理されます。
| カテゴリー | フィールド | 再起動が必要? |
|---|---|---|
| Channels | channels.*, web(WhatsApp)— すべての組み込みおよび extension channels | いいえ |
| Agent & models | agent, agents, models, routing | いいえ |
| Automation | hooks, cron, agent.heartbeat | いいえ |
| Sessions & messages | session, messages | いいえ |
| Tools & media | tools, browser, skills, audio, talk | いいえ |
| UI & misc | ui, logging, identity, bindings | いいえ |
| Gateway server | gateway.*(port、bind、auth、tailscale、TLS、HTTP) | はい |
| Infrastructure | discovery, canvasHost, plugins | はい |
gateway.reload と gateway.remote は例外です。これらの変更では 再起動はトリガーされません。Config RPC(プログラムによる更新)
コントロールプレーンの書き込み RPC(
config.apply, config.patch, update.run)は、deviceId+clientIp ごとに 60 秒あたり 3 リクエスト にレート制限されています。制限された場合、RPC は UNAVAILABLE を retryAfterMs 付きで返します。config.schema.lookup: 浅い スキーマノード、一致したヒントメタデータ、直下の子要約を含む、1 つの path スコープ付き config サブツリーを調べるconfig.get: 現在のスナップショット + hash を取得するconfig.patch: 推奨される部分更新パスconfig.apply: config 全体の置き換え時のみupdate.run: 明示的な self-update + 再起動
config.schema.lookup
の後に config.patch を使うのが推奨です。
config.apply(完全置換)
config.apply(完全置換)
config 全体を検証 + 書き込みし、1 ステップで Gateway を再起動します。パラメーター:
raw(string)— config 全体の JSON5 ペイロードbaseHash(任意)—config.getの config hash(config が存在する場合は必須)sessionKey(任意)— 再起動後の wake-up ping 用 session keynote(任意)— restart sentinel 用メモrestartDelayMs(任意)— 再起動までの遅延(デフォルト 2000)
config.patch(部分更新)
config.patch(部分更新)
部分更新を既存の config にマージします(JSON merge patch セマンティクス):
- オブジェクトは再帰的にマージされる
nullはキーを削除する- 配列は置き換えられる
raw(string)— 変更するキーだけを含む JSON5baseHash(必須)—config.getの config hashsessionKey、note、restartDelayMs—config.applyと同じ
config.apply と同じです。保留中の再起動は集約され、再起動サイクル間には 30 秒のクールダウンが適用されます。環境変数
OpenClaw は、親プロセスからの env vars に加えて、次も読み取ります:- 現在の作業ディレクトリの
.env(存在する場合) ~/.openclaw/.env(グローバルフォールバック)
シェル env のインポート(任意)
シェル env のインポート(任意)
有効な場合、必要なキーが設定されていなければ、OpenClaw はログインシェルを実行し、不足しているキーだけをインポートします:Env var の同等設定:
OPENCLAW_LOAD_SHELL_ENV=1config 値での env var 置換
config 値での env var 置換
任意の config 文字列値で ルール:
${VAR_NAME} を使って env vars を参照できます:- 一致するのは大文字名のみ:
[A-Z_][A-Z0-9_]* - 欠落 / 空の vars は読み込み時にエラーになります
- リテラル出力には
$${VAR}でエスケープします $includeファイル内でも動作します- インライン置換:
"${BASE}/v1"→"https://api.example.com/v1"
Secret ref(env、file、exec)
Secret ref(env、file、exec)
SecretRef オブジェクトをサポートするフィールドでは、次を使用できます:SecretRef の詳細(
env / file / exec 用の secrets.providers を含む)は Secrets Management にあります。
サポートされる認証情報パスは SecretRef Credential Surface に一覧があります。完全なリファレンス
完全なフィールド別リファレンスについては、Configuration Reference を参照してください。関連: Configuration Examples · Configuration Reference · Doctor