設定リファレンス
~/.openclaw/openclaw.json で利用できるすべてのフィールドです。タスク指向の概要については Configuration を参照してください。
config形式はJSON5です(コメントと末尾カンマを使用可能)。すべてのフィールドは任意で、省略時にはOpenClawが安全なデフォルト値を使用します。
Channels
各channelは、そのconfigセクションが存在すれば自動的に開始されます(enabled: false を除く)。
DMとgroupアクセス
すべてのchannelはDMポリシーとgroupポリシーをサポートします。| DM policy | 動作 |
|---|---|
pairing (default) | 未知の送信者には1回限りのpairingコードが送られ、ownerが承認する必要があります |
allowlist | allowFrom 内の送信者のみを許可します(またはpair済みallowストア) |
open | すべての受信DMを許可します(allowFrom: ["*"] が必要) |
disabled | すべての受信DMを無視します |
| Group policy | 動作 |
|---|---|
allowlist (default) | 設定されたallowlistに一致するgroupのみを許可します |
open | group allowlistをバイパスします(mentionによるゲートは引き続き適用されます) |
disabled | すべてのgroup/roomメッセージをブロックします |
channels.defaults.groupPolicy は、プロバイダーの groupPolicy が未設定のときのデフォルトを設定します。
pairingコードは1時間で期限切れになります。保留中のDM pairingリクエストはchannelごとに3件までです。
プロバイダーブロック自体が存在しない場合(channels.<provider> がない場合)、ランタイムのgroup policyは起動時警告付きで allowlist(fail-closed)にフォールバックします。Channel model overrides
channels.modelByChannel を使うと、特定のchannel IDをmodelに固定できます。値には provider/model または設定済みのmodel aliasを指定できます。このchannelマッピングは、セッションにすでにmodel overrideがない場合に適用されます(たとえば /model で設定された場合など)。
Channel defaultsとheartbeat
プロバイダー間で共有するgroup-policyとheartbeat動作にはchannels.defaults を使います。
channels.defaults.groupPolicy: プロバイダーレベルのgroupPolicyが未設定のときのフォールバックgroup policy。channels.defaults.contextVisibility: すべてのchannelに対する補助コンテキスト表示モードのデフォルト。値:all(デフォルト。引用/スレッド/履歴の全コンテキストを含む)、allowlist(allowlistに入っている送信者からのコンテキストのみ含む)、allowlist_quote(allowlistと同じですが、明示的な引用/返信コンテキストは保持)。channelごとの上書き:channels.<channel>.contextVisibility。channels.defaults.heartbeat.showOk: 正常なchannelステータスをheartbeat出力に含めます。channels.defaults.heartbeat.showAlerts: 劣化/エラーステータスをheartbeat出力に含めます。channels.defaults.heartbeat.useIndicator: コンパクトなインジケーター形式のheartbeat出力を描画します。
Multi-account WhatsApp
Multi-account WhatsApp
- 送信コマンドでは、
defaultアカウントが存在すればそれが使われ、なければ設定済みaccount idの先頭(ソート順)が使われます。 - 任意の
channels.whatsapp.defaultAccountを使うと、設定済みaccount idに一致する場合にそのフォールバックのデフォルトアカウント選択を上書きできます。 - 従来の単一accountのBaileys authディレクトリは、
openclaw doctorによってwhatsapp/defaultへ移行されます。 - accountごとの上書き:
channels.whatsapp.accounts.<id>.sendReadReceipts、channels.whatsapp.accounts.<id>.dmPolicy、channels.whatsapp.accounts.<id>.allowFrom。
Telegram
- Bot token:
channels.telegram.botTokenまたはchannels.telegram.tokenFile(通常ファイルのみ。symlinkは拒否)、デフォルトaccountにはTELEGRAM_BOT_TOKENをフォールバックとして使用できます。 - 任意の
channels.telegram.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 - multi-account構成(2つ以上のaccount id)では、フォールバックルーティングを避けるために明示的なデフォルト(
channels.telegram.defaultAccountまたはchannels.telegram.accounts.default)を設定してください。これが欠けているか無効な場合、openclaw doctorが警告します。 configWrites: falseは、Telegram起点のconfig書き込み(supergroup ID移行、/config set|unset)をブロックします。- トップレベルの
bindings[]エントリーでtype: "acp"を使うと、forum topic用の永続ACP bindingを設定します(match.peer.idには canonicalなchatId:topic:topicIdを使用)。フィールドの意味は ACP Agents で共通です。 - Telegramのstream previewは
sendMessage+editMessageTextを使います(direct chatとgroup chatの両方で動作)。 - retryポリシー: Retry policy を参照してください。
Discord
- Token:
channels.discord.token。デフォルトaccountにはDISCORD_BOT_TOKENをフォールバックとして使用できます。 - 明示的なDiscord
tokenを与える直接送信呼び出しは、その呼び出しにそのtokenを使用します。accountのretry/ポリシー設定は、引き続きアクティブなランタイムスナップショットで選ばれたaccountから取得されます。 - 任意の
channels.discord.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 - 配信先には
user:<id>(DM)またはchannel:<id>(guild channel)を使ってください。数字だけのIDは拒否されます。 - Guild slugは小文字で、空白は
-に置き換えられます。channel keyにはslug化した名前(#なし)を使います。guild IDを優先してください。 - Bot自身が書いたメッセージはデフォルトで無視されます。
allowBots: trueで有効化できます。allowBots: "mentions"を使うと、botをmentionしたbotメッセージのみ受け入れます(自分自身のメッセージは引き続き除外されます)。 channels.discord.guilds.<id>.ignoreOtherMentions(およびchannel override)は、他のユーザーやroleをmentionしていてbotをmentionしていないメッセージを破棄します(@everyone/@here は除く)。maxLinesPerMessage(デフォルト17)は、2000文字未満でも縦に長いメッセージを分割します。channels.discord.threadBindingsはDiscordのthread-boundルーティングを制御します。enabled: thread-bound session機能(/focus、/unfocus、/agents、/session idle、/session max-age、およびbound delivery/routing)のDiscord overrideidleHours: 非アクティブ時の自動unfocusのDiscord override(時間単位、0で無効)maxAgeHours: ハードな最大寿命のDiscord override(時間単位、0で無効)spawnSubagentSessions:sessions_spawn({ thread: true })の自動thread作成/binding用opt-inスイッチ
- トップレベルの
bindings[]エントリーでtype: "acp"を使うと、channelとthreadに対する永続ACP bindingを設定します(match.peer.idにchannel/thread idを使います)。フィールドの意味は ACP Agents で共通です。 channels.discord.ui.components.accentColorは、Discord components v2コンテナのアクセントカラーを設定します。channels.discord.voiceはDiscord voice channel会話と、任意のauto-join + TTS overrideを有効にします。channels.discord.voice.daveEncryptionとchannels.discord.voice.decryptionFailureToleranceは、@discordjs/voiceのDAVEオプションにそのまま渡されます(デフォルトはtrueと24)。- OpenClawは、繰り返されるdecrypt失敗の後にvoice sessionをleave/rejoinすることで、音声受信の回復も試みます。
channels.discord.streamingが正規のstream modeキーです。従来のstreamModeと真偽値のstreamingは自動移行されます。channels.discord.autoPresenceは、ランタイムの可用性をbot presenceへマップし(healthy => online、degraded => idle、exhausted => dnd)、任意のステータステキストoverrideも可能にします。channels.discord.dangerouslyAllowNameMatchingは、変更可能なname/tagマッチングを再有効化します(break-glass互換モード)。channels.discord.execApprovals: Discordネイティブのexec承認配信と承認者認可。enabled:true、false、または"auto"(デフォルト)。autoモードでは、承認者がapproversまたはcommands.ownerAllowFromから解決できるとexec承認が有効になります。approvers: execリクエストを承認できるDiscord user ID。省略時はcommands.ownerAllowFromにフォールバックします。agentFilter: 任意のagent ID allowlist。省略するとすべてのagentの承認を転送します。sessionFilter: 任意のsession keyパターン(部分文字列またはregex)。target: 承認プロンプトの送信先。"dm"(デフォルト)は承認者DMへ、"channel"は元のchannelへ、"both"は両方へ送信します。targetに"channel"が含まれる場合、ボタンは解決された承認者のみが使えます。cleanupAfterResolve:trueのとき、承認、拒否、タイムアウト後に承認DMを削除します。
off(なし)、own(botのメッセージ、デフォルト)、all(すべてのメッセージ)、allowlist(guilds.<id>.users に含まれるユーザーからの全メッセージ)。
Google Chat
- Service account JSON: インライン(
serviceAccount)またはファイルベース(serviceAccountFile)。 - Service account SecretRefもサポートしています(
serviceAccountRef)。 - envフォールバック:
GOOGLE_CHAT_SERVICE_ACCOUNTまたはGOOGLE_CHAT_SERVICE_ACCOUNT_FILE。 - 配信先には
spaces/<spaceId>またはusers/<userId>を使います。 channels.googlechat.dangerouslyAllowNameMatchingは、変更可能なemail principalマッチングを再有効化します(break-glass互換モード)。
Slack
- Socket mode には
botTokenとappTokenの両方が必要です(デフォルトaccountのenvフォールバックはSLACK_BOT_TOKEN+SLACK_APP_TOKEN)。 - HTTP mode には
botTokenとsigningSecret(ルートまたはaccountごと)が必要です。 botToken、appToken、signingSecret、userTokenは平文文字列またはSecretRefオブジェクトを受け入れます。- Slack accountスナップショットは、
botTokenSource、botTokenStatus、appTokenStatus、HTTP modeではsigningSecretStatusなどの資格情報ごとのsource/statusフィールドを公開します。configured_unavailableは、そのaccountがSecretRef経由で設定されているが、現在のコマンド/ランタイム経路でsecret値を解決できなかったことを意味します。 configWrites: falseは、Slack起点のconfig書き込みをブロックします。- 任意の
channels.slack.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 channels.slack.streamingが正規のstream modeキーです。従来のstreamModeと真偽値のstreamingは自動移行されます。- 配信先には
user:<id>(DM)またはchannel:<id>を使います。
off、own(デフォルト)、all、allowlist(reactionAllowlist から)。
Thread session分離: thread.historyScope はthread単位(デフォルト)またはchannel共有です。thread.inheritParent は親channelのトランスクリプトを新しいthreadへコピーします。
typingReactionは、返信処理中に受信Slackメッセージへ一時的なreactionを付け、完了時に削除します。Slack emoji shortcode(例:"hourglass_flowing_sand")を使用してください。channels.slack.execApprovals: Slackネイティブのexec承認配信と承認者認可。スキーマはDiscordと同じです:enabled(true/false/"auto")、approvers(Slack user ID)、agentFilter、sessionFilter、target("dm"、"channel"、または"both")。
| Action group | Default | 備考 |
|---|---|---|
| reactions | enabled | React + reaction一覧 |
| messages | enabled | 読み取り/送信/編集/削除 |
| pins | enabled | ピン留め/解除/一覧 |
| memberInfo | enabled | メンバー情報 |
| emojiList | enabled | カスタム絵文字一覧 |
Mattermost
Mattermostはpluginとして提供されます:openclaw plugins install @openclaw/mattermost。
oncall(@-mentionに返信、デフォルト)、onmessage(すべてのメッセージ)、onchar(トリガーprefixで始まるメッセージ)。
Mattermostのネイティブコマンドが有効な場合:
commands.callbackPathはフルURLではなくパスである必要があります(例:/api/channels/mattermost/command)。commands.callbackUrlはOpenClaw Gateway endpointを指し、Mattermostサーバーから到達可能である必要があります。- ネイティブslash callbackは、slash command登録時にMattermostから返されるコマンドごとのtokenで認証されます。登録に失敗した場合、またはコマンドが有効化されていない場合、OpenClawは callbackを
Unauthorized: invalid command token.で拒否します。 - private/tailnet/internalなcallback hostでは、Mattermost側で
ServiceSettings.AllowedUntrustedInternalConnectionsにcallback host/domainを含める必要がある場合があります。 フルURLではなくhost/domain値を使ってください。 channels.mattermost.configWrites: Mattermost起点のconfig書き込みを許可または拒否します。channels.mattermost.requireMention: channelで返信する前に@mentionを要求します。channels.mattermost.groups.<channelId>.requireMention: channelごとのmention-gating override(デフォルトには"*")。- 任意の
channels.mattermost.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。
Signal
off、own(デフォルト)、all、allowlist(reactionAllowlist から)。
channels.signal.account: channel起動を特定のSignal account identityへ固定します。channels.signal.configWrites: Signal起点のconfig書き込みを許可または拒否します。- 任意の
channels.signal.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。
BlueBubbles
BlueBubblesは推奨されるiMessage経路です(pluginベースで、channels.bluebubbles の下で設定します)。
- ここで扱う主要キーパス:
channels.bluebubbles、channels.bluebubbles.dmPolicy。 - 任意の
channels.bluebubbles.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 - トップレベルの
bindings[]エントリーでtype: "acp"を使うと、BlueBubbles会話を永続ACP sessionにbindできます。match.peer.idにはBlueBubbles handleまたはtarget文字列(chat_id:*、chat_guid:*、chat_identifier:*)を使用します。共有フィールドの意味: ACP Agents。 - BlueBubbles channelの完全な設定は BlueBubbles に記載されています。
iMessage
OpenClawはimsg rpc(stdio上のJSON-RPC)を起動します。daemonやportは不要です。
-
任意の
channels.imessage.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 - Messages DBへのFull Disk Accessが必要です。
-
chat_id:<id>のtargetを優先してください。chat一覧はimsg chats --limit 20で確認できます。 -
cliPathにはSSH wrapperを指定できます。SCPで添付を取得する場合はremoteHost(hostまたはuser@host)を設定してください。 -
attachmentRootsとremoteAttachmentRootsは、受信添付のパスを制限します(デフォルト:/Users/*/Library/Messages/Attachments)。 -
SCPはstrict host-key checkingを使用するため、relay host keyがすでに
~/.ssh/known_hostsに存在している必要があります。 -
channels.imessage.configWrites: iMessage起点のconfig書き込みを許可または拒否します。 -
トップレベルの
bindings[]エントリーでtype: "acp"を使うと、iMessage会話を永続ACP sessionにbindできます。match.peer.idには正規化されたhandleまたは明示的なchat target(chat_id:*、chat_guid:*、chat_identifier:*)を使用します。共有フィールドの意味: ACP Agents。
iMessage SSH wrapper例
iMessage SSH wrapper例
Matrix
Matrixはextensionベースで、channels.matrix の下で設定します。
- Token認証は
accessToken、password認証はuserId+passwordを使います。 channels.matrix.proxyはMatrix HTTPトラフィックを明示的なHTTP(S) proxy経由にします。named accountではchannels.matrix.accounts.<id>.proxyで上書きできます。channels.matrix.allowPrivateNetworkはprivate/internal homeserverを許可します。proxyとallowPrivateNetworkは独立した制御です。channels.matrix.defaultAccountはmulti-account構成で優先accountを選択します。channels.matrix.execApprovals: Matrixネイティブのexec承認配信と承認者認可。enabled:true、false、または"auto"(デフォルト)。autoモードでは、承認者がapproversまたはcommands.ownerAllowFromから解決できるとexec承認が有効になります。approvers: execリクエストを承認できるMatrix user ID(例:@owner:example.org)。agentFilter: 任意のagent ID allowlist。省略するとすべてのagentの承認を転送します。sessionFilter: 任意のsession keyパターン(部分文字列またはregex)。target: 承認プロンプトの送信先。"dm"(デフォルト)、"channel"(元のroom)、または"both"。- accountごとの上書き:
channels.matrix.accounts.<id>.execApprovals。
- Matrixのstatus probeとlive directory lookupは、ランタイムトラフィックと同じproxyポリシーを使います。
- Matrixの完全な設定、targetingルール、セットアップ例は Matrix に記載されています。
Microsoft Teams
Microsoft Teamsはextensionベースで、channels.msteams の下で設定します。
- ここで扱う主要キーパス:
channels.msteams、channels.msteams.configWrites。 - Teamsの完全なconfig(資格情報、webhook、DM/group policy、team/channelごとのoverride)は Microsoft Teams に記載されています。
IRC
IRCはextensionベースで、channels.irc の下で設定します。
- ここで扱う主要キーパス:
channels.irc、channels.irc.dmPolicy、channels.irc.configWrites、channels.irc.nickserv.*。 - 任意の
channels.irc.defaultAccountを使うと、設定済みaccount idに一致する場合にデフォルトaccount選択を上書きできます。 - IRC channelの完全な設定(host/port/TLS/channels/allowlist/mention gating)は IRC に記載されています。
Multi-account(全channels共通)
channelごとに複数accountを実行できます(それぞれ独自のaccountId を持ちます)。
accountIdを省略した場合(CLI + routing)はdefaultが使われます。- env tokenはdefault accountにのみ適用されます。
- ベースとなるchannel設定は、accountごとに上書きされない限りすべてのaccountに適用されます。
- 各accountを別のagentへルーティングするには
bindings[].match.accountIdを使います。 openclaw channels add(またはchannel onboarding)でnon-default accountを追加する際に、まだ単一accountのトップレベルchannel configを使っている場合、OpenClawはまずaccountスコープ付きのトップレベル単一account値をchannel account mapへ昇格し、元のaccountが動作し続けるようにします。ほとんどのchannelではこれらをchannels.<channel>.accounts.defaultへ移動します。Matrixでは既存の一致するnamed/default targetを代わりに保持できる場合があります。- 既存のchannel-only binding(
accountIdなし)は引き続きdefault accountに一致し、accountスコープ付きbindingは任意のままです。 openclaw doctor --fixも、accountスコープ付きトップレベル単一account値をそのchannelで選ばれた昇格先accountへ移動することで、混在した形を修復します。ほとんどのchannelはaccounts.defaultを使います。Matrixでは既存の一致するnamed/default targetを代わりに保持できる場合があります。
その他のextension channel
多くのextension channelはchannels.<id> として設定され、それぞれ専用のchannelページに記載されています(たとえば Feishu、Matrix、LINE、Nostr、Zalo、Nextcloud Talk、Synology Chat、Twitch など)。
完全なchannel一覧は Channels を参照してください。
Group chatのmention gating
groupメッセージはデフォルトでmention必須です(メタデータのmentionまたは安全なregexパターン)。WhatsApp、Telegram、Discord、Google Chat、iMessageのgroup chatに適用されます。 Mentionの種類:- メタデータmention: プラットフォームネイティブの @-mention。WhatsApp self-chatモードでは無視されます。
- テキストパターン:
agents.list[].groupChat.mentionPatternsの安全なregexパターン。無効なパターンや危険なネスト反復は無視されます。 - mention gatingは、検出が可能な場合(ネイティブmentionまたは少なくとも1つのパターン)にのみ強制されます。
messages.groupChat.historyLimit はグローバルデフォルトを設定します。channelは channels.<channel>.historyLimit(またはaccountごと)で上書きできます。0 で無効化します。
DM履歴上限
telegram、whatsapp、discord、slack、signal、imessage、msteams。
Self-chat mode
自分自身の番号をallowFrom に含めるとself-chat modeを有効にできます(ネイティブ @-mentionを無視し、テキストパターンにのみ応答します)。
Commands(chat command handling)
Commandの詳細
Commandの詳細
- Text commandは、先頭が
/の単独メッセージである必要があります。 native: "auto"はDiscord/Telegramのネイティブcommandを有効にし、Slackでは無効のままにします。- channelごとにoverride:
channels.discord.commands.native(bool または"auto")。falseは以前登録されたcommandを削除します。 channels.telegram.customCommandsは追加のTelegram bot menuエントリーを追加します。bash: trueはhost shellへの! <cmd>を有効にします。tools.elevated.enabledが必要で、送信者がtools.elevated.allowFrom.<channel>に含まれている必要があります。config: trueは/configを有効にします(openclaw.jsonの読み書き)。gatewaychat.sendclientでは、永続的な/config set|unset書き込みにはoperator.adminも必要です。読み取り専用の/config showは通常の書き込みスコープを持つoperator clientでも引き続き利用できます。channels.<provider>.configWritesはchannelごとのconfig変更を制御します(デフォルト: true)。- multi-account channelでは、
channels.<provider>.accounts.<id>.configWritesも、そのaccountを対象とする書き込み(たとえば/allowlist --config --account <id>や/config set channels.<provider>.accounts.<id>...)を制御します。 allowFromはproviderごとです。設定されている場合、それが唯一の認可ソースになります(channel allowlist/pairing およびuseAccessGroupsは無視されます)。useAccessGroups: falseは、allowFromが設定されていない場合にcommandがaccess-group policyをバイパスできるようにします。
Agent defaults
agents.defaults.workspace
デフォルト: ~/.openclaw/workspace。
agents.defaults.repoRoot
システムプロンプトのRuntime行に表示される任意のrepository rootです。未設定の場合、OpenClawはworkspaceから上方向へたどって自動検出します。
agents.defaults.skills
agents.list[].skills を設定していないagent向けの、任意のデフォルトskill allowlistです。
- デフォルトでskillsを無制限にするには
agents.defaults.skillsを省略します。 - defaultsを継承するには
agents.list[].skillsを省略します。 - skillなしにするには
agents.list[].skills: []を設定します。 - 空でない
agents.list[].skillsリストは、そのagentの最終セットです。defaultsとはマージされません。
agents.defaults.skipBootstrap
workspace bootstrapファイル(AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md、BOOTSTRAP.md)の自動作成を無効化します。
agents.defaults.bootstrapMaxChars
切り詰め前のworkspace bootstrapファイルごとの最大文字数。デフォルト: 20000。
agents.defaults.bootstrapTotalMaxChars
すべてのworkspace bootstrapファイルにまたがって注入される合計最大文字数。デフォルト: 150000。
agents.defaults.bootstrapPromptTruncationWarning
bootstrap contextが切り詰められたときのagent可視警告テキストを制御します。
デフォルト: "once"。
"off": 警告テキストをシステムプロンプトへ注入しません。"once": 一意の切り詰めシグネチャごとに1回だけ警告を注入します(推奨)。"always": 切り詰めが存在するたびに毎回警告を注入します。
agents.defaults.imageMaxDimensionPx
プロバイダー呼び出し前のtranscript/tool imageブロックにおける、画像の長辺の最大ピクセルサイズ。
デフォルト: 1200。
低い値にすると、スクリーンショットが多い実行でvision-token使用量とリクエストpayloadサイズが通常は減ります。
高い値ではより多くの視覚的詳細が保持されます。
agents.defaults.userTimezone
システムプロンプトcontext用のtimezoneです(メッセージタイムスタンプではありません)。host timezoneへフォールバックします。
agents.defaults.timeFormat
システムプロンプト内の時刻形式。デフォルト: auto(OS設定)。
agents.defaults.model
model: 文字列("provider/model")またはオブジェクト({ primary, fallbacks })を受け入れます。- 文字列形式はprimary modelのみを設定します。
- オブジェクト形式はprimaryに加えて順序付きfailover modelを設定します。
imageModel: 文字列("provider/model")またはオブジェクト({ primary, fallbacks })を受け入れます。imagetool経路のvision-model設定として使われます。- 選択された/デフォルトのmodelが画像入力を受け付けられない場合のfallback routingにも使われます。
imageGenerationModel: 文字列("provider/model")またはオブジェクト({ primary, fallbacks })を受け入れます。- 共通の画像生成capabilityと、今後画像を生成するtool/plugin surfaceで使われます。
- 一般的な値: Geminiネイティブ画像生成には
google/gemini-3.1-flash-image-preview、falにはfal/fal-ai/flux/dev、OpenAI Imagesにはopenai/gpt-image-1。 - provider/modelを直接選ぶ場合は、対応するprovider認証/API keyも設定してください(たとえば
google/*にはGEMINI_API_KEYまたはGOOGLE_API_KEY、openai/*にはOPENAI_API_KEY、fal/*にはFAL_KEY)。 - 省略しても、
image_generateは認証済みproviderのデフォルトを推測できます。まず現在のデフォルトproviderを試し、その後、残りの登録済み画像生成providerをprovider-id順に試します。
videoGenerationModel: 文字列("provider/model")またはオブジェクト({ primary, fallbacks })を受け入れます。- 共通の動画生成capabilityで使われます。
- 一般的な値:
qwen/wan2.6-t2v、qwen/wan2.6-i2v、qwen/wan2.6-r2v、qwen/wan2.6-r2v-flash、qwen/wan2.7-r2v。 - 共通の動画生成を使う前に明示的に設定してください。
imageGenerationModelと違い、動画生成ランタイムはまだproviderデフォルトを推測しません。 - provider/modelを直接選ぶ場合は、対応するprovider認証/API keyも設定してください。
- バンドルされたQwen動画生成providerは現在、最大1本の出力動画、1枚の入力画像、4本の入力動画、10秒の長さ、およびproviderレベルの
size、aspectRatio、resolution、audio、watermarkオプションをサポートします。
pdfModel: 文字列("provider/model")またはオブジェクト({ primary, fallbacks })を受け入れます。pdftoolのmodel routingに使われます。- 省略時は、PDF toolは
imageModel、次に解決済みsession/default modelへフォールバックします。
pdfMaxBytesMb: 呼び出し時にmaxBytesMbが渡されない場合のpdftool用デフォルトPDFサイズ上限。pdfMaxPages:pdftoolの抽出fallback modeで考慮するデフォルト最大ページ数。verboseDefault: agentのデフォルトverboseレベル。値:"off"、"on"、"full"。デフォルト:"off"。elevatedDefault: agentのデフォルトelevated-outputレベル。値:"off"、"on"、"ask"、"full"。デフォルト:"on"。model.primary:provider/model形式(例:openai/gpt-5.4)。providerを省略した場合、OpenClawはまずalias、次にそのmodel idに一意に一致するconfigured-provider、最後にconfigured default providerを試します(後方互換のための非推奨動作なので、明示的なprovider/modelを推奨します)。そのproviderが設定済みのdefault modelをもう公開していない場合、OpenClawは古い削除済みprovider defaultを表面化する代わりに、最初のconfigured provider/modelへフォールバックします。models:/model用のconfigured model catalog兼allowlist。各エントリーにはalias(shortcut)とparams(provider固有。たとえばtemperature、maxTokens、cacheRetention、context1m)を含められます。params: すべてのmodelに適用されるグローバルデフォルトprovider parameter。agents.defaults.paramsで設定します(例:{ cacheRetention: "long" })。paramsのマージ優先順位(config):agents.defaults.params(グローバル基底)をagents.defaults.models["provider/model"].params(modelごと)が上書きし、さらにagents.list[].params(一致するagent id)がキー単位で上書きします。詳細は Prompt Caching を参照してください。- これらのフィールドを書き換えるconfig writer(たとえば
/models set、/models set-image、fallback add/remove command)は、正規のオブジェクト形式で保存し、可能な限り既存のfallback listを保持します。 maxConcurrent: session間での並列agent実行数の最大値(各session自体は直列)。デフォルト: 4。
agents.defaults.models に存在する場合のみ適用):
| Alias | Model |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off を設定するか agents.defaults.models["zai/<model>"].params.thinking を自分で定義しない限り、自動的にthinking modeを有効にします。
Z.AI modelはtool call streamingのためにデフォルトで tool_stream を有効にします。無効化するには agents.defaults.models["zai/<model>"].params.tool_stream を false に設定してください。
Anthropic Claude 4.6 modelは、明示的なthinking levelが設定されていない場合に adaptive thinkingをデフォルトとします。
agents.defaults.cliBackends
テキスト専用のfallback実行(tool callなし)向けの任意のCLI backendです。API providerが失敗したときのバックアップとして便利です。
- CLI backendはテキスト優先で、toolは常に無効です。
sessionArgを設定するとsessionをサポートします。imageArgがファイルパスを受け入れる場合は画像のパススルーをサポートします。
agents.defaults.heartbeat
定期heartbeat実行です。
every: duration文字列(ms/s/m/h)。デフォルトはAPI-key認証で30m、OAuth認証で1h。無効化するには0mを設定します。suppressToolErrorWarnings: trueのとき、heartbeat実行中のtool error warning payloadを抑制します。directPolicy: direct/DM配信ポリシー。allow(デフォルト)はdirect-target配信を許可します。blockはdirect-target配信を抑制し、reason=dm-blockedを出力します。lightContext: trueのとき、heartbeat実行は軽量bootstrap contextを使い、workspace bootstrap filesからHEARTBEAT.mdのみ保持します。isolatedSession: trueのとき、各heartbeat実行は以前の会話履歴なしの新しいsessionで行われます。cronのsessionTarget: "isolated"と同じ分離パターンです。heartbeatあたりのtokenコストを約100Kから約2-5Kへ減らします。- agentごと:
agents.list[].heartbeatを設定します。いずれかのagentがheartbeatを定義している場合、heartbeatを実行するのはそれらのagentのみです。 - heartbeatは完全なagent turnを実行するため、間隔を短くするとより多くのtokenを消費します。
agents.defaults.compaction
mode:defaultまたはsafeguard(長い履歴に対するチャンク化要約)。Compaction を参照してください。timeoutSeconds: 単一のcompaction操作に許可される最大秒数。これを超えるとOpenClawはcompactionを中止します。デフォルト:900。identifierPolicy:strict(デフォルト)、off、またはcustom。strictはcompaction要約時に組み込みのopaque identifier保持ガイダンスを前置します。identifierInstructions:identifierPolicy=customのときに使用する任意のカスタムidentifier保持テキスト。postCompactionSections: compaction後に再注入する任意のAGENTS.md H2/H3セクション名。デフォルトは["Session Startup", "Red Lines"]です。[]にすると再注入を無効化します。未設定か明示的にそのデフォルトペアに設定されている場合、旧来のEvery Session/Safety見出しもレガシーフォールバックとして受け入れます。model: compaction要約専用の任意のprovider/model-idoverride。メインsessionは1つのmodelを使い続けつつ、compaction要約だけ別modelで実行したい場合に使用します。未設定時はsessionのprimary modelを使います。notifyUser:trueのとき、compaction開始時にユーザーへ短い通知(たとえば「Compacting context…」)を送ります。デフォルトでは静かにcompactionを行うため無効です。memoryFlush: auto-compaction前に永続memoryを保存するためのサイレントなagent turn。workspaceがread-onlyならスキップされます。
agents.defaults.contextPruning
LLMへ送る前に、メモリ内contextから古いtool result をpruneします。ディスク上のsession historyは変更しません。
cache-ttl modeの動作
cache-ttl modeの動作
mode: "cache-ttl"でpruningパスを有効にします。ttlは、最後のcache touch後に再びpruningを実行できるまでの間隔を制御します。- pruningはまず大きすぎるtool resultをsoft-trimし、必要ならさらに古いtool resultをhard-clearします。
... を挿入します。Hard-clear はtool result全体をplaceholderで置き換えます。注意:- image blockは一切trim/clearされません。
- 比率は文字数ベースの近似であり、正確なtoken数ではありません。
keepLastAssistants未満のassistantメッセージしかない場合、pruningはスキップされます。
Block streaming
- Telegram以外のchannelでは、block replyを有効にするには明示的に
*.blockStreaming: trueが必要です。 - channel override:
channels.<channel>.blockStreamingCoalesce(およびaccountごとの同等設定)。Signal/Slack/Discord/Google ChatのデフォルトはminChars: 1500。 humanDelay: block reply間のランダムな待機。natural= 800–2500ms。agentごとのoverride:agents.list[].humanDelay。
Typing indicators
- デフォルト: direct chat/mentionでは
instant、mentionされていないgroup chatではmessage。 - sessionごとのoverride:
session.typingMode、session.typingIntervalSeconds。
agents.defaults.sandbox
embedded agent用の任意のsandboxingです。完全なガイドは Sandboxing を参照してください。
Sandboxの詳細
Sandboxの詳細
Backend:OpenShell mode:
docker: ローカルDockerランタイム(デフォルト)ssh: 汎用SSHベースのremote runtimeopenshell: OpenShell runtime
backend: "openshell" を選んだ場合、runtime固有設定は
plugins.entries.openshell.config に移ります。SSH backend config:target:user@host[:port]形式のSSH targetcommand: SSH client command(デフォルト:ssh)workspaceRoot: スコープごとのworkspaceに使うabsoluteなremote rootidentityFile/certificateFile/knownHostsFile: OpenSSHに渡す既存ローカルファイルidentityData/certificateData/knownHostsData: OpenClawが実行時に一時ファイルへ実体化するインライン内容またはSecretRefstrictHostKeyChecking/updateHostKeys: OpenSSHのhost-keyポリシー設定
identityDataはidentityFileより優先certificateDataはcertificateFileより優先knownHostsDataはknownHostsFileより優先- SecretRefベースの
*Data値は、sandbox session開始前に有効なsecrets runtime snapshotから解決されます
- createまたはrecreate後にremote workspaceを一度seedする
- その後、remote SSH workspaceを正とする
exec、file tools、media pathをSSH経由でルーティングする- remote変更をhostへ自動同期しない
- sandbox browser containerはサポートしない
none:~/.openclaw/sandboxes配下のスコープごとのsandbox workspacero:/workspaceのsandbox workspaceに加え、agent workspaceを/agentへread-only mountrw: agent workspaceを/workspaceにread/writeでmount
session: sessionごとのcontainer + workspaceagent: agentごとに1つのcontainer + workspace(デフォルト)shared: 共有containerとworkspace(session間分離なし)
mirror: exec前にlocalからremoteへseedし、exec後に同期し戻す。local workspaceが正となるremote: sandbox作成時に一度だけremoteへseedし、その後remote workspaceを正とする
remote modeでは、seed後にOpenClaw外でhost-localに加えた変更は自動同期されません。
transportはOpenShell sandboxへのSSHですが、sandbox lifecycleと任意のmirror syncはpluginが管理します。setupCommand はcontainer作成後に1回だけ実行されます(sh -lc 経由)。network egress、書き込み可能root、root userが必要です。Containerのデフォルトは network: "none" です。agentに外部アクセスが必要なら "bridge"(またはカスタムbridge network)へ設定してください。
"host" はブロックされます。"container:<id>" もデフォルトではブロックされますが、
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true を明示的に設定した場合のみ許可されます(break-glass)。受信添付 は、アクティブworkspaceの media/inbound/* へステージされます。docker.binds は追加のhost directoryをmountします。グローバルbindとagentごとのbindはマージされます。Sandboxed browser(sandbox.browser.enabled): container内のChromium + CDP。system promptへnoVNC URLが注入されます。openclaw.json で browser.enabled を有効にする必要はありません。
noVNC observer accessはデフォルトでVNC認証を使用し、OpenClawは共有URLにpasswordを露出する代わりに短命token URLを発行します。allowHostControl: false(デフォルト)は、sandboxed sessionがhost browserをtargetにすることをブロックします。networkのデフォルトはopenclaw-sandbox-browser(専用bridge network)です。グローバルbridge接続を明示的に望む場合のみbridgeに設定してください。cdpSourceRangeでは、container edgeでのCDP ingressをCIDR範囲(例:172.21.0.1/32)に制限できます。sandbox.browser.bindsは追加のhost directoryをsandbox browser containerにのみmountします。設定された場合([]を含む)、browser containerではdocker.bindsを置き換えます。- 起動時のデフォルトは
scripts/sandbox-browser-entrypoint.shで定義され、container host向けに調整されています:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(デフォルトで有効)--disable-3d-apis、--disable-software-rasterizer、--disable-gpuはデフォルトで有効で、WebGL/3D用途で必要な場合はOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0で無効にできます。OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0で、workflowが依存している場合に拡張機能を再有効化できます。--renderer-process-limit=2はOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>で変更できます。0にするとChromiumのデフォルト上限を使います。noSandboxが有効な場合は、これに加えて--no-sandboxと--disable-setuid-sandbox。- デフォルトはcontainer imageのベースラインです。containerのデフォルトを変えたい場合は、custom browser imageとcustom entrypointを使用してください。
sandbox.docker.binds は現在Docker専用です。
imageをbuildするには:
agents.list(agentごとのoverride)
id: 安定したagent id(必須)。default: 複数設定されている場合、最初のものが勝ちます(警告を記録)。何も設定されていなければ、リストの最初のエントリーがデフォルトです。model: 文字列形式はprimaryのみを上書きし、オブジェクト形式{ primary, fallbacks }は両方を上書きします([]でグローバルfallbackを無効化)。primaryだけを上書きするcron jobは、fallbacks: []を設定しない限りデフォルトfallbackを継承します。params: 選択されたmodel entryに対してagents.defaults.modelsからマージされるagentごとのstream paramsです。cacheRetention、temperature、maxTokensなどのagent固有overrideを、model catalog全体を複製せずに設定するのに使います。skills: 任意のagentごとのskill allowlist。省略時は、agents.defaults.skillsが設定されていればそれを継承します。明示リストはdefaultsをマージせず置き換え、[]はskillなしを意味します。thinkingDefault: 任意のagentごとのデフォルトthinking level(off | minimal | low | medium | high | xhigh | adaptive)。メッセージごとまたはsession overrideがないとき、このagentのagents.defaults.thinkingDefaultを上書きします。reasoningDefault: 任意のagentごとのデフォルトreasoning visibility(on | off | stream)。メッセージごとまたはsessionのreasoning overrideがないときに適用されます。fastModeDefault: 任意のagentごとのデフォルトfast mode(true | false)。メッセージごとまたはsessionのfast-mode overrideがないときに適用されます。runtime: 任意のagentごとのruntime descriptor。agentのデフォルトをACP harness sessionにしたい場合はtype: "acp"とruntime.acpdefaults(agent、backend、mode、cwd)を使います。identity.avatar: workspace相対パス、http(s)URL、またはdata:URI。identityはデフォルトを導出します:ackReactionはemojiから、mentionPatternsはname/emojiから。subagents.allowAgents:sessions_spawn用のagent id allowlist(["*"]= 任意。デフォルト: 同じagentのみ)。- Sandbox継承ガード: 要求元sessionがsandboxedの場合、
sessions_spawnはunsandboxedで実行されるtargetを拒否します。 subagents.requireAgentId: trueのとき、agentIdを省略したsessions_spawn呼び出しをブロックします(明示的なprofile選択を強制。デフォルト: false)。
Multi-agent routing
1つのGateway内で複数の分離されたagentを実行します。Multi-Agent を参照してください。Bindingのmatchフィールド
type(任意): 通常のroutingにはroute(type省略時もroute)、永続ACP conversation bindingにはacp。match.channel(必須)match.accountId(任意。*= 任意のaccount、省略 = デフォルトaccount)match.peer(任意。{ kind: direct|group|channel, id })match.guildId/match.teamId(任意。channel固有)acp(任意。type: "acp"の場合のみ):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(peer/guild/teamなしの完全一致)match.accountId: "*"(channel-wide)- デフォルトagent
bindings エントリーが勝ちます。
type: "acp" エントリーでは、OpenClawは正確なconversation identity(match.channel + account + match.peer.id)で解決し、上記のroute binding tier順は使いません。
Agentごとのaccess profile
フルアクセス(sandboxなし)
フルアクセス(sandboxなし)
読み取り専用tools + workspace
読み取り専用tools + workspace
ファイルシステムアクセスなし(messagingのみ)
ファイルシステムアクセスなし(messagingのみ)
Session
Sessionフィールドの詳細
Sessionフィールドの詳細
scope: group-chat context用の基本session grouping戦略。per-sender(デフォルト): channel context内で各送信者が独立したsessionを持ちます。global: channel context内の全参加者で1つのsessionを共有します(共有contextが意図される場合のみ使用)。
dmScope: DMのグルーピング方法。main: すべてのDMがmain sessionを共有。per-peer: channelをまたいで送信者idごとに分離。per-channel-peer: channel + 送信者ごとに分離(multi-user inboxに推奨)。per-account-channel-peer: account + channel + 送信者ごとに分離(multi-accountに推奨)。
identityLinks: channel横断でsession共有するため、canonical idをprovider-prefix付きpeerへマップします。reset: 主要なreset policy。dailyはローカル時刻atHourでresetし、idleはidleMinutes後にresetします。両方設定されている場合、先に期限が来た方が優先されます。resetByType: typeごとのoverride(direct、group、thread)。legacyのdmもdirectのaliasとして受け入れます。parentForkMaxTokens: forkされたthread sessionを作成するときに許可する親sessiontotalTokensの最大値(デフォルト100000)。- 親の
totalTokensがこの値を超える場合、OpenClawは親トランスクリプト履歴を継承せず、新しいthread sessionを開始します。 - このガードを無効にして常に親forkを許可するには
0を設定します。
- 親の
mainKey: legacyフィールド。ランタイムは現在、main direct-chat bucketに常に"main"を使用します。agentToAgent.maxPingPongTurns: agent間のやり取りで許可されるreply-back turn数の最大値(整数、範囲:0–5)。0でping-pong連鎖を無効化します。sendPolicy:channel、chatType(direct|group|channel、legacyのdmaliasあり)、keyPrefix、またはrawKeyPrefixでマッチします。最初のdenyが勝ちます。maintenance: session-storeのcleanup + 保持制御。mode:warnは警告のみ、enforceはcleanupを適用。pruneAfter: 古いエントリーの期限(デフォルト30d)。maxEntries:sessions.json内の最大エントリー数(デフォルト500)。rotateBytes:sessions.jsonがこのサイズを超えたときにrotateします(デフォルト10mb)。resetArchiveRetention:*.reset.<timestamp>transcript archiveの保持期間。デフォルトはpruneAfter。無効化するにはfalse。maxDiskBytes: 任意のsessions directoryディスク予算。warnモードでは警告を記録し、enforceモードでは最も古いartifact/sessionから削除します。highWaterBytes: 予算cleanup後の任意target。デフォルトはmaxDiskBytesの80%。
threadBindings: thread-bound session機能のグローバルデフォルト。enabled: マスターのデフォルトスイッチ(providerが上書き可能。Discordはchannels.discord.threadBindings.enabledを使用)idleHours: 非アクティブ時の自動unfocusのデフォルト時間(0で無効。providerがoverride可能)maxAgeHours: ハードな最大寿命のデフォルト時間(0で無効。providerがoverride可能)
Messages
Response prefix
channel/accountごとのoverride:channels.<channel>.responsePrefix、channels.<channel>.accounts.<id>.responsePrefix。
解決順(最も具体的なものが優先): account → channel → global。"" は無効化し、cascadeを止めます。"auto" は [{identity.name}] を導出します。
Template変数:
| Variable | 説明 | 例 |
|---|---|---|
{model} | 短いmodel名 | claude-opus-4-6 |
{modelFull} | 完全なmodel識別子 | anthropic/claude-opus-4-6 |
{provider} | provider名 | anthropic |
{thinkingLevel} | 現在のthinking level | high, low, off |
{identity.name} | agent identity名 | ("auto" と同じ) |
{think} は {thinkingLevel} のaliasです。
Ack reaction
- デフォルトはアクティブagentの
identity.emoji、なければ"👀"。無効化するには""を設定します。 - channelごとのoverride:
channels.<channel>.ackReaction、channels.<channel>.accounts.<id>.ackReaction。 - 解決順: account → channel →
messages.ackReaction→ identity fallback。 - Scope:
group-mentions(デフォルト)、group-all、direct、all。 removeAckAfterReply: Slack、Discord、Telegramで返信後にackを削除します。messages.statusReactions.enabled: Slack、Discord、Telegramでライフサイクルstatus reactionを有効にします。 SlackとDiscordでは、未設定ならack reactionが有効なときにstatus reactionも有効のままです。 Telegramでは、ライフサイクルstatus reactionを有効にするには明示的にtrueを設定してください。
Inbound debounce
同じ送信者からの高速なテキストのみメッセージを1つのagent turnへまとめます。media/attachmentは即座にflushします。control commandはdebouncingをバイパスします。TTS(text-to-speech)
autoはauto-TTSを制御します。/tts off|always|inbound|taggedはsessionごとに上書きします。summaryModelはauto-summary用にagents.defaults.model.primaryを上書きします。modelOverridesはデフォルトで有効です。modelOverrides.allowProviderのデフォルトはfalse(opt-in)。- API keyは
ELEVENLABS_API_KEY/XI_API_KEYとOPENAI_API_KEYへフォールバックします。 openai.baseUrlはOpenAI TTS endpointを上書きします。解決順はconfig、次にOPENAI_TTS_BASE_URL、最後にhttps://api.openai.com/v1。openai.baseUrlが非OpenAI endpointを指している場合、OpenClawはそれをOpenAI互換TTS serverとして扱い、model/voice検証を緩和します。
Talk
Talk mode(macOS/iOS/Android)のデフォルトです。talk.providerは、複数のTalk providerを設定する場合にtalk.providersのキーと一致している必要があります。- 従来のフラットなTalkキー(
talk.voiceId、talk.voiceAliases、talk.modelId、talk.outputFormat、talk.apiKey)は互換性専用で、自動的にtalk.providers.<provider>へ移行されます。 - Voice IDは
ELEVENLABS_VOICE_IDまたはSAG_VOICE_IDへフォールバックします。 providers.*.apiKeyは平文文字列またはSecretRefオブジェクトを受け入れます。ELEVENLABS_API_KEYのフォールバックは、Talk API keyが設定されていない場合にのみ適用されます。providers.*.voiceAliasesを使うと、Talk directiveでフレンドリーな名前を使えます。silenceTimeoutMsは、Talk modeがユーザーの無音後どれだけ待ってからtranscriptを送信するかを制御します。未設定の場合はプラットフォームのデフォルト待機時間(macOSとAndroidで700 ms、iOSで900 ms)を使います。
Tools
Tool profile
tools.profile は、tools.allow/tools.deny より前に適用されるベースallowlistを設定します。
ローカルオンボーディングでは、未設定の場合の新しいlocal configを tools.profile: "coding" に設定します(既存の明示profileは保持されます)。
| Profile | 内容 |
|---|---|
minimal | session_status のみ |
coding | group:fs、group:runtime、group:web、group:sessions、group:memory、cron、image、image_generate |
messaging | group:messaging、sessions_list、sessions_history、sessions_send、session_status |
full | 制限なし(未設定と同じ) |
Tool group
| Group | Tools |
|---|---|
group:runtime | exec, process, code_execution(bash も exec のaliasとして受け入れられます) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, tts |
group:openclaw | すべての組み込みtool(provider pluginは除く) |
tools.allow / tools.deny
グローバルなtool allow/deny policyです(denyが勝ちます)。大文字小文字を区別せず、* wildcardをサポートします。Docker sandboxがoffでも適用されます。
tools.byProvider
特定のproviderまたはmodelに対してtoolsをさらに制限します。順序: ベースprofile → provider profile → allow/deny。
tools.elevated
sandbox外でのelevated exec accessを制御します。
- agentごとのoverride(
agents.list[].tools.elevated)は、さらに制限することしかできません。 /elevated on|off|ask|fullはstateをsessionごとに保存し、インラインdirectiveは単一メッセージに適用されます。- Elevated
execはsandboxingをバイパスし、設定されたescape path(デフォルトではgateway、exec targetがnodeの場合はnode)を使います。
tools.exec
tools.loopDetection
tool-loopの安全チェックはデフォルトで無効です。検出を有効にするには enabled: true を設定します。
設定はグローバルな tools.loopDetection で定義でき、agentごとに agents.list[].tools.loopDetection でoverrideできます。
historySize: loop解析のために保持するtool-call履歴の最大数。warningThreshold: no-progressな繰り返しパターンに対する警告閾値。criticalThreshold: 重大loopをブロックするための、より高い繰り返し閾値。globalCircuitBreakerThreshold: 任意のno-progress実行を強制停止する閾値。detectors.genericRepeat: 同じtool/同じargsの繰り返し呼び出しを警告。detectors.knownPollNoProgress: 既知のpoll tool(process.poll、command_statusなど)に対するno-progressを警告/ブロック。detectors.pingPong: 交互に発生するno-progress pairパターンを警告/ブロック。warningThreshold >= criticalThresholdまたはcriticalThreshold >= globalCircuitBreakerThresholdの場合、検証に失敗します。
tools.web
tools.media
受信media理解(image/audio/video)を設定します。
Media model entryフィールド
Media model entryフィールド
Provider entry(
type: "provider" または省略):provider: API provider id(openai、anthropic、google/gemini、groqなど)model: model id overrideprofile/preferredProfile:auth-profiles.jsonのprofile選択
type: "cli"):command: 実行する実行ファイルargs: テンプレート化されたargs({{MediaPath}}、{{Prompt}}、{{MaxChars}}などをサポート)
capabilities: 任意のリスト(image、audio、video)。デフォルト:openai/anthropic/minimax→ image、google→ image+audio+video、groq→ audio。prompt、maxChars、maxBytes、timeoutSeconds、language: entryごとのoverride。- 失敗時は次のentryへフォールバックします。
auth-profiles.json → env vars → models.providers.*.apiKey。tools.agentToAgent
tools.sessions
session tool(sessions_list、sessions_history、sessions_send)でtargetにできるsessionを制御します。
デフォルト: tree(現在のsession + そこからspawnされたsession、たとえばsubagent)。
self: 現在のsession keyのみ。tree: 現在のsession + 現在のsessionからspawnされたsession(subagent)。agent: 現在のagent idに属する任意のsession(同じagent id配下でper-sender sessionを使っている場合は他ユーザーを含むことがあります)。all: 任意のsession。cross-agent targetingには引き続きtools.agentToAgentが必要です。- Sandbox clamp: 現在のsessionがsandboxedで、
agents.defaults.sandbox.sessionToolsVisibility="spawned"の場合、tools.sessions.visibility="all"であってもvisibilityはtreeに強制されます。
tools.sessions_spawn
sessions_spawn のインラインattachment supportを制御します。
- Attachmentは
runtime: "subagent"の場合のみサポートされます。ACP runtimeでは拒否されます。 - Fileは子workspaceの
.openclaw/attachments/<uuid>/に.manifest.jsonとともに実体化されます。 - Attachment内容はtranscript persistenceから自動的にredactされます。
- Base64入力は、厳密なalphabet/paddingチェックとデコード前サイズガードで検証されます。
- File permissionはdirectoryが
0700、fileが0600です。 - Cleanupは
cleanuppolicyに従います:deleteは常にattachmentを削除し、keepはretainOnSessionKeep: trueのときのみ保持します。
agents.defaults.subagents
model: spawnされたsub-agent用のデフォルトmodel。省略時、sub-agentは呼び出し元のmodelを継承します。allowAgents: 要求元agentが自分のsubagents.allowAgentsを設定していない場合のsessions_spawn向けtarget agent idデフォルトallowlist(["*"]= 任意。デフォルト: 同じagentのみ)。runTimeoutSeconds: tool callがrunTimeoutSecondsを省略した場合のsessions_spawnデフォルトtimeout(秒)。0はtimeoutなしを意味します。- subagentごとのtool policy:
tools.subagents.tools.allow/tools.subagents.tools.deny。
カスタムproviderとbase URL
OpenClawは組み込みmodel catalogを使います。カスタムproviderはconfig内のmodels.providers、または ~/.openclaw/agents/<agentId>/agent/models.json 経由で追加できます。
- カスタムauthが必要な場合は
authHeader: true+headersを使ってください。 - agent config rootは
OPENCLAW_AGENT_DIR(またはlegacy aliasのPI_CODING_AGENT_DIR)で上書きできます。 - 一致するprovider IDに対するマージ優先順位:
- 空でないagent
models.jsonのbaseUrlが優先されます。 - 空でないagentの
apiKeyは、そのproviderが現在のconfig/auth-profile contextでSecretRef管理されていない場合にのみ優先されます。 - SecretRef管理のprovider
apiKey値は、解決済みsecretを永続化する代わりに、source marker(env refならENV_VAR_NAME、file/exec refならsecretref-managed)から更新されます。 - SecretRef管理のprovider header値も、source marker(env refなら
secretref-env:ENV_VAR_NAME、file/exec refならsecretref-managed)から更新されます。 - agent側の
apiKey/baseUrlが空または欠けている場合は、config内のmodels.providersにフォールバックします。 - 一致するmodelの
contextWindow/maxTokensには、明示config値と暗黙catalog値の高い方を使用します。 - 一致するmodelの
contextTokensは、明示的なランタイムcapがあれば保持されます。ネイティブmodel metadataを変えずに実効contextを制限したい場合に使ってください。 - configで
models.jsonを完全に書き換えたい場合はmodels.mode: "replace"を使ってください。 - marker persistenceはsource-authoritativeです。markerは、解決済みランタイムsecret値からではなく、有効なsource config snapshot(解決前)から書き込まれます。
- 空でないagent
Providerフィールドの詳細
models.mode: provider catalogの動作(mergeまたはreplace)。models.providers: provider idをキーとするカスタムprovider map。models.providers.*.api: リクエストadapter(openai-completions、openai-responses、anthropic-messages、google-generative-aiなど)。models.providers.*.apiKey: provider資格情報(SecretRef/env置換の使用を推奨)。models.providers.*.auth: auth戦略(api-key、token、oauth、aws-sdk)。models.providers.*.injectNumCtxForOpenAICompat: Ollama +openai-completions用。リクエストへoptions.num_ctxを注入します(デフォルト:true)。models.providers.*.authHeader: 必要な場合に資格情報をAuthorizationheaderで送るよう強制します。models.providers.*.baseUrl: 上流APIのbase URL。models.providers.*.headers: proxy/tenant routing用の追加静的header。models.providers.*.request: model-provider HTTP request用transport override。request.headers: 追加header(provider defaultとマージ)。値はSecretRefを受け入れます。request.auth: auth戦略override。モード:"provider-default"(providerの組み込みauthを使用)、"authorization-bearer"(tokenとともに使用)、"header"(headerName、value、任意のprefixとともに使用)。request.proxy: HTTP proxy override。モード:"env-proxy"(HTTP_PROXY/HTTPS_PROXYenv varsを使用)、"explicit-proxy"(urlとともに使用)。どちらのモードでも任意のtlsサブオブジェクトを受け入れます。request.tls: direct connection用TLS override。フィールド:ca、cert、key、passphrase(すべてSecretRef可)、serverName、insecureSkipVerify。
models.providers.*.models: 明示的なprovider model catalog entry。models.providers.*.models.*.contextWindow: ネイティブmodelのcontext window metadata。models.providers.*.models.*.contextTokens: 任意のランタイムcontext cap。model本来のcontextWindowより小さい実効context予算を使いたい場合に使用します。models.providers.*.models.*.compat.supportsDeveloperRole: 任意の互換性ヒント。api: "openai-completions"で空でない非ネイティブbaseUrl(hostがapi.openai.com以外)の場合、OpenClawは実行時にこれをfalseに強制します。空または省略されたbaseUrlではOpenAIのデフォルト動作を保持します。plugins.entries.amazon-bedrock.config.discovery: Bedrock auto-discovery設定のルート。plugins.entries.amazon-bedrock.config.discovery.enabled: 暗黙discoveryのオン/オフ。plugins.entries.amazon-bedrock.config.discovery.region: discovery用AWS region。plugins.entries.amazon-bedrock.config.discovery.providerFilter: 対象discovery用の任意provider-idフィルター。plugins.entries.amazon-bedrock.config.discovery.refreshInterval: discovery refreshのpolling間隔。plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: 発見されたmodel用のfallback context window。plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: 発見されたmodel用のfallback max output tokens。
Provider例
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 を、Z.AI直結には zai/glm-4.7 を使ってください。OpenCode
OpenCode
OPENCODE_API_KEY(または OPENCODE_ZEN_API_KEY)を設定してください。Zen catalogには opencode/...、Go catalogには opencode-go/... を使います。shortcut: openclaw onboard --auth-choice opencode-zen または openclaw onboard --auth-choice opencode-go。Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY を設定してください。z.ai/* と z-ai/* はaliasとして受け入れられます。shortcut: openclaw onboard --auth-choice zai-api-key。- 一般endpoint:
https://api.z.ai/api/paas/v4 - Coding endpoint(デフォルト):
https://api.z.ai/api/coding/paas/v4 - 一般endpoint用には、base URL override付きのカスタムproviderを定義してください。
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" または openclaw onboard --auth-choice moonshot-api-key-cn。ネイティブMoonshot endpointは共有 openai-completions transport上のstreaming usage互換性を広告しており、OpenClawは現在これを組み込みprovider idだけでなくendpoint capabilityに基づいて判定します。Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key。Synthetic (Anthropic-compatible)
Synthetic (Anthropic-compatible)
/v1 を付けないでください(Anthropic client側で追加されます)。shortcut: openclaw onboard --auth-choice synthetic-api-key。MiniMax M2.7 (direct)
MiniMax M2.7 (direct)
MINIMAX_API_KEY を設定してください。shortcut:
openclaw onboard --auth-choice minimax-global-api または
openclaw onboard --auth-choice minimax-cn-api。
model catalogは現在M2.7のみをデフォルトとします。
Anthropic互換streaming pathでは、OpenClawは明示的に thinking を設定しない限りMiniMax thinkingをデフォルトで無効にします。/fast on または params.fastMode: true は MiniMax-M2.7 を MiniMax-M2.7-highspeed に書き換えます。Local models (LM Studio)
Local models (LM Studio)
Local Models を参照してください。要点: 十分な性能のハードウェア上でLM Studio Responses API経由の大きなlocal modelを動かし、fallback用にhosted modelはマージしたままにします。
Skills
allowBundled: bundled skillにのみ適用される任意allowlistです(managed/workspace skillには影響しません)。load.extraDirs: 追加の共有skill root(優先度は最低)。install.preferBrew: trueのとき、brewが利用可能なら他のinstaller kindへフォールバックする前にHomebrew installerを優先します。install.nodeManager:metadata.openclaw.installspec用のnode installer優先設定(npm|pnpm|yarn|bun)。entries.<skillKey>.enabled: falseは、bundled/installedであってもそのskillを無効化します。entries.<skillKey>.apiKey: そのskillが主要env varを宣言している場合の簡易API keyフィールド(対応しているskillのみ)。
Plugins
- 読み込み元:
~/.openclaw/extensions、<workspace>/.openclaw/extensions、およびplugins.load.paths。 - DiscoveryはネイティブOpenClaw pluginに加え、互換性のあるCodex bundleとClaude bundleも受け入れます。manifestのないClaudeデフォルトレイアウトbundleも含まれます。
- Config変更にはGateway再起動が必要です。
allow: 任意のallowlist(列挙されたpluginのみ読み込み)。denyが優先されます。plugins.entries.<id>.apiKey: pluginレベルのAPI key簡易フィールド(pluginが対応している場合)。plugins.entries.<id>.env: pluginスコープのenv var map。plugins.entries.<id>.hooks.allowPromptInjection:falseのとき、coreはbefore_prompt_buildをブロックし、legacyなbefore_agent_startからのprompt変更フィールドを無視します。ただし legacyのmodelOverrideとproviderOverrideは保持します。ネイティブplugin hookと、対応するbundle提供hook directoryの両方に適用されます。plugins.entries.<id>.subagent.allowModelOverride: このpluginがbackground subagent実行でrunごとのproviderとmodeloverrideを要求することを明示的に信頼します。plugins.entries.<id>.subagent.allowedModels: 信頼されたsubagent override用の任意のcanonicalprovider/modeltarget allowlist。意図的に任意のmodelを許可したい場合にのみ"*"を使ってください。plugins.entries.<id>.config: plugin定義のconfig object(ネイティブOpenClaw plugin schemaがある場合はそのschemaで検証)。plugins.entries.firecrawl.config.webFetch: Firecrawl web-fetch provider設定。apiKey: Firecrawl API key(SecretRef可)。plugins.entries.firecrawl.config.webSearch.apiKey、legacyのtools.web.fetch.firecrawl.apiKey、またはFIRECRAWL_API_KEYenv varへフォールバックします。baseUrl: Firecrawl API base URL(デフォルト:https://api.firecrawl.dev)。onlyMainContent: ページからmain contentのみを抽出します(デフォルト:true)。maxAgeMs: 最大cache age(ミリ秒、デフォルト:172800000/ 2日)。timeoutSeconds: scrape request timeout(秒、デフォルト:60)。
plugins.entries.xai.config.xSearch: xAI X Search(Grok web search)設定。enabled: X Search providerを有効化します。model: 検索に使うGrok model(例:"grok-4-1-fast")。
plugins.entries.memory-core.config.dreaming: memory dreaming(experimental)設定。モードと閾値は Dreaming を参照してください。mode: dreaming cadence preset("off"、"core"、"rem"、"deep")。デフォルト:"off"。cron: dreaming schedule用の任意cron式override。timezone: schedule評価用timezone(agents.defaults.userTimezoneへフォールバック)。limit: 1サイクルでpromoteする候補の最大数。minScore: promoteのための最小加重score閾値。minRecallCount: 最小recall回数閾値。minUniqueQueries: 最小distinct query回数閾値。
- 有効なClaude bundle pluginは
settings.jsonから埋め込みPi defaultも提供できます。OpenClawはこれを生のOpenClaw config patchではなく、sanitizedされたagent設定として適用します。 plugins.slots.memory: アクティブなmemory plugin idを選択するか、memory pluginを無効にするには"none"。plugins.slots.contextEngine: アクティブなcontext engine plugin idを選択します。デフォルトは、別engineをインストールして選択しない限り"legacy"。plugins.installs:openclaw plugins updateで使われるCLI管理のinstall metadata。source、spec、sourcePath、installPath、version、resolvedName、resolvedVersion、resolvedSpec、integrity、shasum、resolvedAt、installedAtを含みます。plugins.installs.*は管理対象stateとして扱ってください。手編集よりCLI commandを優先してください。
Browser
evaluateEnabled: falseはact:evaluateとwait --fnを無効化します。ssrfPolicy.dangerouslyAllowPrivateNetworkは未設定時にtrueがデフォルトです(trusted-network model)。- 厳格なpublic-only browser navigationにするには
ssrfPolicy.dangerouslyAllowPrivateNetwork: falseを設定してください。 - strict modeでは、remote CDP profile endpoint(
profiles.*.cdpUrl)も、到達性/discoveryチェック時に同じprivate-network blockingの対象になります。 ssrfPolicy.allowPrivateNetworkはlegacy aliasとして引き続きサポートされています。- strict modeでは、明示的な例外に
ssrfPolicy.hostnameAllowlistとssrfPolicy.allowedHostnamesを使います。 - remote profileはattach-onlyです(start/stop/resetは無効)。
profiles.*.cdpUrlはhttp://、https://、ws://、wss://を受け入れます。/json/versionを発見させたい場合はHTTP(S)を、providerが直接DevTools WebSocket URLを返す場合はWS(S)を使ってください。existing-sessionprofileはhost-onlyで、CDPの代わりにChrome MCPを使います。existing-sessionprofileでは、BraveやEdgeなど特定のChromiumベースbrowser profileをtargetにするためにuserDataDirを設定できます。existing-sessionprofileには現在のChrome MCP route制限が適用されます: CSS selector targetingではなくsnapshot/refベースのaction、単一file upload hook、dialog timeout overrideなし、wait --load networkidleなし、さらにresponsebody、PDF export、download interception、batch actionもありません。- ローカル管理の
openclawprofileはcdpPortとcdpUrlを自動割り当てします。明示的なcdpUrlはremote CDPにのみ設定してください。 - Auto-detect順序: デフォルトbrowserがChromium系ならそれ → Chrome → Brave → Edge → Chromium → Chrome Canary。
- Control service: loopbackのみ(portは
gateway.portから導出、デフォルト18791)。 extraArgsはローカルChromium起動に追加flagを付加します(たとえば--disable-gpu、windowサイズ、debug flagなど)。
UI
seamColor: ネイティブapp UIのアクセントカラー(Talk Mode bubble tintなど)。assistant: Control UIのidentity override。アクティブagent identityへフォールバックします。