AskUserQuestionが無応答のまま進む問題の原因と現在の設定
AskUserQuestionが60秒の無応答で自動継続する挙動は、v2.1.198・v2.1.199限定の一時的な既定でした。現在の既定とaskUserQuestionTimeout・環境変数の設定方法をまとめます。
Claude CodeのAskUserQuestionが問いかけたまま60秒後に「No response after 60s — continued without an answer」と表示され、回答を待たずに進む現象があります。これは2026年7月1日公開のv2.1.198で紛れ込んだ一時的な既定でした。2日後のv2.1.200でこの自動継続は既定オフに戻り、有効にするかどうかはaskUserQuestionTimeout設定で選べる形に変わっています。
質問が無応答のまま進むこと自体は、今もオプトインで使える正式な機能です。ただしv2.1.198とv2.1.199の2バージョンだけは、ユーザーの意思と関係なく既定でオンになっていました。
最新版でも質問が答えなしで通るなら、原因は別にあるかもしれません。権限モードや非対話実行が理由で、そもそも質問が出ないこともあります。後半の切り分けで順に見ていきます。
v2.1.198とv2.1.199で何が起きていたか
Claude Code v2.1.85では、PreToolUseフックがupdatedInputを返してAskUserQuestionに答える、ヘッドレス統合向けの対応が加わりました。一方、自動継続を制御するCLAUDE_AFK_TIMEOUT_MSとCLAUDE_AFK_COUNTDOWN_MSはどちらもv2.1.198以降を要求する変数で、この仕組みはv2.1.197以前にはありません。
v2.1.198がリリースされた2026年7月1日から、質問ダイアログは60秒間無応答が続くと自動的に閉じ、Claudeへ次の指示を送るようになりました。ツールの結果として渡っていたのは次の文言です。
"No response after 60s — the user may be away from keyboard. Proceed using your best judgment based on the context so far; you can re-ask this question later if it's still relevant."
この挙動を報告したGitHub issue #73125は、v2.1.198のLinux上のVS Code統合ターミナルで、AWS Bedrock経由のOpusを使っていた報告です。コメントは100件を超えています。issueの本文は「changelogには何も書かれていない」と指摘していました。実際、changelogのv2.1.198・v2.1.199のエントリに該当の項目はありません。環境変数リファレンスのCLAUDE_AFK_TIMEOUT_MSの行に、「v2.1.198とv2.1.199では既定で60秒だった」と書かれているだけです。
自動継続が既定でオンだった期間
- 2026-07-01v2.1.198
60秒の無応答で自動継続が既定でオンになる。changelogには記載がない。
- 2026-07-02v2.1.199とissue #73125
v2.1.199でも同じ挙動が続く。同日にissue #73125が報告される。
- 2026-07-03v2.1.200
既定オフに変更。
askUserQuestionTimeoutで有効にする形になる。 - 2026-07-20v2.1.216
自由記述の回答が「続行せよ」と受け取られるバグを修正。
v2.1.200で既定はオフに戻った
v2.1.200は2026年7月3日に公開され、issue #73125が報告された翌日にあたります。changelogには次のように記載されました。
"Changed
AskUserQuestiondialogs to no longer auto-continue by default; opt into an idle timeout via/config"
公式のツールリファレンスでも、AskUserQuestionの質問は既定で無期限に待つと書かれています。自動継続を使うかどうかは、ユーザー自身がaskUserQuestionTimeout設定で選ぶ形に変わりました。
askUserQuestionTimeoutで自動継続を有効にする
自動継続を有効にするには、askUserQuestionTimeout設定に"60s"・"5m"・"10m"のいずれかを指定します。既定値は"never"で、v2.1.200以降が必要です。
{
"askUserQuestionTimeout": "5m"
}/config画面では「Question auto-continue timeout」という行に対応し、この行はユーザー設定にキーを書き込みます。管理者設定(managed settings)や--settingsフラグがこのキーを指定している間は、/config側の行自体が隠れます。
指定した時間だけ質問が無応答のまま続くと、ダイアログは自動で閉じます。すでに選択していた選択肢はそのまま送信され、Claudeには「ユーザーが離席している可能性がある」という文言が渡ります。Claudeは自分の判断で作業を進め、必要なら後で同じ質問をやり直せます。
閉じる20秒前からは、画面にカウントダウンが出ます。キーを押せばタイマーは最初から数え直しです。
CLAUDE_AFK_TIMEOUT_MSはsettings.jsonより優先される
askUserQuestionTimeoutとは別に、環境変数CLAUDE_AFK_TIMEOUT_MSでも同じ挙動を制御できます。両者の違いは次の比較のとおりです。
自動継続の2つのスイッチ
askUserQuestionTimeout
settings.jsonか/configで指定します。ユーザー設定と管理者設定が対象で、値は"60s"・"5m"・"10m"・"never"です。席を外すときに任せたい人向けです。
CLAUDE_AFK_TIMEOUT_MS
環境変数で、そのセッションだけに効きます。待ち時間はミリ秒で指定し、設定した瞬間からaskUserQuestionTimeoutの値や既定の"never"を無視して自動継続をオンにします。デモや自動テストで一時的に使う変数です。
環境変数はシェルから渡せます。
export CLAUDE_AFK_TIMEOUT_MS=300000
claudeCLAUDE_AFK_COUNTDOWN_MSは、自動継続までのカウントダウン表示が何ミリ秒前から出るかを変える変数です。既定は20000(20秒)で、自動継続の設定時間を上限にキャップされます。自動継続そのものがオフのときは、この変数を設定しても表示に変化はありません。
似た「無応答の判定」でも、対象がユーザーではなくサブエージェントの場合は別の変数を使います。CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MSとはは、サブエージェントのストリーミング出力が止まったときの検知時間を扱う変数で、askUserQuestionTimeoutとは対象も既定値も別物です。
設定したのにタイマーが動かない場面
askUserQuestionTimeoutを設定していても、次の場面では質問は自動で閉じず、答えるまで待ち続けます。
- バックグラウンドセッションで出た質問
- スクリーンリーダーモードで出た質問
- Remote Controlに接続しているセッションの質問
ターミナルが自分のウィンドウにフォーカスがあると報告している間も、タイマーは数えません。席を外したつもりでも、ウィンドウを前面に出したまま離れると自動継続は始まらない、ということです。
どれも「設定が効いていない」ように見えますが、仕様どおりの動きです。
似た待ち状態で、画面が「応答が返らないまま止まる」ケースもあります。こちらはAPI接続が切れているかどうかが論点で、原因も対処も別物です。詳しくは「Waiting for API response」の意味と対処で扱っています。
自動継続ではないのに質問が答えなしで通るとき
最新版では自動継続は既定オフです。それでも質問に誰も答えずに進んだなら、自動継続とは別の理由があります。
権限モードのdontAskでは、AskUserQuestionは拒否されます。許可ルールでAskUserQuestionを許可していても同じで、確認が必要な呼び出しを自動で拒否するモードだからです。v2.1.289のclaude --helpは、このモードを次のように列挙します。
claude --help
# --permission-mode <mode> Permission mode to use for the session
# (choices: "acceptEdits", "auto",
# "bypassPermissions", "manual",
# "dontAsk", "plan")-pで動かす非対話実行も事情が違います。AskUserQuestionは、質問を受け取る権限ホストがある実行にだけ提示されます。Agent SDKのcanUseToolコールバックや--permission-prompt-toolがその例です。
claude --helpにある--permission-promptsオプションは、-pでのプロンプトに誰が答えるかをhostかnoneで選びます。noneでは、AskUserQuestionのように人の回答が要るツールはClaudeからツールごと見えなくなります。このオプションはv2.1.259以降で使え、それより古い版では未知のオプションとしてエラーになります。既定はhostです。
フックで質問に代わりに答える構成もあります。PreToolUseフックがpermissionDecision: "allow"と一緒に、元のquestions配列とanswersをupdatedInputとして返すと、画面に質問が出ないまま答えが入ります。この場合の答えは自動継続の定型文ではなく、フックが返した値です。
AskUserQuestion自体を無効化する方法
タイムアウトを設定する以外に、AskUserQuestionをpermissionsのdenyリストに加える方法もあります。
{
"permissions": {
"deny": ["AskUserQuestion"]
}
}ツール名だけを書いたdenyルールは、そのツールをClaudeのコンテキストから取り除きます。Claudeにはこのツールが見えなくなり、選択式ダイアログ自体が表示されなくなります。無応答による自動継続そのものを避けたい場合の代替手段です。
自由記述の回答が無視されていたバグ
v2.1.200でオプトイン化された後も、別の不具合が残っていました。AskUserQuestionには選択肢のほかにOther欄で自由記述の回答ができます。そこに「待って」「先に説明して」と書いても、続行を促す文言がそのままClaudeに渡ってしまうケースがありました。
この不具合はv2.1.216(2026年7月20日公開)で修正されています。changelogの記載は次のとおりです。
"Fixed AskUserQuestion telling Claude to continue even when your answer asked it to wait or explain first — free-text answers now get neutral wording"
ツールリファレンスでも、自由記述で答えた場合はニュートラルな文言で中継され、待機や説明を求める内容もそのままClaudeに伝わると説明されています。
権限プロンプトは自動継続の対象外
自動継続の対象はAskUserQuestionの多肢選択の質問だけです。plan mode承認を含む権限プロンプトは、これらの設定にかかわらず無操作のまま自動的には解決されません。
自動化ワークフローでコマンド実行の承認まで無人で通したい場合、この2つの設定は使えません。権限プロンプトの扱いは、権限モード(auto modeなど)やPermissionRequestフックで決めます。
意図せず自動継続が起きているときの確認手順
想定していないタイミングで質問が進んでしまう場合は、次の順に確認すると原因を切り分けやすくなります。
原因の切り分け
- 1
バージョンを見る
claude --versionで確認します。v2.1.198・v2.1.199なら、この2バージョンだけ自動継続が既定オンです。アップデートで解消します。 - 2
環境変数を見る
env | grep CLAUDE_AFKでシェルの環境変数を確認します。CI環境やdotfiles経由でCLAUDE_AFK_TIMEOUT_MSが設定されていないかを見ます。この変数は設定ファイルの値より優先されるため、askUserQuestionTimeoutを"never"にしても効きません。 - 3
設定を見る
ユーザー設定と管理者設定の
askUserQuestionTimeoutを確認します。管理者設定に値が入っていると、/configの該当行は表示されません。 - 4
権限モードと実行方法を見る
dontAskモードや-pの非対話実行なら、質問は自動継続でなく拒否や省略で通っています。--permission-modeと--permission-promptsの指定を見直します。 - 5
自由記述の扱いを見る
Other欄に「待って」と書いたのに続行されたなら、v2.1.216より前のバージョンを使っていないか確認します。
まとめ
最新版で気になるのは、CLAUDE_AFK_TIMEOUT_MSが環境に残っていないかと、dontAskや-pのように質問が出ない実行方法になっていないかです。質問を自動で進ませたいならaskUserQuestionTimeout、質問自体を止めたいならdenyルールと、目的で使い分けます。