ツール
OpenClaw は、ブラウザ、キャンバス、ノード、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"],
},
}
例 (コーディングプロファイル、ただし exec/process をどこでも拒否):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
例 (グローバルコーディングプロファイル、メッセージングのみのサポートエージェント):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
プロバイダー固有のツールポリシー
tools.byProvider を使用して、グローバルデフォルトを変更せずに、特定のプロバイダー(または単一の provider/model)に対してツールを さらに制限 できます。エージェントごとのオーバーライド: agents.list[].tools.byProvider。これは基本ツールプロファイルの 後、許可/拒否リストの 前 に適用されるため、ツールセットを狭めることしかできません。プロバイダーキーは provider(例: google-antigravity)または provider/model(例: openai/gpt-5.2)のいずれかを受け入れます。例 (グローバルコーディングプロファイルを維持、ただし Google Antigravity には最小限のツール):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
例 (不安定なエンドポイント向けのプロバイダー/モデル固有の許可リスト):
{
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 ツール(プロバイダープラグインを除く)
例 (ファイルツール + ブラウザのみを許可):
{
tools: {
allow: ["group:fs", "browser"],
},
}
プラグイン + ツール
プラグインは、コアセットを超えて 追加のツール(および CLI コマンド)を登録できます。インストールと設定については プラグイン を、ツール使用ガイダンスがプロンプトに注入される方法については スキル を参照してください。一部のプラグインは、ツールと一緒に独自のスキルを同梱しています(例: ボイスコールプラグイン)。オプションのプラグインツール:
- Lobster: 再開可能な承認を備えた型付きワークフローランタイム(ゲートウェイホストに Lobster CLI が必要)。
- LLM Task: 構造化ワークフロー出力のための JSON 専用 LLM ステップ(オプションのスキーマ検証付き)。
- Diffs: 読み取り専用の差分ビューアーと、前後テキストまたは unified パッチ用の PNG または PDF ファイルレンダラー。
ツールインベントリ
apply_patch
構造化パッチを1つ以上のファイルに適用します。複数ハンクの編集に使用します。実験的: tools.exec.applyPatch.enabled で有効化(OpenAI モデルのみ)。tools.exec.applyPatch.workspaceOnly はデフォルトで true(ワークスペース内のみ)。apply_patch にワークスペースディレクトリ外への書き込み/削除を意図的に行わせたい場合のみ、これを false に設定してください。
exec
ワークスペース内でシェルコマンドを実行します。コアパラメータ:
command(必須)yieldMs(タイムアウト後の自動バックグラウンド化、デフォルト 10000)background(即時バックグラウンド化)timeout(秒; 超過するとプロセスを強制終了、デフォルト 1800)elevated(bool; 昇格モードが有効/許可されている場合、ホスト上で実行; エージェントがサンドボックス化されている場合のみ動作が変化)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(host=node用のノード ID/名前)- 本物の TTY が必要ですか?
pty: trueを設定してください。
注意点:
- バックグラウンド化されると、
sessionId付きでstatus: "running"を返します。 - バックグラウンドセッションのポーリング/ログ取得/書き込み/強制終了/クリアには
processを使用してください。 processが許可されていない場合、execは同期的に実行され、yieldMs/backgroundは無視されます。elevatedはtools.elevatedと任意のagents.list[].tools.elevatedオーバーライドによって制御され(両方が許可する必要があります)、host=gateway+security=fullのエイリアスです。elevatedはエージェントがサンドボックス化されている場合のみ動作が変化します(それ以外は無効)。host=nodeは、macOS コンパニオンアプリまたはヘッドレスノードホスト(openclaw node run)をターゲットにできます。- ゲートウェイ/ノードの承認と許可リスト: 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_fetch
URL から読み取り可能なコンテンツを取得して抽出します(HTML → マークダウン/テキスト)。コアパラメータ:
url(必須)extractMode(markdown|text)maxChars(長いページを切り詰め)
注意点:
tools.web.fetch.enabledで有効化。maxCharsはtools.web.fetch.maxCharsCapで制限されます(デフォルト 50000)。- 応答はキャッシュされます(デフォルト 15 分)。
- JS が多用されるサイトには、ブラウザツールを優先してください。
- 設定については ウェブツール を参照。
- オプションのアンチボットフォールバックについては 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/名前を選択) 注意点:browser.enabled=trueが必要(デフォルトはtrue;無効化するにはfalseを設定)。- すべてのアクションは、マルチインスタンスサポートのためのオプションの
profileパラメータを受け入れます。 profileが省略された場合、browser.defaultProfileを使用します(デフォルトは "chrome")。- プロファイル名: 小文字英数字 + ハイフンのみ(最大 64 文字)。
- ポート範囲: 18800-18899(最大約100プロファイル)。
- リモートプロファイルはアタッチのみ(開始/停止/リセット不可)。
- ブラウザ対応ノードが接続されている場合、ツールは自動的にそこにルーティングする可能性があります(
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 を駆動します(表示、評価、スナップショット、A2UI)。コアアクション:
present,hide,navigate,evalsnapshot(画像ブロック +MEDIA:<path>を返す)a2ui_push,a2ui_reset
注意点:
- 内部的にゲートウェイ
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 ペイロード(緯度/経度/精度/タイムスタンプ)を返します。
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(オプション; デフォルトは "画像を説明してください。")model(オプションのオーバーライド)maxBytesMb(オプションのサイズ制限)
注意点:
agents.defaults.imageModelが設定されている場合(プライマリまたはフォールバック)、またはデフォルトモデル + 設定された認証から暗黙的な画像モデルが推測できる場合(ベストエフォートペアリング)にのみ利用可能。- 画像モデルを直接使用します(メインチャットモデルとは独立)。
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 をゲートウェイ経由でルーティング;他のチャネルは直接。pollは WhatsApp と MS Teams にゲートウェイを使用;Discord の投票は直接。- メッセージツール呼び出しがアクティブなチャットセッションにバインドされている場合、送信はそのセッションのターゲットに制限され、コンテキスト間の漏洩を防ぎます。
cron
ゲートウェイ cron ジョブとウェイクアップを管理します。コアアクション:
status,listadd,update,remove,run,runswake(システムイベントをエンキュー + オプションの即時ハートビート)
注意点:
addは完全な cron ジョブオブジェクトを期待します(cron.addRPC と同じスキーマ)。updateは{ jobId, patch }を使用します(互換性のためにidも受け入れます)。
gateway
実行中のゲートウェイプロセスを再起動または更新を適用します(インプレース)。コアアクション:
restart(承認 + インプロセス再起動のためにSIGUSR1を送信;openclaw gatewayインプレース再起動)config.schema.lookup(プロンプトコンテキストに完全なスキーマをロードせずに、一度に1つの設定パスを検査)config.getconfig.apply(検証 + 設定書き込み + 再起動 + ウェイク)config.patch(部分更新をマージ + 再起動 + ウェイク)update.run(更新実行 + 再起動 + ウェイク)
注意点:
config.schema.lookupはgateway.authやagents.list.*.heartbeatなどのターゲット設定パスを期待します。- パスには、
plugins.entries.<id>を扱う場合、スラッシュ区切りのプラグイン 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が省略された場合、OpenClaw は設定されていれば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をマークします。
パラメータ (共通)
ゲートウェイバックドツール (canvas, nodes, cron):
gatewayUrl(デフォルトws://127.0.0.1:18789)gatewayToken(認証が有効な場合)timeoutMs
注意: gatewayUrl が設定されている場合、gatewayToken を明示的に含めてください。ツールはオーバーライドのために設定または環境認証情報を継承せず、明示的な認証情報の欠落はエラーです。ブラウザツール:
profile(オプション; デフォルトはbrowser.defaultProfile)target(sandbox|host|node)node(オプション; 特定のノード ID/名前を固定)
推奨エージェントフロー
ブラウザ自動化:
browser→status/startsnapshot(ai または aria)act(click/type/press)- 視覚的確認が必要な場合は
screenshot
キャンバスレンダリング:
canvas→presenta2ui_push(オプション)snapshot
ノードターゲティング:
nodes→status- 選択したノードで
describe notify/run/camera_snap/screen_record
安全性
- 直接の
system.runは避ける;明示的なユーザー同意がある場合のみnodes→runを使用。 - カメラ/画面キャプチャのユーザー同意を尊重。
- メディアコマンドを呼び出す前に、
status/describeを使用して権限を確認。
ツールがエージェントに提示される方法
ツールは2つの並列チャネルで公開されます:
- システムプロンプトテキスト: 人間が読めるリスト + ガイダンス。
- ツールスキーマ: モデル API に送信される構造化関数定義。
つまり、エージェントは「どのツールが存在するか」と「それらを呼び出す方法」の両方を認識します。ツールがシステムプロンプトまたはスキーマに表示されない場合、モデルはそれを呼び出せません。