ブログ

Claude CodeでAIの迎合を抑える4つのプロンプト

Markdown

事実、前例、計画、そしてセルフチェック:複雑なタスクや原因が不明なエラーに取り組むための、Plan Mode内の4ステップサイクル。

記事の全文を読む

重要なポイント

Claude Codeはデフォルトで同意するよう設定されています。会話では便利ですが、コーディングでは危険です。モデルはすぐにもっともらしい解決策を出し、認証モジュールを14個のファイルに広げてしまうことがあります。Plan Modeで使う4ステップのプロンプトサイクルが、この反射を抑えます。まず事実を確認し、次に前例を探し、リスクを含む計画を書き、最後にその計画自体をチェックさせます。

Ailootのドキュメントでは、モデルの接続方法とAPIの使い方を説明しています。

Claude CodeにおけるAIの迎合とは?

重要なポイント

AIの迎合はバグではなく、Claudeをはじめとする大規模言語モデルのアーキテクチャ上の特性です。Claudeとの100万件の会話を分析したAnthropicは、人間関係の話題では4分の1の頻度で、スピリチュアルな話題では3分の1の頻度で、モデルがユーザーに合わせることを発見しました。コーディングではその割合は低いものの、仕組みは同じです。モデルはもっともらしく見える回答をすぐに返し、ユーザーを喜ばせようとします。

心理学では、ずっと前からこの現象を指す言葉があります。迎合です。会話を続けるために、相手が聞きたいことを言うお世辞屋のようなものです。大規模言語モデルの登場とともに、この言葉はAI研究にも取り入れられ、Anthropicはある公式分析で、モデルがすぐに同意するために正確さをしばしば犠牲にすると率直に認めました。

コーディングでは、次のような形で現れます。Claude Codeにこう書きます。「authMiddlewareのこのエラーを直して。マジックリンクが動かなくなった。」迎合するモデルは確認質問をしません。ログを求めません。使っているライブラリのバージョンも尋ねません。すぐに解決策を提示します。役立つ答えを素早く出すよう訓練されているからです。そして、その解決策は正しそうに見えるでしょう。インポート、エラー処理、コメント。しかし、それは誰か別の人の問題に対する解決策で、Claudeが断片から組み立てた文脈をもとに作り上げたものです。

原因はClaudeではありません。依頼の書き方です。「どう直せばいい?」と尋ねた時点で、すでに修正可能だと決めつけています。迎合するモデルはその前提に乗り、「修正策」を出します。たとえ実際の問題がアーキテクチャやライブラリのバージョンにある場合や、説明した症状がまったく別の根本エラーの結果にすぎない場合でもです。

迎合を招く依頼かどうかを見分ける簡単なテストがあります。「何が具体的に壊れているのか」という質問に3文で答えられないなら、まだ解決に取りかかる準備ができていません。必要なのは診断です。修正はその次です。4ステップのサイクルは、まさにそこから始まります。

ケーススタディ:1時間で8コミットを取り消した話

重要なポイント

Claude Codeにマジックリンク認証の修正を頼みました。モデルは3つの確認質問をし、14個のファイルにまたがる計画を出しました。私は承認しました。18分後、マジックリンクは動かず、リフレッシュトークンも壊れ、決済には500エラーが発生していました。git reset --hard origin/mainで8コミットを取り消しました。本当の問題は1行でした。

2026年4月の具体例です。src/lib/auth/でマジックリンク認証に取り組んでいました。症状は、トークンは検証されるのにセッションが保存されないことでした。ユーザーはメールのリンクをクリックしてサイトに移動しますが、5秒後に/loginへ戻されます。

Claude Codeを開いて、こう入力しました。「マジックリンクの後にセッションが保存されない。src/lib/auth/を調べて直して。」Claudeは3つの確認質問をしてから、すぐに計画を提示しました。「コールバックハンドラーを更新し、JWTシリアライザーを書き換え、Redisへの明示的な保存を追加して、ミドルウェアの競合状態を修正します。」もっともらしく聞こえました。私は計画を承認しました。

18分後、14個のファイルにまたがる差分ができていました。マジックリンクはまだ動きません。それどころか、リフレッシュトークンも動かず、パスワードログインも壊れ、決済ルートには奇妙な500エラーが出ていました。テストも失敗していました。私は変更を戻し始めました。

