7月17日、Olaf Aldersが「Claude Code: Anatomy of a Misfeature」と題した記事を公開した。AIコーディングエージェント「Claude Code」が変更履歴への記載なしに「60秒無応答で自動続行」という挙動をデフォルト有効で出荷し、数日後に撤回した一連の経緯と、その設計判断の問題点を詳しく分析した内容だ。
問題の本質はAFKタイムアウト機能の是非だけではない——「誰がこれを承認したのか」というプロセスの不透明さが、AIエージェントを開発パイプラインに組み込む時代の新しい問いを突きつけている。
何が起きたのか
Claude Codeは、Anthropicが提供するターミナル上で動作するAIコーディングエージェントだ。2025年に一般公開され、コードの生成・編集・実行をインタラクティブに行いながら、ユーザーに確認を求めながら作業を進める設計が基本にある。
2026年7月1日、AnthropicはClaude Code v2.1.198をリリースした。このバージョンには、ひとつの仕様変更が含まれていた。Claudeがユーザーに質問を投げかけた際、60秒間応答がなければ自動で作業を続行するという動作だ。
実際のセッションログはこう見える:
● Claude asked:
⎿ …
● No response after 60s — continued without an answer
● The user stepped away. I'll proceed with best judgment. My plan:
問題はこれだけではない。3問あるうちの1問だけ回答してその場を離れた場合、タイムアウト時にその1問の回答が確定したまま送信される。残り2問はモデルが「ベストジャッジメント」で埋める。途中入力が捨てられるのではなく、むしろ半端なまま提出されるのだ。
さらに、カウントダウン表示が始まるのは残り20秒を切ってからだ。最初の40秒間、ダイアログは通常のブロッキング質問と見た目が変わらない。複数のエージェントを並列実行している場合、「別のタブでカウントダウンが進んでいた」という状況は十分ありえる。
この機能の内部名称は「AFK(Away From Keyboard=離席中)」。ユーザーが席を外していることを前提とした設計だ。しかし前提と実装が噛み合っていない——AFK前提ならば、カウントダウン表示は誰にも見えない。
変更履歴には何も書かれていなかった
v2.1.198のchangelogには約30項目の変更が列挙されているが、AskUserQuestionの自動続行については一切記載がない。v2.1.199(問題報告後に出荷)の24項目にも記載なし。
GitHubのイシュー#73125は2026年7月2日02:54 UTCに報告者のAleksey Noginが起票し、384件のサムズアップ、143件のコメントを集めた。ニッチな不満ではない。
唯一の回避策として、イシュースレッド内で環境変数CLAUDE_AFK_TIMEOUT_MSに巨大な値を設定する方法がコミュニティ内で共有されたが、公式リリースノートにはこの変数名すら登場しなかった。
タイムラインを整理すると:
- 7月1日 — v2.1.198リリース、自動続行がデフォルト有効で出荷
- 7月2日 — GitHubにイシュー報告
- 7月3日 — v2.1.200で動作をデフォルト無効に戻す
- 7月4日 — イシューがクローズ
報告から修正まで約2日。対応自体は速かった。
「修正」の実態
v2.1.200での対応は機能の削除ではなく、デフォルトのフリップだ。changelogの表現も「no longer auto-continue by default」とある。
現行バージョン(v2.1.211)でも、同じコードは完全に動作している。/configから「Question auto-continue timeout」として設定でき、60s、5m、10m、neverから選択できる。未設定時はneverとして扱われるためオプトイン扱いになる。環境変数CLAUDE_AFK_TIMEOUT_MSとCLAUDE_AFK_COUNTDOWN_MSも引き続き有効だ。
Olaf Aldersは「オプトインは正しい修正だ。最初からそうあるべきだった」と認めつつ、こう指摘する——「この機能を最初に黙って有効化したのと同じプロセスが、今も設定一つで同じことをできる状態で稼働している」。
誰がこれを承認したのか
記事が最も鋭く問うのはここだ。Olaf Aldersは一連の問いを列挙する:
- 機能を設計したのは人間か?
- コードを書いたのは人間か、エージェントか?
- レビューしたのは人間か?
- マージしたのは人間か?
- changelogに記載しないと決めたのは人間か?
- リリース前に差分を確認したリリースマネージャーはいたか?
「これだけのステップを人間がゲートしていたなら、誰かが『これは良いアイデアか?』と問うはずだ。Claude Code自体がこの機能をビルドし、承認し、ドキュメント不要と判断したと言われた方が、むしろ納得しやすい」と彼は書く。
AIエージェントが自社の開発パイプラインに深く組み込まれた結果、人間によるレビューが形骸化しうるという指摘は、Claude Codeに限らない問題だ。この記事の調査の一部はClaude Code自身に依頼して実行させたとのことで、「Claude自身に自己反省を妨げるフィルターはなかった」とも述べられている。
技術的な補足:権限プロンプトは別物
Anthropicの公式ドキュメントは「パーミッションプロンプトはタイムアウトしない」と主張している。元記事ではバイナリの静的解析によりその主張を検証しており、タイムアウトコンポーネントの呼び出しは1箇所のみで、パーミッションプロンプトとは別コンポーネントである点が確認されている。
ただし、デプロイ自動化のために--dangerously-skip-permissionsやbypassPermissionsを設定済みのユーザーにとって、この免除に意味はない。権限プロンプト自体が発火しないため、AskUserQuestionによるモデルの判断が最後の関門だったからだ。
詳細はClaude Code: Anatomy of a Misfeatureを参照していただきたい。