ツール(OpenClaw)
OpenClawはファーストクラスのエージェントツールとして、browser、canvas、nodes、cronを提供しています。
これらは旧来のopenclaw-*スキルを置き換えるもので、型付き・シェル不要で、エージェントが直接利用できます。
ツールの無効化
openclaw.jsonのtools.allow / tools.denyで、グローバルにツールの許可・拒否を設定できます(denyが優先)。拒否されたツールはモデルプロバイダーに送信されません。
{
tools: { deny: ["browser"] },
}
注意事項:
- マッチングは大文字・小文字を区別しません。
*ワイルドカードに対応しています("*"で全ツール)。tools.allowに未知またはロードされていないプラグインツール名のみが含まれる場合、OpenClawは警告を出し、コアツールが利用可能な状態を維持するために許可リストを無視します。
ツールプロファイル(基本許可リスト)
tools.profileはtools.allow/tools.denyの前に適用される基本許可リストを設定します。
エージェント単位のオーバーライド: agents.list[].tools.profile。
プロファイル一覧:
minimal:session_statusのみcoding:group:fs、group:runtime、group:sessions、group:memory、imagemessaging:group:messaging、sessions_list、sessions_history、sessions_send、session_statusfull: 制限なし(未設定と同等)
例(デフォルトはメッセージングのみ、SlackとDiscordツールも許可):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
例(codingプロファイルだが、exec/processは全面拒否):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
例(グローバルはcodingプロファイル、サポートエージェントはメッセージングのみ):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
プロバイダー別ツールポリシー
tools.byProviderを使うと、グローバル設定を変えずに特定プロバイダー(またはprovider/model単位)のツールをさらに制限できます。
エージェント単位のオーバーライド: agents.list[].tools.byProvider。
基本ツールプロファイルの後、allow/denyリストの前に適用されるため、ツールセットを絞り込むことのみ可能です。
プロバイダーキーはprovider(例: google-antigravity)またはprovider/model(例: openai/gpt-5.2)の形式で指定します。
例(グローバルはcodingプロファイルを維持、Google Antigravityにはminimalツール):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
例(不安定なエンドポイント向けにprovider/model固有の許可リスト):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
例(単一プロバイダーに対するエージェント固有のオーバーライド):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
ツールグループ(ショートハンド)
ツールポリシー(グローバル、エージェント、サンドボックス)は、複数のツールに展開されるgroup:*エントリに対応しています。
tools.allow / tools.denyで使用します。
利用可能なグループ:
group:runtime:exec、bash、processgroup:fs:read、write、edit、apply_patchgroup:sessions:sessions_list、sessions_history、sessions_send、sessions_spawn、session_statusgroup:memory:memory_search、memory_getgroup:web:web_search、web_fetchgroup:ui:browser、canvasgroup:automation:cron、gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: OpenClaw組み込みツール全体(プロバイダープラグインは除外)
例(ファイルツール+browserのみ許可):
{
tools: {
allow: ["group:fs", "browser"],
},
}
プラグインとツール
プラグインはコアセットに加えて追加のツール(およびCLIコマンド)を登録できます。 インストールと設定はプラグイン、ツールの使用ガイダンスがプロンプトにどう注入されるかはスキルを参照してください。一部のプラグインはツールと共にスキルも同梱しています(例: voice-callプラグイン)。
オプションのプラグインツール:
- Lobster: 再開可能な承認フロー付きの型付きワークフローランタイム(GatewayホストにLobster CLIが必要)。
- LLM Task: 構造化ワークフロー出力のためのJSON専用LLMステップ(オプションのスキーマバリデーション付き)。
- Diffs: テキストのbefore/afterやunifiedパッチの読み取り専用diffビューア、PNGまたはPDFファイルレンダラー。
ツール一覧
apply_patch
1つ以上のファイルに構造化パッチを適用します。マルチhunk編集に使用します。
実験的機能: tools.exec.applyPatch.enabledで有効化(OpenAIモデルのみ)。
tools.exec.applyPatch.workspaceOnlyはデフォルトtrue(ワークスペース内に限定)。ワークスペース外への書き込み/削除を意図的に許可する場合のみfalseに設定してください。
exec
ワークスペース内でシェルコマンドを実行します。
主要パラメータ:
command(必須)yieldMs(タイムアウト後に自動バックグラウンド化、デフォルト10000)background(即座にバックグラウンド化)timeout(秒単位、超過時にプロセスを終了、デフォルト1800)elevated(bool; elevated modeが有効/許可されている場合にホスト上で実行。エージェントがサンドボックス化されている場合のみ動作が変わる)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(host=nodeの場合のノードid/name)- 実際のTTYが必要な場合は
pty: trueを設定。
注意事項:
- バックグラウンド化された場合、
sessionId付きのstatus: "running"を返します。 processを使ってバックグラウンドセッションのポーリング/ログ/書き込み/終了/クリアが可能です。processが許可されていない場合、execは同期実行となり、yieldMs/backgroundは無視されます。elevatedはtools.elevatedおよびagents.list[].tools.elevatedのオーバーライド(両方が許可する必要あり)によって制御され、host=gateway+security=fullのエイリアスです。elevatedはエージェントがサンドボックス化されている場合のみ動作が変わります(それ以外ではno-op)。host=nodeはmacOSコンパニオンアプリまたはヘッドレスノードホスト(openclaw node run)を対象にできます。- gateway/nodeの承認と許可リスト: Exec承認。
process
バックグラウンドのexecセッションを管理します。
主要アクション:
list、poll、log、write、kill、clear、remove
注意事項:
pollは完了時に新しい出力と終了ステータスを返します。logは行ベースのoffset/limitに対応(offset省略で末尾N行を取得)。processはエージェント単位でスコープされ、他のエージェントのセッションは参照できません。
loop-detection(ツール呼び出しループガードレール)
OpenClawは直近のツール呼び出し履歴を追跡し、進捗のない反復ループを検出するとブロックまたは警告を行います。
tools.loopDetection.enabled: trueで有効化(デフォルトはfalse)。
{
tools: {
loopDetection: {
enabled: true,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
historySize: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
genericRepeat: 同じツール+同じパラメータの繰り返しパターン。knownPollNoProgress: 出力が同一のポーリング系ツールの繰り返し。pingPong:A/B/A/Bの交互パターンで進捗なし。- エージェント単位のオーバーライド:
agents.list[].tools.loopDetection。
web_search
Perplexity、Brave、Gemini、Grok、またはKimiを使ったウェブ検索。
主要パラメータ:
query(必須)count(1〜10、デフォルトはtools.web.search.maxResultsから)
注意事項:
- 選択したプロバイダーのAPIキーが必要(推奨:
openclaw configure --section web)。 tools.web.search.enabledで有効化。- レスポンスはキャッシュされます(デフォルト15分)。
- セットアップはWebツールを参照。
web_fetch
URLからコンテンツを取得し、読みやすい形式に変換します(HTML → markdown/text)。
主要パラメータ:
url(必須)extractMode(markdown|text)maxChars(長いページの切り詰め)
注意事項:
tools.web.fetch.enabledで有効化。maxCharsはtools.web.fetch.maxCharsCapで上限設定(デフォルト50000)。- レスポンスはキャッシュされます(デフォルト15分)。
- JS多用のサイトにはbrowserツールを推奨。
- セットアップはWebツールを参照。
- オプションのアンチボットフォールバックはFirecrawlを参照。
browser
OpenClaw管理のブラウザを制御します。
主要アクション:
status、start、stop、tabs、open、focus、closesnapshot(aria/ai)screenshot(画像ブロック +MEDIA:<path>を返す)act(UIアクション: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate、console、pdf、upload、dialog
プロファイル管理:
profiles— 全ブラウザプロファイルの一覧とステータス表示create-profile— 自動割当ポート(またはcdpUrl)で新規プロファイル作成delete-profile— ブラウザ停止、ユーザーデータ削除、設定から除去(ローカルのみ)reset-profile— プロファイルのポートで孤立プロセスを終了(ローカルのみ)
共通パラメータ:
profile(オプション、デフォルトはbrowser.defaultProfile)target(sandbox|host|node)node(オプション、特定のノードid/nameを指定) 注意事項:browser.enabled=trueが必要(デフォルトはtrue、falseで無効化)。- すべてのアクションでオプションの
profileパラメータによるマルチインスタンス対応。 profile省略時はbrowser.defaultProfileを使用(デフォルトは”chrome”)。- プロファイル名: 小文字英数字+ハイフンのみ(最大64文字)。
- ポート範囲: 18800-18899(最大約100プロファイル)。
- リモートプロファイルはアタッチのみ(start/stop/resetは不可)。
- ブラウザ対応ノードが接続されている場合、ツールは自動ルーティング可能(
targetを固定しない場合)。 snapshotはPlaywrightがインストールされている場合、デフォルトでai。アクセシビリティツリーにはariaを使用。snapshotはロールスナップショットオプション(interactive、compact、depth、selector)にも対応し、e12のような参照を返します。actにはsnapshotからのrefが必要(AIスナップショットからの数値12、またはロールスナップショットからのe12)。まれなCSSセレクターが必要な場合はevaluateを使用。- デフォルトでは
act→waitを避けてください。信頼できるUI状態を待機できない例外的なケースでのみ使用。 uploadはオプションでrefを渡してアーミング後に自動クリック可能。uploadはinputRef(aria ref)またはelement(CSSセレクター)で<input type="file">を直接設定することもできます。
canvas
ノードCanvas(present、eval、snapshot、A2UI)を操作します。
主要アクション:
present、hide、navigate、evalsnapshot(画像ブロック +MEDIA:<path>を返す)a2ui_push、a2ui_reset
注意事項:
- 内部的にgatewayの
node.invokeを使用。 nodeが指定されない場合、デフォルトを選択(単一接続ノードまたはローカルmacノード)。- A2UIはv0.8のみ(
createSurfaceなし)。CLIはv0.9 JSONLを行エラーとして拒否。 - 動作確認:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI"。
nodes
ペアリングされたノードの検出とターゲティング、通知送信、カメラ/スクリーンキャプチャ。
主要アクション:
status、describepending、approve、reject(ペアリング)notify(macOSsystem.notify)run(macOSsystem.run)camera_list、camera_snap、camera_clip、screen_recordlocation_get、notifications_list、notifications_actiondevice_status、device_info、device_permissions、device_health
注意事項:
- カメラ/スクリーンコマンドはノードアプリがフォアグラウンドにある必要があります。
- 画像は画像ブロック +
MEDIA:<path>を返します。 - 動画は
FILE:<path>(mp4)を返します。 - 位置情報はJSONペイロード(lat/lon/accuracy/timestamp)を返します。
runパラメータ:commandargv配列、オプションでcwd、env(KEY=VAL)、commandTimeoutMs、invokeTimeoutMs、needsScreenRecording。
例(run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
設定済みの画像モデルで画像を分析します。
主要パラメータ:
image(パスまたはURL、必須)prompt(オプション、デフォルトは”Describe the image.”)model(オプションのオーバーライド)maxBytesMb(オプションのサイズ上限)
注意事項:
agents.defaults.imageModelが設定されている場合(プライマリまたはフォールバック)、またはデフォルトモデル+認証設定から暗黙的に画像モデルを推論できる場合のみ利用可能(ベストエフォートのペアリング)。- メインのチャットモデルとは独立して画像モデルを直接使用します。
pdf
1つ以上のPDFドキュメントを分析します。
動作、制限、設定、使用例の詳細はPDFツールを参照してください。
message
Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams間でメッセージ送信とチャンネルアクションを実行します。
主要アクション:
send(テキスト+オプションのメディア、MS TeamsではAdaptive Cards用のcardにも対応)poll(WhatsApp/Discord/MS Teamsの投票)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
注意事項:
sendはWhatsAppをGateway経由でルーティング、他のチャンネルは直接送信。pollはWhatsAppとMS TeamsにGatewayを使用、Discordの投票は直接送信。- メッセージツール呼び出しがアクティブなチャットセッションに紐づいている場合、送信先はそのセッションのターゲットに制約され、クロスコンテキストの漏洩を防ぎます。
cron
Gatewayのcronジョブとウェイクアップを管理します。
主要アクション:
status、listadd、update、remove、run、runswake(システムイベントをキューに追加+オプションで即座にハートビート)
注意事項:
addは完全なcronジョブオブジェクトを期待します(cron.addRPCと同じスキーマ)。updateは{ jobId, patch }を使用(互換性のためidも受け入れ)。
gateway
実行中のGatewayプロセスの再起動またはアップデート適用(インプレース)。
主要アクション:
restart(認可+インプロセス再起動のためのSIGUSR1送信、openclaw gatewayのインプレース再起動)config.schema.lookup(フルスキーマをプロンプトコンテキストにロードせずに、1つの設定パスを検査)config.getconfig.apply(バリデーション+設定書き込み+再起動+ウェイク)config.patch(部分更新のマージ+再起動+ウェイク)update.run(アップデート実行+再起動+ウェイク)
注意事項:
config.schema.lookupはgateway.authやagents.list.*.heartbeatのような対象設定パスを期待します。- パスにはプラグインIDへのスラッシュ区切りを含むことができます(例:
plugins.entries.pack/one.config)。 delayMs(デフォルト2000)を使って、処理中のリプライの中断を避けます。config.schemaは内部Control UIフロー向けに残されており、エージェントのgatewayツールからは公開されません。restartはデフォルトで有効。commands.restart: falseで無効化できます。
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
セッションの一覧表示、トランスクリプト履歴の確認、または別のセッションへの送信。
主要パラメータ:
sessions_list:kinds?、limit?、activeMinutes?、messageLimit?(0 = なし)sessions_history:sessionKey(またはsessionId)、limit?、includeTools?sessions_send:sessionKey(またはsessionId)、message、timeoutSeconds?(0 = ファイア・アンド・フォーゲット)sessions_spawn:task、label?、runtime?、agentId?、model?、thinking?、cwd?、runTimeoutSeconds?、thread?、mode?、cleanup?、sandbox?、streamTo?、attachments?、attachAs?session_status:sessionKey?(デフォルトは現在のセッション、sessionIdも受け入れ)、model?(defaultでオーバーライドをクリア)
注意事項:
mainは正規のダイレクトチャットキー。global/unknownは非表示。messageLimit > 0でセッションごとに直近N件のメッセージを取得(ツールメッセージは除外)。- セッションターゲティングは
tools.sessions.visibilityで制御(デフォルトtree: 現在のセッション+生成されたサブエージェントセッション)。複数ユーザー向けの共有エージェントでは、クロスセッション閲覧を防ぐためにtools.sessions.visibility: "self"の設定を検討してください。 sessions_sendはtimeoutSeconds > 0の場合、最終完了を待機します。- 配信/アナウンスは完了後に行われ、ベストエフォートです。
status: "ok"はエージェント実行の完了を確認するもので、アナウンスの配信を保証するものではありません。 sessions_spawnはruntime: "subagent" | "acp"に対応(デフォルトはsubagent)。ACPランタイムの動作はACPエージェントを参照。- ACPランタイムでは、
streamTo: "parent"により初期実行の進捗サマリーが、子への直接配信ではなくリクエスター セッションにシステムイベントとしてルーティングされます。 sessions_spawnはサブエージェント実行を開始し、リクエスターのチャットにアナウンスリプライを投稿します。- ワンショットモード(
mode: "run")と永続的なスレッドバウンドモード(mode: "session"+thread: true)に対応。 thread: trueでmodeが省略された場合、デフォルトはsession。mode: "session"にはthread: trueが必要。runTimeoutSecondsが省略された場合、agents.defaults.subagents.runTimeoutSecondsが設定されていればそれを使用。未設定の場合はデフォルト0(タイムアウトなし)。- Discordのスレッドバウンドフローは
session.threadBindings.*およびchannels.discord.threadBindings.*に依存。 - リプライ形式には
Status、Result、コンパクトな統計情報が含まれます。 Resultはアシスタントの完了テキスト。存在しない場合は最新のtoolResultがフォールバックとして使用されます。
- ワンショットモード(
- 手動完了モードのスポーンは最初に直接送信し、一時的な障害時にはキューフォールバックとリトライを実行(
status: "ok"は実行完了を意味し、アナウンス配信の保証ではない)。 sessions_spawnはサブエージェントランタイムのみインラインファイル添付に対応(ACPは拒否)。各添付ファイルにはname、content、オプションのencoding(utf8またはbase64)とmimeTypeがあります。ファイルは子ワークスペースの.openclaw/attachments/<uuid>/に.manifest.jsonメタデータファイル付きで実体化されます。ツールはcount、totalBytes、ファイルごとのsha256、relDirを含むレシートを返します。添付コンテンツはトランスクリプト永続化から自動的にリダクションされます。tools.sessions_spawn.attachmentsで制限を設定(enabled、maxTotalBytes、maxFiles、maxFileBytes、retainOnSessionKeep)。attachAs.mountPathは将来のマウント実装のための予約済みヒントです。
sessions_spawnはノンブロッキングで、即座にstatus: "accepted"を返します。- ACPの
streamTo: "parent"レスポンスには進捗履歴の追跡用にstreamLogPath(セッションスコープの*.acp-stream.jsonl)が含まれることがあります。 sessions_sendはリプライバックのピンポン(停止するにはREPLY_SKIPで返信、最大ターン数はsession.agentToAgent.maxPingPongTurnsで0〜5)を実行します。- ピンポン後、ターゲットエージェントはアナウンスステップを実行します。アナウンスを抑制するには
ANNOUNCE_SKIPで返信。 - サンドボックスクランプ: 現在のセッションがサンドボックス化されており、
agents.defaults.sandbox.sessionToolsVisibility: "spawned"の場合、OpenClawはtools.sessions.visibilityをtreeに制限します。
agents_list
現在のセッションがsessions_spawnでターゲットにできるエージェントIDの一覧を表示します。
注意事項:
- 結果はエージェントごとの許可リスト(
agents.list[].subagents.allowAgents)で制限されます。 ["*"]が設定されている場合、設定済みの全エージェントが含まれ、allowAny: trueが表示されます。
パラメータ(共通)
Gatewayバックエンドのツール(canvas、nodes、cron):
gatewayUrl(デフォルトws://127.0.0.1:18789)gatewayToken(認証が有効な場合)timeoutMs
注: gatewayUrlを設定する場合は、gatewayTokenを明示的に含めてください。ツールはオーバーライドに対して設定や環境変数の認証情報を継承せず、明示的な認証情報が不足している場合はエラーになります。
Browserツール:
profile(オプション、デフォルトはbrowser.defaultProfile)target(sandbox|host|node)node(オプション、特定のノードid/nameを固定)- トラブルシューティングガイド:
- Linux起動/CDP問題: ブラウザトラブルシューティング(Linux)
- WSL2 Gateway + WindowsリモートChrome CDP: WSL2 + Windows + リモートChrome CDPトラブルシューティング
推奨エージェントフロー
ブラウザ自動化:
browser→status/startsnapshot(aiまたはaria)act(click/type/press)screenshot(視覚的確認が必要な場合)
Canvasレンダリング:
canvas→presenta2ui_push(オプション)snapshot
ノードターゲティング:
nodes→status- 選択したノードに
describe notify/run/camera_snap/screen_record
セーフティ
- 直接の
system.runは避けてください。nodes→runはユーザーの明示的な同意がある場合のみ使用。 - カメラ/スクリーンキャプチャにはユーザーの同意を尊重。
- メディアコマンドを呼び出す前に
status/describeで権限を確認。
ツールがエージェントに提示される仕組み
ツールは2つの並行チャネルで公開されます:
- システムプロンプトテキスト: 人間が読めるリスト+ガイダンス。
- ツールスキーマ: モデルAPIに送信される構造化された関数定義。
つまりエージェントは「どんなツールがあるか」と「どう呼び出すか」の両方を認識します。ツールがシステムプロンプトにもスキーマにも含まれていない場合、モデルはそのツールを呼び出せません。