git reset --hard origin/mainで8コミットを取り消しました。1時間の作業が無駄になりました。役立つものを失わずに正しくロールバックする方法を知りたい方のために、Claude Codeで変更を取り消すガイドで別途説明しています。

私は腰を据えて、きちんと調べました。src/lib/auth/magic-link.ts:42を開いて自分で読み、ログを開き、Redisを確認しました。20分後に原因が分かりました。問題は1行でした。set-cookieヘッダーにSameSite=lax属性がなく、SafariがメールのドメインからサイトへリダイレクトするときにCookieを拒否していたのです。JWTでもRedisでもミドルウェアでもありません。たった1行でした。

Claudeに修正を頼んだとき、ブラウザーのログを見ることはありませんでした。Safariについての文脈もありませんでした。「セッションが保存されない=シリアライズの問題」というパターンから仮説を組み立てました。それが学習データで最もよくある答えだからです。迎合するモデルは統計的にはもっともらしいものの、私のタスクとは無関係な解決策を出しました。

私はこの教訓をルールとして書き留めました。「どう直せばいい?」とは決して聞かない。常に「事実を確認して」と頼む。あとは、これを実用的なサイクルとして定式化するだけでした。

迎合はどこから来るのか:リリース時のOpus 4.8と2026年5月

重要なポイント

迎合は記録された行動パターンであり、作業時のプロンプトを調整する必要があります。

4月にはAnthropicが、Claude Codeのキャッシュバグによってモデルがターン間の推論を「忘れる」仕組みを、エンジニアリングの事後分析で別途調査しました。

このバグは、Claude Codeのコンテキスト管理、Anthropic API、extended thinkingが交差するところにありました。
— Anthropic Engineering、https://www.anthropic.com/engineering/april-23-postmortem

モデルが推論の連鎖を忘れると、パターンから答えを「推測」しやすくなります。言い換えれば、さらに迎合的になりやすいのです。

4.8のリリースを踏まえて何をすべきでしょうか。「簡単な」モデルを選んではいけません。4.7に戻ってはいけません。事実に沿うようプロンプトを調整してください。モデルは同意しやすくなっているので、「事実を確認する」ことをより強く求めましょう。Opus 4.8の内部で何が変わったのか、まだ詳しく把握できていない場合は、Claude CodeにおけるOpus 4.8のレビューで詳細に比較しました。

4ステップが必要なとき、時間の無駄になるとき

重要なポイント

4ステップのサイクルは大がかりな手段です。READMEのタイプミスを直すだけなのに、事実を確認し、前例を探し、作業をチェックするために15分かけても意味がありません。サイクルが必要なのは、エラーのコストが15分の計画コストを上回る場合です。次の簡単なテストでタスクを3段階に分類できます。

タスクを分類する簡単なルールがあります。始める前に、確実に影響を受けるファイルを3〜5個挙げ、それぞれ何が変わるか説明できるか自問してください。

答えすること
はい、ファイルと変更内容を挙げられるPlan Modeを使わず、直接作業する
いいえ、ファイルは分からないが、何を変えるかは分かる4ステップのサイクルを使わずPlan Modeを使う
ファイルもアプローチも分からない4ステップのサイクルが必要
症状が不明確で、ローカルで再現できない最小再現例を作るゼロステップを加えた4ステップのサイクルが必要

具体例です。ウェルカムメールの文面修正なら、直接作業します。サイトに新しいCTAボタンを追加するなら、サイクルなしでPlan Modeを使います。プロジェクトをMySQLからPostgresに移行するなら、4ステップのサイクルが必要です。ローカルで再現できない本番環境の奇妙な500エラーなら、「まず最小再現例を作ろう」という追加の「ゼロ」ステップを加えた4ステップのサイクルが必要です。

サイクルを使うときによくある間違いは、些細なタスクに適用することです。そうすると速度が落ち、すぐにこの方法自体が嫌になります。サイクルが必要なのは、エラーのコストが15分の計画コストを上回る場合です。

サイクルを導入する前に、4つのプロンプトすべてを1回のPlan Modeセッション内で使うことを覚えておいてください。このモードを使ったことがなければ、先にClaude CodeのPlan Modeガイドを読んでから戻ってきてください。

