OpenClawのCLIバックエンド
テキスト専用のフォールバックとしてのローカルAI CLI、Claude CLIの詳細、MCPブリッジ、許可リスト下のネイティブBash、そしてセーフティネットにできないこと
APIプロバイダーが停止している、レート制限を受けている、または不安定なとき、OpenClawはローカルのAI CLIをテキスト専用のフォールバックとして実行できます。ドキュメントはその形を意図的に定めています。ツールは直接注入されません(ただし、バックエンドはループバックのMCPブリッジを通じてGatewayのツールを受け取れます)。ストリーミングはCLIが対応していればJSONLで行われ、セッションに対応しているのでフォローアップの一貫性が保たれ、CLIがパスを受け付ける場合は画像も渡されます。これはセーフティネットであり、主要な経路ではなく、ACPでもありません。ここでは、クイックスタート、フォールバックの接続、ターンの仕組み、Claude CLIの詳細、セッション、MCPブリッジ、コンパクション、そして制限事項を紹介します。
クイックスタートとフォールバック
- バンドルされたAnthropicプラグインがClaude CLIバックエンドを登録します。Claude Codeがインストールされてログイン済みであれば、それ以外の設定は不要です。Claude CLIのモデル参照を使った1メッセージのエージェント実行で動作を確認できます。Gatewayのサービスのパス上にCLIがある必要があり、標準外の実行ファイルにはバックエンドプラグインが必要です。
- プライマリモデルが失敗したときだけ使うには、Claude CLIのモデルをフォールバックリストに追加します。設定されたフォールバックは、プライマリが認証、レート制限、タイムアウトで失敗したとき、モデルの許可ポリシーに含まれていなくても使用対象のままです。このポリシーが関係するのは、直接選択する場合だけです。
- 正規のAnthropicモデルをCLI経由でルーティングするには、そのモデルにエージェントのランタイムIDを設定します。認証情報は認証プロファイルまたはプラグインの設定に保持され、コマンド、引数、環境、パース、セッション、画像、ウォッチドッグの仕組みはプラグインのコードが担います。
- ターンは、プロバイダーの接頭辞でバックエンドを選び、同じOpenClawのプロンプトとワークスペースのコンテキストからシステムプロンプトを構築し、対応していればセッションID付きでCLIを実行し、JSONまたはテキストをパースして、バックエンドごとにセッションIDを永続化します。これにより、フォローアップで同じセッションが再利用されます。
「常に動作する」テキスト応答のためのセーフティネットとして使い、主要な経路にはしないでください。
Claude CLIの詳細
バンドルされたバックエンドは、インストール済みのClaude Code実行ファイルと構造化されたstdioプロトコルで通信し、互換性のあるターンの間は1つのウォームなサブプロセスを維持します。モデル、システムプロンプト、ツールポリシーが変わると新しいサブプロセスを起動し、再起動後は保存されたセッションIDから再開します。ログインとサブスクリプションはClaude Codeが管理し、OpenClawがネイティブのトークンを読み取ったり、永続化したり、更新したり、転送したりすることは一切ありません。プロンプト構築フックのコンテキストはネイティブのフック添付としてClaudeに届き、保存されたセッションノートは重み付きの上限付き予算の範囲内で再生されます。スキルに実体化されたパスがある場合は、一時的なプラグインディレクトリを通じてネイティブのスキルリゾルバーが使われ、ワークスペースの編集によってキャッシュされた履歴が無効にならないよう、Claude CodeのGit関連の指示は無効化されます。Claude Codeはデフォルトの権限モードで起動しますが、OpenClawの権限応答とツール実行前のフックがネイティブツールをホストの管理下に置き、execポリシーと承認の前に、ネイティブのツール名とファイル引数をOpenClawの対応するものへ変換します。execのask設定がプロンプトを出す場合、ネイティブツールのリクエストはセッションのチャネルに中継され、allow once、同じウォームセッションに対するallow always、denyの選択肢が示されます。タイムアウト、到達できない経路、終了したターンはすべてdenyとなり、allow alwaysがBashに適用されることはありません。思考レベルはClaude Codeのeffortフラグに対応し、固定予算のモデルではmax-thinking-tokensの値にも対応します。ネイティブのログインと、貼り付けたサブスクリプショントークンのどちらでも動作します。
ネイティブBash、セッション、ブリッジ
- askの設定がon-missの場合、ネイティブのBashコマンドは、OpenClaw独自のシェル評価器を使ってエージェントのexec許可リストと照合されます。呼び出しがプロンプトなしで実行されるのは、すべてのセグメントが許可リストにあるバイナリに解決され、完全に束縛できる場合だけです。パイプライン、置換、サブシェル、リダイレクトは、プロンプトを出す前に拒否されます。これはClaude Codeが実行するコマンドに対する引数レベルのポリシーであり、サンドボックス化された実行ではありません。作業ディレクトリ、パス、環境、サンドボックスはClaude Codeが管理しているからです。
- 保存されたCLIセッションはプロバイダーが所有する継続性で、再開前に読み取り可能なトランスクリプトと照合されます。新しいセッションは、アカウントの境界が選択された認証情報と一致する場合、セッションデータベースからOpenClawの履歴を復元できます。使用できるかどうかは、非公開のアカウントフィンガープリントと連続したトランスクリプトの範囲で決まるため、アカウントを切り替えると混在した履歴は使用対象外になり、認証IDが変わるとセッションは再利用されなくなります。Claude CLIでの試行が失敗した場合は、Claude Codeのローカルトランスクリプトから収集した前置き(最新のコンパクション要約と直近のターン)を与えた、CLI以外のモデルへフェイルオーバーできます。
- bundle-MCPオーバーレイを有効にしたバックエンドには、実行ごとのトークンの下でGatewayのツールをCLIプロセスに公開するループバックのHTTP MCPサーバーが用意され、Gatewayが選択したセッション、アカウント、チャネルに紐付けられます。allowとdenyのポリシーはネイティブのMCPサーバーにも適用されます。cronジョブのような制限付きの実行では、Claudeのネイティブツールとカスタマイズが完全に無効化され、許可されたOpenClawのツールだけが公開されます。また、セッションスコープのブリッジランタイムは、10分間アイドル状態が続くと回収されます。
同じ組み合わせを反対側から見た内容についてはOpenClawとClaude Codeの解説を、フォールバックがいつ動くかを決める仕組みについてはOpenClawのモデルフェイルオーバーの解説をご覧ください。
タイムアウト、コンパクション、制限
制限は互いに独立した2つです。エージェントのターン予算(デフォルトは48時間、0で無制限)と、バックエンドが管理するCLIの無出力ウォッチドッグで、後者はターン予算が無制限でも有効です。CLI内で開始されたバックグラウンド処理は、ターンが終わるとサブプロセスとともに終了するため、長く続く永続的な処理は切り離されたサブエージェントに任せるべきです。Claude CLIバックエンドはネイティブのコンパクションを自ら担うと宣言しているため、OpenClawはClaude Codeに任せ、Claude Codeの自動コンパクトのウィンドウを通じてコンテキスト予算を渡します。一方、明示的なcompactコマンドは紐付けられたセッションを再開し、ネイティブのコンパクトコマンドを送信します。Gemini CLIバックエンドも自身のコンパクションを担いますが、手動のコマンドはありません。ClaudeバックエンドはAnthropicが、GeminiバックエンドはGoogleが管理しており、後者の前提条件は、パス上にCLIがあることとGoogle AI Studioのキープロファイルです。Codexはapp-serverハーネスを通じて動くため、バンドルされたCodex CLIバックエンドはありません。制限事項は、ブリッジなしではCLIプロトコルにツール呼び出しが注入されないこと、ストリーミングがバックエンドによって異なること、構造化出力がCLI自身のJSONに依存することです。ネイティブBashの照合先となる許可リストについてはOpenClawのexec承認を、2つ目のバンドル済みバックエンドの背後にあるプロバイダーについてはOpenClawとGeminiの解説を参照してください。
Dialiでは
Dialiには、フォールバック先となるホストのCLIはありません。モデルへの経路は、Vaultに保存したAPIキーか、マネージドのクレジットです。フェイルオーバーはローカルのバイナリへではなく、プロバイダー間で行われます。アシスタントについてはDialiのマネージドOpenClawホスティングを、その経路で使えるプロバイダーについてはOpenClawのモデルとプロバイダーを参照してください。
- 主要な経路ではなく、フォールバックです。
- ウォームなサブプロセス、ネイティブのログイン、ツールはブリッジ経由のみ。
- OpenClawはネイティブBashを許可リストで制御しますが、サンドボックス化は決してしません。
読むだけでなく、作ってみましょう
エージェントを設定してチャネルを選べば、いつも開いているアプリの中でエージェントが働き始めます。
