スラッシュコマンド
コマンドはGatewayで処理されます。ほとんどのコマンドは/で始まる単独メッセージとして送信する必要があります。
ホスト専用のbashチャットコマンドは! <cmd>を使用します(/bash <cmd>はエイリアス)。
関連する2つのシステムがあります:
- コマンド: 単独の
/...メッセージ。 - ディレクティブ:
/think、/fast、/verbose、/reasoning、/elevated、/exec、/model、/queue。- ディレクティブはモデルに渡される前にメッセージから除去されます。
- 通常のチャットメッセージ(ディレクティブのみでない場合)では「インラインヒント」として扱われ、セッション設定は永続化しません。
- ディレクティブのみのメッセージ(メッセージがディレクティブのみで構成)では、セッションに永続化され確認応答が返されます。
- ディレクティブは認可された送信者にのみ適用されます。
commands.allowFromが設定されている場合、それが唯一の 許可リストとして使用されます。未設定の場合はチャンネルの許可リスト/ペアリングおよびcommands.useAccessGroupsから認可されます。 未認可の送信者にはディレクティブがプレーンテキストとして扱われます。
インラインショートカット(許可リスト/認可済み送信者のみ)もいくつかあります: /help、/commands、/status、/whoami(/id)。
即座に実行され、モデルに渡される前に除去され、残りのテキストは通常のフローで処理されます。
設定
{
commands: {
native: "auto",
nativeSkills: "auto",
text: true,
bash: false,
bashForegroundMs: 2000,
config: false,
debug: false,
restart: false,
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
},
useAccessGroups: true,
},
}
commands.text(デフォルトtrue)はチャットメッセージでの/...パースを有効化。- ネイティブコマンド非対応のサーフェス(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams)では、
falseに設定してもテキストコマンドは動作します。
- ネイティブコマンド非対応のサーフェス(WhatsApp/WebChat/Signal/iMessage/Google Chat/MS Teams)では、
commands.native(デフォルト"auto")はネイティブコマンドを登録。- Auto: Discord/Telegramではオン、Slackではオフ(スラッシュコマンドを追加するまで)、ネイティブ非対応プロバイダーでは無視。
channels.discord.commands.native、channels.telegram.commands.native、channels.slack.commands.nativeでプロバイダーごとにオーバーライド可能(boolまたは"auto")。falseにするとDiscord/Telegramで起動時に登録済みコマンドがクリアされます。Slackコマンドはアプリ内で管理され、自動的には削除されません。
commands.nativeSkills(デフォルト"auto")は対応時にスキルコマンドをネイティブ登録。- Auto: Discord/Telegramではオン、Slackではオフ(Slackではスキルごとにスラッシュコマンドの作成が必要)。
channels.discord.commands.nativeSkills、channels.telegram.commands.nativeSkills、channels.slack.commands.nativeSkillsでプロバイダーごとにオーバーライド可能(boolまたは"auto")。
commands.bash(デフォルトfalse)は! <cmd>でホストシェルコマンドの実行を有効化(/bash <cmd>はエイリアス、tools.elevated許可リストが必要)。commands.bashForegroundMs(デフォルト2000)はbashがバックグラウンドモードに切り替わるまでの待機時間(0で即座にバックグラウンド化)。commands.config(デフォルトfalse)は/configを有効化(openclaw.jsonの読み書き)。commands.debug(デフォルトfalse)は/debugを有効化(ランタイム限定のオーバーライド)。commands.allowFrom(オプション)はコマンド認可のプロバイダー別許可リストを設定。設定された場合、コマンドとディレクティブの 唯一の認可ソースとなります(チャンネル許可リスト/ペアリングおよびcommands.useAccessGroupsは無視)。"*"をグローバルデフォルトとして使用し、プロバイダー固有のキーでオーバーライド。commands.useAccessGroups(デフォルトtrue)はcommands.allowFromが未設定の場合にコマンドの許可リスト/ポリシーを適用。
コマンド一覧
テキスト+ネイティブ(有効時):
/help/commands/skill <name> [input](スキルを名前で実行)/status(現在のステータスを表示、利用可能な場合は現在のモデルプロバイダーの使用量/クォータを含む)/allowlist(許可リストの一覧/追加/削除)/approve <id> allow-once|allow-always|deny(exec承認プロンプトの解決)/context [list|detail|json](「コンテキスト」の説明、detailはファイル/ツール/スキル/システムプロンプトごとのサイズを表示)/export-session [path](エイリアス:/export)(現在のセッションをフルシステムプロンプト付きHTMLにエクスポート)/whoami(送信者IDを表示、エイリアス:/id)/session idle <duration|off>(フォーカスされたスレッドバインディングの非アクティブ自動アンフォーカスを管理)/session max-age <duration|off>(フォーカスされたスレッドバインディングのハード最大寿命自動アンフォーカスを管理)/subagents list|kill|log|info|send|steer|spawn(現在のセッションのサブエージェント実行の検査、制御、またはスポーン)/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions(ACPランタイムセッションの検査と制御)/agents(このセッションのスレッドバウンドエージェントを一覧表示)/focus <target>(Discord: このスレッドをセッション/サブエージェントターゲットにバインド、または新しいスレッドを作成してバインド)/unfocus(Discord: 現在のスレッドバインディングを解除)/kill <id|#|all>(現在のセッションの実行中サブエージェントを即座に中止、確認メッセージなし)/steer <id|#> <message>(実行中のサブエージェントを即座にステアリング: 実行中なら可能な限り直接、それ以外は現在の作業を中止してステアリングメッセージで再開)/tell <id|#> <message>(/steerのエイリアス)/config show|get|set|unset(設定をディスクに永続化、オーナーのみ、commands.config: trueが必要)/debug show|set|unset|reset(ランタイムオーバーライド、オーナーのみ、commands.debug: trueが必要)/usage off|tokens|full|cost(レスポンスごとの使用量フッターまたはローカルコストサマリー)/tts off|always|inbound|tagged|status|provider|limit|summary|audio(TTS制御、/ttsを参照)- Discord: ネイティブコマンドは
/voice(Discordが/ttsを予約)、テキスト/ttsは引き続き動作。
- Discord: ネイティブコマンドは
/stop/restart/dock-telegram(エイリアス:/dock_telegram)(返信先をTelegramに切り替え)/dock-discord(エイリアス:/dock_discord)(返信先をDiscordに切り替え)/dock-slack(エイリアス:/dock_slack)(返信先をSlackに切り替え)/activation mention|always(グループのみ)/send on|off|inherit(オーナーのみ)/resetまたは/new [model](オプションのモデルヒント、残りはパススルー)/think <off|minimal|low|medium|high|xhigh>(モデル/プロバイダーによる動的選択、エイリアス:/thinking、/t)/fast status|on|off(引数省略で現在の有効なファストモード状態を表示)/verbose on|full|off(エイリアス:/v)/reasoning on|off|stream(エイリアス:/reason、onの場合はReasoning:プレフィックス付きの別メッセージを送信、stream= Telegramドラフトのみ)/elevated on|off|ask|full(エイリアス:/elev、fullはexec承認をスキップ)/exec host=<sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>(/execを送信して現在の設定を表示)/model <name>(エイリアス:/models、またはagents.defaults.models.*.aliasの/<alias>)/queue <mode>(オプション:debounce:2s cap:25 drop:summarize等、/queueを送信して現在の設定を表示)/bash <command>(ホスト専用、! <command>のエイリアス、commands.bash: true+tools.elevated許可リストが必要)
テキストのみ:
/compact [instructions](/concepts/compactionを参照)! <command>(ホスト専用、一度に1つ、長時間ジョブには!poll+!stopを使用)!poll(出力/ステータスの確認、オプションのsessionIdを受け入れ、/bash pollも動作)!stop(実行中のbashジョブを停止、オプションのsessionIdを受け入れ、/bash stopも動作)
注意事項:
- コマンドはコマンドと引数の間にオプションの
:を受け入れます(例:/think: high、/send: on、/help:)。 /new <model>はモデルエイリアス、provider/model、またはプロバイダー名を受け入れます(ファジーマッチ)。マッチしない場合、テキストはメッセージ本文として扱われます。- 完全なプロバイダー使用量の内訳には
openclaw status --usageを使用。 /allowlist add|removeにはcommands.config=trueが必要で、チャンネルのconfigWritesに従います。- マルチアカウントチャンネルでは、設定ターゲットの
/allowlist --account <id>および/config set channels.<provider>.accounts.<id>...もターゲットアカウントのconfigWritesに従います。 /usageはレスポンスごとの使用量フッターを制御。/usage costはOpenClawセッションログからローカルコストサマリーを出力します。/restartはデフォルトで有効。commands.restart: falseで無効化。- Discord専用ネイティブコマンド:
/vc join|leave|statusはボイスチャンネルを制御(channels.discord.voiceとネイティブコマンドが必要、テキストとしては利用不可)。 - Discordスレッドバインディングコマンド(
/focus、/unfocus、/agents、/session idle、/session max-age)には有効なスレッドバインディング(session.threadBindings.enabledおよび/またはchannels.discord.threadBindings.enabled)が必要。 - ACPコマンドリファレンスとランタイム動作: ACPエージェント。
/verboseはデバッグと追加の可視化向け。通常使用ではオフにしておいてください。/fast on|offはセッションオーバーライドを永続化します。クリアして設定デフォルトにフォールバックするにはSessions UIのinheritオプションを使用。- ツール障害サマリーは関連する場合は引き続き表示されますが、詳細な障害テキストは
/verboseがonまたはfullの場合のみ含まれます。 /reasoning(および/verbose)はグループ設定ではリスクがあります: 公開するつもりのない内部推論やツール出力が露出する可能性があります。特にグループチャットではオフにしておくことを推奨。- ファストパス: 許可リスト送信者からのコマンドのみメッセージは即座に処理されます(キュー+モデルをバイパス)。
- グループメンションゲーティング: 許可リスト送信者からのコマンドのみメッセージはメンション要件をバイパス。
- インラインショートカット(許可リスト送信者のみ): 一部のコマンドは通常メッセージに埋め込んでも動作し、モデルに残りのテキストが渡される前に除去されます。
- 例:
hey /statusはステータス返信をトリガーし、残りのテキストは通常のフローで処理。
- 例:
- 現在対応:
/help、/commands、/status、/whoami(/id)。 - 未認可のコマンドのみメッセージはサイレントに無視され、インライン
/...トークンはプレーンテキストとして扱われます。 - スキルコマンド:
user-invocableスキルはスラッシュコマンドとして公開されます。名前はa-z0-9_にサニタイズ(最大32文字)。衝突時は数値サフィックス(例:_2)が付きます。/skill <name> [input]で名前によるスキル実行(ネイティブコマンドの制限によりスキルごとのコマンドが作れない場合に有用)。- デフォルトでは、スキルコマンドは通常のリクエストとしてモデルに転送されます。
- スキルはオプションで
command-dispatch: toolを宣言して、コマンドを直接ツールにルーティング可能(決定的、モデル不要)。 - 例:
/prose(OpenProseプラグイン)— OpenProseを参照。
- ネイティブコマンド引数: Discordは動的オプション用にオートコンプリートを使用(必須引数省略時はボタンメニュー)。TelegramとSlackはコマンドが選択肢をサポートし引数省略時にボタンメニューを表示。
使用量サーフェス(何がどこに表示されるか)
- プロバイダー使用量/クォータ(例: “Claude 80% left”)は使用量トラッキング有効時に
/statusに表示。 - レスポンスごとのトークン/コストは
/usage off|tokens|fullで制御(通常返信に付加)。 /model statusはモデル/認証/エンドポイントについてであり、使用量ではありません。
モデル選択(/model)
/modelはディレクティブとして実装されています。
例:
/model
/model list
/model 3
/model openai/gpt-5.2
/model opus@anthropic:default
/model status
注意事項:
/modelと/model listはコンパクトな番号付きピッカー(モデルファミリー+利用可能プロバイダー)を表示。- Discordでは、
/modelと/modelsはプロバイダーとモデルのドロップダウン+Submitステップ付きのインタラクティブピッカーを開きます。 /model <#>はそのピッカーから選択(可能な場合は現在のプロバイダーを優先)。/model statusは詳細ビューを表示。設定済みのプロバイダーエンドポイント(baseUrl)やAPIモード(api)も含まれます。
デバッグオーバーライド
/debugはランタイム限定の設定オーバーライド(メモリ上のみ、ディスクには書き込まない)を設定できます。オーナーのみ。デフォルトで無効、commands.debug: trueで有効化。
例:
/debug show
/debug set messages.responsePrefix="[openclaw]"
/debug set channels.whatsapp.allowFrom=["+1555","+4477"]
/debug unset messages.responsePrefix
/debug reset
注意事項:
- オーバーライドは新しい設定読み取りに即座に適用されますが、
openclaw.jsonには書き込みません。 /debug resetですべてのオーバーライドをクリアし、ディスク上の設定に戻ります。
設定の更新
/configはディスク上の設定(openclaw.json)に書き込みます。オーナーのみ。デフォルトで無効、commands.config: trueで有効化。
例:
/config show
/config show messages.responsePrefix
/config get messages.responsePrefix
/config set messages.responsePrefix="[openclaw]"
/config unset messages.responsePrefix
注意事項:
- 設定は書き込み前にバリデーションされ、無効な変更は拒否されます。
/configの更新は再起動後も永続化されます。
サーフェスに関する注意
- テキストコマンドは通常のチャットセッションで実行(DMは
mainを共有、グループは独自セッション)。 - ネイティブコマンドは分離されたセッションを使用:
- Discord:
agent:<agentId>:discord:slash:<userId> - Slack:
agent:<agentId>:slack:slash:<userId>(プレフィックスはchannels.slack.slashCommand.sessionPrefixで設定可能) - Telegram:
telegram:slash:<userId>(CommandTargetSessionKey経由でチャットセッションをターゲット)
- Discord:
- **
/stop**はアクティブなチャットセッションをターゲットし、現在の実行を中止できます。 - Slack:
channels.slack.slashCommandは単一の/openclawスタイルコマンドに引き続き対応。commands.nativeを有効にする場合、組み込みコマンドごとに(/helpと同じ名前で)Slackスラッシュコマンドを作成する必要があります。Slackのコマンド引数メニューはエフェメラルなBlock Kitボタンとして配信されます。- Slackネイティブの例外: Slackが
/statusを予約しているため、/agentstatus(/statusではなく)を登録してください。テキスト/statusはSlackメッセージ内で引き続き動作。
- Slackネイティブの例外: Slackが