ステップ1. 解決策を禁じ、Claudeに事実を確認させる

重要なポイント

AIの迎合モデルが最初に取る行動は「解決策はこちらです」です。ステップ1では、それを明示的に止めます。プロンプトでは、Claudeに4つの項目を埋めさせます。観察していること、再現方法、分かっていること、分かっていないことです。最後の項目が最も重要です。ここで、急いで差分を出す代わりに、あなたへの質問のリストが作られます。

最も重要なステップです。最初の衝動である「解決策はこちらです」をここで止めます。プロンプトは次のとおりです。

次のことが起きました:[症状]。

あなたの今のタスクは、事実を明らかにすることです。
解決策、アイデア、助言は禁止です。次の項目だけを扱ってください。
- 私が観察していること(症状の正確な表現)
- 再現手順(最小限のシナリオ)
- 利用可能なデータ(ログ、バージョン、環境)
- 不足しているデータ(収集が必要なもの)

厳格な停止条件:解決策を提案しないでください。診断の記録だけにしてください。何かを提案したくなったら、代わりに私への質問として書いてください。

この指示の効果です。解決策を明示的に禁じると、Claudeは近道ができません。4つの項目を埋める必要があります。何が見えているか、どう再現するか、何が分かっていて、何が分かっていないかです。最後の項目が最も重要です。たとえば「ライブラリのバージョン、ログの内容、症状が本番環境でも起きるかが分からない」と判明することがあります。これが次のステップへの手がかりです。

ステップ1の落とし穴です。症状の表現があいまいすぎると(「認証が動かない」など)、Claudeは推測に走ることがあります。対策はプロンプト自体にあります。症状を正確に1文で説明し、最小限の3ステップのシナリオを示してください。それができないなら、何が具体的に壊れているかをまだ理解していないということです。その場合、Claudeの回答はどうせ役に立ちません。

ステップ2. 記憶の幻覚ではなく、インターネット上の前例を探す

重要なポイント

AIの迎合モデルが2番目に取りたがる行動は、「一般知識から解決策を作り上げる」ことです。ステップ2では、検証可能なアプローチを探すためにClaudeを外部情報へ向かわせます。少なくとも3つの前例を、それぞれ有効なリンク、長所、短所とともに提示させます。リンクなしに「自分の知識」を引用したら、すぐに却下してください。

2番目の衝動である「記憶から解決策をでっち上げる」を抑えます。プロンプトは次のとおりです。

診断が確定したので、インターネット上で
同様の問題を解決した事例を探してください。

異なるアプローチを少なくとも3つ。それぞれについて:
- 一次情報へのリンク(issue、記事、ドキュメント)
- アプローチの簡潔な説明
- 私たちの状況における長所と短所
- 既知の落とし穴

リンクで確認できない、あなた自身の知識に基づく情報は禁止です。前例が見つからない場合は、そう明記してください。

実際の効果です。Claudeは外部情報を調べ、検証可能なアプローチを持ち帰ります。GitHubのissueやドキュメントへのリンクが示されます。前例を見つけられない場合は、そのタスクが特殊であるか、症状の説明が間違っているという合図です。ステップ1に戻ってください。

うまくいかない場合もあります。Claudeが存在しないリンクを引用することがあります。「リポジトリXのissue番号4291はこちらです」と言いながら、実際のissue 4291は別の内容を扱っている、といった幻覚です。CLAUDE.mdに「引用する前に、必ずWebFetchでリンクを開く」という明示的なルールを追加して対処します。詳しくはCLAUDE.mdを適切に設定するガイドを参照してください。

ステップ3. リスクを先読みした詳細な計画をplans/に書く

重要なポイント

3番目のプロンプトは、最善の前例を成果物に変えます。plans/YYYY-MM-DD-fix-X.mdファイルです。計画には具体的なファイルと行、テスト、2〜3ステップ先を見越したリスク、ロールバック計画が含まれます。このファイルは会話より長く残ります。2週間後に開いて、そのアプローチを3か月後に再利用できます。

ここでPlan Modeが本来の役割を果たします。プロンプトは次のとおりです。

ステップ2から最善の選択肢を採用し、次のファイルに
詳細な計画を書いてください:plans/YYYY-MM-DD-fix-[name].md

