---
read_when:
    - エージェントからユーザーに構造化された質問をしたい場合
    - ask_user プロンプトへの回答またはデバッグを行っています
    - ask_user のスキーマ、タイムアウト、またはチャネルの動作が必要です
summary: ask_user が構造化された人間の判断を得るためにエージェントのターンを一時停止する仕組み
title: ユーザーに尋ねる
x-i18n:
    generated_at: "2026-07-26T09:53:36Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 32556314a34c26054c3aabfdd8ecc474cf85196e5cc71adb833face596edbd24
    source_path: tools/ask-user.md
    workflow: 16
---

`ask_user` を使用すると、エージェントは人間に1〜3個の構造化された質問を行い、
回答を待つことができます。これは、リクエスト、コード、または妥当なデフォルトから
エージェントが導き出せる情報や定型的な確認ではなく、真にユーザーが決定すべき事項のためのものです。

このツールはメインセッションでのみ使用できます。サブエージェントやその他の非プライマリ
実行では使用できません。

## 質問に回答する

サポートされている任意の会話画面から回答できます。

- Web Control UI では、質問パネルがコンポーザーのすぐ上にドッキングされます。
  複数の質問があるプロンプトでは、パネルに一度に1つの質問が表示され、短い
  ステッパー形式で順番に進みます。回答が確定するとパネルが閉じ、チャットには
  コンパクトな回答概要だけが残ります。
- Telegram、Discord、Slack では、選択肢が1つだけ選べる単一質問のプロンプトに
  ネイティブボタンが表示されます。
- プレーンテキストの返信は、どのチャンネルでも使用できます。番号、選択肢のラベル、
  または自由記述の回答を返信してください。

OpenClaw では、自由記述の **Other** 回答が常に有効になります。エージェントは作成する選択肢リストに
`Other` オプションを追加してはいけません。

## プラットフォームの動作

サポートされているすべての会話画面で回答できます。Web Control UI では、
展開中にコンポーザーを置き換えるドッキング型ステッパーが使用されます。折りたたむと、
細い質問バーの下に完全なコンポーザーが復元されます。iOS、macOS、Android では
インラインカードが表示されます。複数の質問は、タッチ操作に適した意図的な表現として
積み重ねて表示されます。すべてのプラットフォームで、質問と回答の概要は時間経過によって
削除されることなく、アクティブなチャットのタイムラインに保持されます。また、**Skip** はどこでも使用できます。

複数質問や複数選択のプロンプトなど、ネイティブボタンを使用できないプロンプトは、
チャンネル上で読みやすいテキスト表示にフォールバックします。Control UI では
完全な構造化ステッパーが維持されます。

## タイムアウトと未回答

デフォルトのタイムアウトは900秒です。`timeoutSeconds` は
30〜3600秒の範囲に制限されます。

回答が届く前に質問が期限切れになるかキャンセルされた場合、ツールは
`status: "no_answer"` を返します。その後、エージェントは最善の判断で続行します。
エージェントの実行が中止されると、保留中の Gateway の質問もキャンセルされます。

## ツールスキーマ

```ts
{
  questions: Array<{
    id: string; // 一意の snake_case 回答キー
    header: string; // 短いラベル。12文字に切り詰められる
    question: string; // 1文
    options: Array<{
      label: string;
      description?: string;
    }>; // 2〜4個の選択肢
    multiSelect?: boolean;
  }>; // 1〜3個の質問
  timeoutSeconds?: number; // 整数。デフォルトは900、30〜3600に制限
}
```

`multiSelect: true` を使用すると、ユーザーは複数の選択肢を選べます。すべての質問について、
回答値は配列として返されます。

回答済みの結果例：

```json
{
  "status": "answered",
  "answers": {
    "answers": {
      "deploy_target": ["Staging (Recommended)"]
    }
  }
}
```

## モデル向けガイダンス

モデル向けの契約では、エージェントに次のように指示します。

- 真にユーザーが決定すべき事項によって作業が進められない場合にのみ質問する。
- 質問は1つを優先し、最大でも3つまでにする。
- 推奨する選択肢を先頭に置き、そのラベルの末尾に `(Recommended)` を付ける。
- 自由記述は自動的に追加されるため、作成する選択肢に `Other` を含めない。
- `no_answer` の後は最善の判断で続行する。

エージェントは、続行してよいかを尋ねたり、自身の計画を確認したりするために
`ask_user` を使用すべきではありません。