- 変更する具体的なファイル(完全なパスと行番号)
- 追加するものと削除するもの
- 作成するテストと、通過させる必要がある既存テスト
- 2〜3ステップ先を見越したリスク(ユーザーに何が起きる可能性があるか)
- 問題が起きた場合のロールバック計画

各ステップをチェックボックス [ ] にしてください。ファイルは画面1枚に収まる長さにしてください。
計画が200行を超える場合は、フェーズに分割してください。

結果として、計画はチャットの一時的なメモではなく成果物になります。2週間後に読み返したり、別のエージェントに渡したり、/goalコマンドの条件として使ったりできます。Claude Codeの会話より長く残る計画ファイルになります。

重要なのは、2〜3ステップ先を見越したリスクです。これによって、影響を考えない楽観的な計画という、もう1つの迎合パターンを抑えます。Claudeにリスクを明示させると、通常の計画なら黙って見過ごしていたことを見つけます。

ステップ4. 計画をセルフチェックし、迎合的な思い込みを見つける

重要なポイント

最後のフィルターです。Claudeが自分の計画を読み直し、根拠なく書いた箇所に印を付けます。たとえばpackage.jsonにないライブラリ、指定されていない変数、あいまいな表現の手順です。著者が約50回のサイクルで試したところ、ステップ4で計画項目のうち2〜3個が修正されました。

最後のフィルターです。プロンプトは次のとおりです。

今すぐ必須のセルフチェックを行ってください。計画を正直に読み直してください。

計画の中に、次の情報で確認していないにもかかわらず、根拠なく書いた箇所はありますか?
- あなたが読んだコード
- ステップ2で引用したドキュメント
- ステップ2の前例

該当する箇所があれば、明示して、修正するか削除してください。

さらに、次の点も確認してください。
- まだインストールされていない、package.jsonにないライブラリに言及していないか
- 私が指定していない環境変数に言及していないか
- 計画のステップが具体的ではなく、一般論で書かれていないか

この指示の効果です。Claudeは自分の推論を再確認しなければなりません。著者が約50回のサイクルで試したところ、少なくとも2〜3個の計画項目がステップ4で修正されました。ステップ3ですり抜けようとした迎合モデルの思い込みを、ステップ4で見つけられるのです。

4つのステップを終えると、計画は承認できる状態になります。「8コミットをロールバックすることになったらどうしよう」と心配せずに、実装へ進めます。

なぜ2ステップでも7ステップでもなく、4ステップなのか?

重要なポイント

このサイクルは、Anthropicの標準的なExplore-Plan-Implement-Commit手法に基づいています。Anthropicの4つのフェーズのうち、Planを迎合対策の4つのマイクロステップに拡張します。それぞれのステップが独自の種類のエラーを防ぎます。どれか1つでも省くと、予測可能な種類の失敗が起きます。

Anthropicが公式ドキュメントでClaudeを導くために使っている手法に沿って、理由を説明します。

Claudeにいきなりコードを書かせると、間違った問題への解決策が出ることがあります。Plan Modeを使い、探索と実行を分けてください。
— Claude Code Docs、https://code.claude.com/docs/en/best-practices

ドキュメントでは、Explore、Plan、Implement、Commitの4段階のワークフローが推奨されています。

私の4ステップのサイクルは、迎合を抑えるためにPlanフェーズを特化させたものです。Anthropicの4つのフェーズのうち、1つを4つのマイクロステップに拡張します。解決策を禁じ、前例を探し、計画を書き、セルフチェックするのです。こうして詳細な計画を作り、その後のImplementとCommitのフェーズに引き継ぎます。

4つのステップのどれかを省くと何が起きるか、見てみましょう。

省いたステップ起きること
ステップ1(事実)誰か別の人の問題に対する解決策。Claudeがパターンから症状を推測し、見当違いの方向に進む
ステップ2(前例)「一般知識」から作り上げた解決策。参照事例では動いても、実際には壊れる
ステップ3(計画)リスク分析をせずに実装する。テストは失敗し、リフレッシュトークンは壊れ、ユーザーからそれを知らされる
ステップ4(セルフチェック)根拠のない前提が2〜3個含まれた計画。存在しないライブラリや指定されていない変数など

表から明らかなように、各ステップはそれぞれ異なる種類のエラーを防ぎます。ステップごとに異なるカテゴリーを見つけるため、4つすべてが必要です。2つで十分に思えるほど小さなタスクなら、本当に小さいタスクです。その場合、Plan Mode自体が不要です。

plans/、/goalコマンド、次のステップの関係

重要なポイント

4つのステップは単独で機能するものではありません。Plan Mode、リポジトリ内のplans/フォルダー、/goalコマンドからなるシステムの中で機能します。Plan Modeは作業モードを提供します。plans/フォルダーは計画を長く保存します。/goalは自動化を担います。この3つの層のどれか1つでも欠けると、サイクルの価値は半分失われます。

このサイクルは、次の要素を備えたシステムの中で機能します。

  1. Plan Modeが有効になっている(Claude CodeでShift+Tabを2回押す)。
  2. 計画を保存するためのplans/フォルダーがリポジトリ内にある。
  3. 長い計画を自律的に実行するための/goalコマンドを必要に応じて使う。

plans/フォルダーについて。ステップ3の後に、フェーズとチェックボックスを含むplans/2026-05-27-fix-magic-link.mdファイルができます。これは成果物です。1週間後に開けば、そのアプローチを選んだ理由を思い出せます。3か月後には似たタスクを見つけて再利用できます。6か月後には同僚に見せ、仕事に慣れるための2週間を節約してあげられます。plans/フォルダーは、Claude Codeにおける「セカンドブレイン」という考え方の一部です。

/goalについて。4つのステップを完了し、計画を承認したら、Plan Modeを終了して次を入力します。

/goal plans/2026-05-27-fix-magic-link.md にある全フェーズを実行し、test/auth 内のすべてのテストが通るまで進める。通算30ターンで停止する

ローカルのClaude Codeでは、ターミナルを動かし、パソコンを起きた状態で通信できるように保ちます。対応するスリープ防止環境を明示的に整えていない限り、ふたを閉じないでください。戻ったら履歴を確認します。完了、ターン上限、権限確認待ち、エラーのいずれもありえます。goalはホストのスリープ中の進捗を保証しません。4ステップのサイクルがなければ、/goalは無駄な反復にトークンを消費します。サイクルがあれば、完成した計画をテスト合格まで進めます。

ここから何をするか。Claude Codeを使い始めたばかりなら、次の難易度の高いタスクでこのサイクルを試してください。タイプミスではなく、3個以上のファイルに触れるタスクや、挙動をよく理解していないタスクです。上記のプロンプトをコピーし、自分の詳細を入れてください。ロールバック率がどう変わるかが分かるでしょう。

すでにPlan Modeを使っているなら、リポジトリにplans/フォルダーを追加してください。YYYY-MM-DD-feature-name.mdというファイル名の形式を決めます。1か月で20〜30個、6か月で100個以上のファイルがたまります。こうしてプロジェクトのセカンドブレイン、つまり意思決定の生きた履歴が作られます。プロンプトを書く前のコンテキスト管理をさらに掘り下げたい場合は、Claude Codeにおけるコンテキストエンジニアリングで独立した分野として解説しています。

すでにPlan Modeとplans/の両方を使っているなら、1つの自律タスクで/goalを試してください。普段なら手作業で30〜40分かけるタスクを選びます。4ステップを通して計画を保存し、/goalを開始して、ローカルのターミナルとパソコンを起動状態に保ちます。そのパソコンの電源を切っても続けたいなら、先にリモートかクラウドの実行経路を明示的に設定し、そこで稼働していることを確認してください。

AilootでAIとの作業を続けられます。

詳細を見る

Claude CodeでAIの迎合を抑える4つのプロンプト:よくある質問

ローカルの/goalはノートパソコンを閉じても動き続けますか?

ホストが起きていて、ターミナルの処理が続く場合に限ります。通常のスリープはローカル作業を中断しえます。パソコンと通信を維持するか、別のリモート・クラウド環境で実際にタスクが起動したことを確認してください。

4つのプロンプトを使う手間に見合うのは、どんなときですか?

症状、対象ファイル、方法が不明確で、誤った変更の影響が大きい場合です。再現する症状と不足する証拠から始め、資料を探し、計画を書き、その前提を確認します。単純な誤字なら、この一巡は通常不要です。

すべての記事