
Claude Code v2.1.282〜v2.1.283 の主要アップデート - /doctor prompt-audit の追加と auto mode の既定化
クラウド事業統括本部の石川です。Claude Code の v2.1.282 〜 v2.1.283(2026-09-24 〜 2026-09-25)のアップデートをまとめてご紹介します。本日は、手元の CLAUDE.md やスキルに古いモデル向けの書き方が残っていないか点検できる /doctor prompt-audit の追加を試してみました。
前回のアップデート記事はこちらです。
アップデートサマリー
対象は 2 バージョン(v2.1.282 〜 v2.1.283、2026-09-24 〜 2026-09-25)で、CHANGELOG の項目は計 180 件(v2.1.282 が 86 件、v2.1.283 が 94 件)です。本記事の分類では修正が 106 件と大半を占め、改善 26 件、新機能 18 件、セキュリティ 11 件が続きます。既存の設定や運用に影響する破壊的変更も 9 件含まれるため、該当しそうな方は「破壊的変更」の節もあわせて確認してください。
注目のアップデート
新機能: /doctor prompt-audit の追加(v2.1.283)
CLAUDE.md、スキル、エージェント、コマンドに、古いモデル向けに書かれたプロンプトのパターンが無いかを監査する /doctor prompt-audit が追加されました。/checkup prompt-audit でも実行できます(/checkup は /doctor の別名です)。同じ v2.1.283 で、古いパス・古いコマンド・矛盾する指示ファイルがレポートの先頭に来るよう改善され、Claude Code がドキュメント化している thinking キーワードは残す扱いになりました。
CLAUDE.md やスキルを長く運用してきた方ほど、一度実行して指摘内容を確認する価値があると感じます。
新機能: モデルを制限する managed settings の追加(v2.1.283)
管理者向けの managed settings に、次の 2 つが追加されました。
deniedModels:availableModelsで許可されている場合でも、特定のモデルをブロックできます。availableModelsMatch:"exact"を指定すると、availableModelsのエントリは記載したモデルバージョンのみを許可し、新しいリリースは一覧に追加するまでブロックされます。
組織で利用モデルを統制している管理者の方にとっては、新しいモデルのリリース時に意図せず利用可能になる状態を避けられる点が大きいと感じます。
不具合解消: 復号できない Web 検索結果を含む会話の 400 エラーを修正(v2.1.282)
会話の途中の応答を第三者のゲートウェイ経由で受け取った場合など、API が復号できない Web 検索結果が履歴に含まれる会話で、その会話のリクエストがすべて 400 エラーになる問題が修正されました。
第三者のゲートウェイを経由して Web 検索を使っている方は、同じ会話を続けられなくなる状況が解消される修正だと見ています。
セキュリティ: managed settings の一部の不正値で設定ブロック全体が無視される問題を修正(v2.1.282 / v2.1.283)
managed settings の permissions・autoMode・worktree・attribution(v2.1.282)と sandbox(v2.1.283)で、ネストした値が 1 つ不正なだけでブロック全体が無視されていた問題が修正され、残りの値は適用されるようになりました。sandbox の不正な値は fail closed(安全側に倒す扱い)になります。また、disableClaudeAiConnectors や allowManagedPermissionRulesOnly など真偽値のロック系キーに誤った値を書いた場合も、無視されずにロックが適用され、起動時にキー名が表示されるようになりました(v2.1.282)。
これまで無視されていた設定値がアップデート後に効き始める可能性があるため、managed settings を配布している管理者の方は起動時の警告を確認しておくとよいと考えます。
セキュリティ: allowManagedPermissionRulesOnly 下での allowed-tools による事前承認を修正(v2.1.282)
managed の allowManagedPermissionRulesOnly が有効な環境で、リポジトリ・ユーザー・--add-dir のスキルやコマンド、skills ディレクトリのプラグインマニフェストが、allowed-tools で自身のツールを事前承認できていた問題が修正されました。
allowManagedPermissionRulesOnly で権限ルールを管理者に限定している組織では、リポジトリ側のスキルが自分のツールを事前承認できなくなった点が重要だと感じます。
セキュリティ: Windows の PowerShell ツールでドライブのルートなどを削除できた問題を修正(v2.1.283)
Windows の PowerShell ツールで、Remove-Item なら拒否されるドライブのルートやホームフォルダなどを、cmd /c rd・rmdir・del・erase で削除できてしまう問題が修正されました。
Windows で PowerShell ツールを使っている方は、早めのアップデートを検討したい修正だと感じます。
対象バージョンと期間
| バージョン | 公開日 | CHANGELOG の項目数 |
|---|---|---|
| v2.1.282 | 2026-09-24 | 86 |
| v2.1.283 | 2026-09-25 | 94 |
新機能
モデル制御・管理者向け
- managed setting
deniedModelsとavailableModelsMatchを追加(v2.1.283。注目のアップデートを参照) claude --chromeを排他的なmanaged-mcp.jsonと併用できる managed settingallowClaudeInChromeWithManagedMcpを追加。Chrome がブロックされた際のエラーにこの設定名が表示されます(v2.1.282)- [Claude Tag] Claude の Slack 検索を、Claude が追加済みのパブリックチャンネルに限定する管理設定「Channels Claude can search」を追加。組織・ワークスペース・チャンネル単位で設定できます(v2.1.283)
テレメトリ・ゲートウェイ
- プロジェクトの設定ファイル内で無視された、またはテレメトリを無効化したテレメトリ変数を一覧表示する、起動時の通知と
/status・claude doctorの項目を追加(v2.1.282) OTEL_LOG_TOOL_CONTENT=1のとき、MCP ツール・WebFetch・WebSearch の出力を OpenTelemetry のtool.outputスパンイベントに含めるように(v2.1.283)- ゲートウェイ向けヒントヘッダーに
x-claude-code-prompt-idを追加。1 つのユーザープロンプトに対応するリクエストを LLM ゲートウェイがまとめられます。CLAUDE_CODE_GATEWAY_HINT_HEADERS=1でオプトインします(v2.1.283) - Claude apps gateway に、Amazon Bedrock の Mantle エンドポイント向けの上流プロバイダ
mantleを追加(v2.1.283) - Claude apps gateway の設定にオプトインの
load_test_modeブロックを追加。リクエストは構築・署名されますが上流には送信されず、クライアントには定型の応答が返るため、デプロイの負荷試験に使えます(v2.1.283) - Claude apps gateway に
store.readiness_grace_secondsを追加。データベースのフェイルオーバーなど短時間の Postgres 障害の間も/readyzを ready のまま維持できます(v2.1.282)
表示・その他
- ワイドなターミナルで Claude の文章部分の表示幅に上限を設ける
maxProseWidth設定を追加。表とコードブロックは全幅のまま表示されます(v2.1.282) /doctor prompt-audit(/checkup prompt-audit)を追加(v2.1.283。注目のアップデートを参照)- [クラウドセッション] すでにリポジトリがある実行中のクラウドセッション(Slack から開始したものを含む)に、フォークの upstream など別の GitHub オーナーのリポジトリを追加できるように(v2.1.282)
- [クラウドセッション] Settings › Connectors › GitHub に、Claude GitHub App の状態(アカウントでインストール済み・到達可能か、接続・インストール・再接続の手順)を表示(v2.1.282)
- このほか、フルスクリーンモードでの他セッションの省略メッセージのクリック展開、stream-json の
system/initのplugin_errorsで--plugin-dirの読み込み失敗エントリへのpathの追加、[クラウドセッション] GitHub 以外の Git サーバー向けのリポジトリリンク、[Claude Tag] 「Back to Slack」ボタンなどが追加されています。
改善
パフォーマンス
- 非常に大きなセッション(一度もコンパクションしていないものを含む)の再開にかかる時間を短縮(v2.1.282)
- 起動を改善。
claude -pと Claude Code Remote がインタラクティブ UI を読み込まなくなり、auto mode 分類器のルールと Artifact ツールは起動時ではなく初回使用時に読み込まれます(v2.1.283) - 事前接続した API 接続を再利用し、最初のリクエストのレイテンシを改善(v2.1.283)
- セッションの最初の応答の末尾で実行されていたパターンのコンパイル処理を応答のストリーミング中に実行し、初回応答のレイテンシを改善(v2.1.283)
MCP・CLI
- MCP ツールが返した画像がファイルにも保存され、Bash や Read などのツールから開けるように(v2.1.283)
/mcpのツール一覧で、一度に表示できるツールが増え、ページキーとマウスでスクロールでき、組織がブロックしたツールに警告アイコンが付くように(v2.1.283)--system-promptと--append-system-promptで、テキスト指定と-file形式を同時に指定できるように。ファイルの内容が先に来ます(v2.1.283)
操作性
/help・/hooks・/copy・/chrome・/memory・/ide・/release-notes・/rewind・/diff・/remote-env・/pluginなどのピッカーの一覧で、ページキー・マウスホイール・クリックに対応(v2.1.283)- [クラウドセッション] GitHub アカウントで読み取りはできるが push できないプライベートリポジトリを、実行中のクラウドセッションに読み取り用として追加できるように(v2.1.283)
- このほか、
/tasks・/artifactsなどの一覧表示、コンパクションのスピナー、/modelピッカーの表記、プロンプト候補の表示頻度、claude-apiスキルの内容などについて、細かな改善が行われています。
セキュリティ
注目のアップデートで紹介した 3 件のほかにも、権限や管理設定に関わる変更が入っています。
- Bash 権限ルールの途中の
:*が設定ファイルでスキップされる問題を修正: 途中に:*を含む Bash 権限ルールが、--allowedToolsでは有効なのに設定ファイルではスキップされていました。すべての設定元で機能するようになり、マッチ方法に関する起動時の警告が表示されます(v2.1.282) - Windows/WSL の managed settings の適用条件を変更: 管理者ポリシー(HKLM、
managed-settings.json)が存在するが不正または読み取れない場合、ユーザーが書き込める HKCU や WSL の/etc/claude-codeを適用しないようになりました(v2.1.282) - 承認したコマンドが 2 回実行される問題を修正: リモートセッションのワーカー再起動時に、復元された権限確認で承認したコマンドが 2 回実行される問題が修正されました(v2.1.282)
- Skill の拒否ルールの対象を拡大:
Skill(anthropic-skills:<name>)の拒否ルールが Claude Desktop からプラグインとして配信されたスキルもブロックし、Skill(skill:<name>)の拒否ルールがスキルの別名と表示名にもマッチするようになりました(v2.1.283) /ultrareviewの起動ダイアログに注意書きを追加: ローカルブランチのレビューでは、追跡対象ファイルの未コミットの変更がアップロードされる場合がある旨が表示されます(v2.1.283)- [VS Code] 権限モード表示の不一致を修正: auto / bypass モードからの自動切り替えに失敗した後、セッションは auto / bypass モードのまま動いているのに表示が Default になる問題が修正されました。切り替えが成功するまで再試行します(v2.1.283)
- このほか、Self-hosted runner で、ライフサイクルフックの git の扱い(Git LFS の
pre-pushフック、書き込み可能なシステムのcore.hooksPath、コミット署名)と、Anthropic 管理の git 下でのGIT_SSL_CAINFO・GIT_SSL_NO_VERIFYの扱いが変更されています(v2.1.283)。
修正(主要なもの)
安定性・操作性に関わる修正を中心に抜粋します。
- 拡張思考が失われる・応答のたびに失敗する問題を修正:
--continue・--resumeで継続・再開したセッション、作業中に使った/model・/rename・/artifactsなどの即時実行スラッシュコマンド、会話の途中まで提供されていた組み込みツールを除外した--toolsでの再起動で、以前の推論や拡張思考(extended thinking)が失われるケースが修正されました。「Invaliddatainredacted_thinkingblock」で応答のたびに失敗する場合は、会話の thinking ブロックを破棄して 1 回リトライします(v2.1.282) - 要約が拒否されたときのコンパクションの失敗を修正: 要約リクエストが拒否された場合に、フォールバックモデルでリトライするようになりました(v2.1.282)
- サインイン更新中のプロセス終了によるログインエラーを修正: 別の Claude Code プロセスがサインイン情報の更新中に終了・強制終了された後、最大 1 分間「another Claude Code process is refreshing it」エラーでリクエストが失敗する問題が修正されました(v2.1.282)
- 複数行の貼り付けが 1 行ずつ送信される問題を修正: セッション途中でターミナルの bracketed paste モードがリセットされた後に発生していました(v2.1.282)
- Bedrock・Vertex AI での表示・機能の不足を修正: Amazon Bedrock と Bedrock Mantle で、セーフガードによるブロックメッセージにリクエスト ID とメッセージ ID が表示されるようになりました。Vertex AI では、新しくリリースされたモデルなど Claude Code がまだ認識していないモデルにも Web 検索が提供されるようになりました(v2.1.282)
- MCP サーバーの接続・進捗の問題を修正: ステートレスなリモート MCP サーバー(再デプロイ中のプロキシなど)から一時的に HTTP 404 が返ると接続済み表示のままセッション終了まで使えなくなる問題、stdio MCP サーバーの起動中にセッションが終了するとサーバーが実行されたまま残る問題、バックグラウンドに移った長時間の MCP ツール呼び出しの進捗通知が破棄される問題が修正されました(v2.1.283)
- MCP の設定・集計の問題を修正:
/contextで MCP サーバーの instructions がカウントされない問題(独立した行として表示され合計に含まれるように)と、設定ファイルに書き込めない場合でもclaude mcp add・add-json・removeが成功と報告する問題が修正されました(v2.1.283) - プラグイン情報が失われる問題を修正: 大文字小文字だけが異なる ID の 2 つのプラグインがあり、指定した方がそのスコープに
enabledPluginsエントリを持たない場合に、claude plugin uninstallがもう一方をオプション・シークレットごと削除する問題が修正されました。あわせて、このバージョンで読めないレコードを含むinstalled_plugins.jsonが書き換えられてレコードが失われる問題も修正されています(v2.1.283) - auto-memory の編集が機密ファイルへの書き込みとしてブロックされる問題を修正: git リポジトリのサブディレクトリで Claude Code を起動した場合に発生していました(v2.1.283)
- テレメトリ無効時に Remote Control が使えない問題を修正:
DISABLE_TELEMETRYやDO_NOT_TRACKでテレメトリを無効にしていると、有料プランで Remote Control が利用できない問題が修正されました(v2.1.283) - SDK セッションでツール呼び出しや結果が失われる問題を修正: 応答が途中で終了した際の保留中のツール呼び出しと完了したツール結果、ワーカー再起動後の保留中の承認プロンプト、非ストリーミングフォールバックの
result.usageが失われる問題が修正されました(v2.1.283) - [クラウドセッション] 完了済みステップの重複実行を修正: サーバー側の再起動から復旧した後、コメント投稿や push など完了済みのステップをやり直して重複させることがある問題が修正されました(v2.1.283)
- 地味に嬉しい修正: 再描画した行の CJK 文字や絵文字が次の行へ折り返したとき、diff の最終列に古い文字が残る問題が修正されました(v2.1.282)。日本語を含むファイルの差分をよく見る方には嬉しい修正だと感じます。
- このほか、vim モード、
/skillsなどの一覧表示、キーバインド、プラグイン管理コマンド、VS Code 拡張、Claude Tag(Slack)、Code Review など、多数の細かな不具合が修正されています。
破壊的変更
既存の設定や運用に影響する可能性がある変更です。以下の設定例は、CHANGELOG と公式ドキュメントの記述をもとに作成した例です。
サードパーティプロバイダ・テレメトリ無効時の auto mode の既定化(v2.1.282 / v2.1.283)
- サードパーティプロバイダ使用時、またはテレメトリ無効時のインタラクティブセッションでは、権限モードが設定されていなければ auto mode で開始するようになりました。
permissions.defaultModeの設定は引き続き優先されます(v2.1.283) - テレメトリがオフの場合、Anthropic API への直接接続では auto mode が既定でサーバー側の分類器を使うようになりました。
CLAUDE_CODE_AUTO_MODE_SERVER=0でオプトアウトできます。オプトアウトの対象はサーバー側の分類器の利用で、auto mode そのものではありません(v2.1.282)
変更前(〜v2.1.282): サードパーティプロバイダ(Amazon Bedrock など)経由で、permissions.defaultMode を設定せずに起動した場合の例
claude # Manual(default)モードで開始
変更前の既定を Manual(default)としているのは、公式ドキュメントの開始モードの表で、Amazon Bedrock などのプロバイダの組み込みの既定が default と記載されていることに基づきます(2026-09-26 時点。この表には v2.1.283 の変更がまだ反映されていません)。
変更後(v2.1.283〜):
claude # auto mode で開始
従来どおり Manual モードで開始したい場合は、permissions.defaultMode を明示します(~/.claude/settings.json の設定例)。
{
"permissions": {
"defaultMode": "default"
}
}
公式ドキュメントでは、default が Manual モードの設定値であり、auto と bypassPermissions 以外の値はプロジェクト設定を含むどの設定ファイルからでも有効になると説明されています。
テレメトリ無効かつ Anthropic API への直接接続で、サーバー側の分類器を使わない場合の例(v2.1.282〜):
export CLAUDE_CODE_AUTO_MODE_SERVER=0
プロジェクト設定・ローカル設定での OpenTelemetry 変数の無視(v2.1.282)
プロジェクト設定とローカル設定で、エクスポートの有効化・エンドポイントの設定・コンテンツの取得を行う OpenTelemetry 変数(CLAUDE_CODE_ENABLE_TELEMETRY・OTEL_LOG_* など)が無視されるようになりました。プロジェクトの設定ファイル内で無視された変数は、起動時の通知と /status・claude doctor で確認できます。
変更前(〜v2.1.281): プロジェクト設定(.claude/settings.json)の例。この設定でテレメトリが有効になっていました。
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_LOG_TOOL_CONTENT": "1"
}
}
変更後(v2.1.282〜): 上記の設定はプロジェクト設定からは無視されます。公式ドキュメントでは、これらの変数は managed settings、各開発者のシェル、または ~/.claude/settings.json で設定するよう案内されています(~/.claude/settings.json の設定例)。
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1"
}
}
なお、公式ドキュメントによると、OTEL_LOGS_EXPORTER などのエクスポーター指定を none にしてシグナルを止める設定は、managed settings などで上書きされていなければプロジェクト設定からも有効です。
managed settings 下での sandbox.excludedCommands の扱い(v2.1.282)
managed settings または --settings で allowUnsandboxedCommands: false が設定されている場合、あるいは managed settings で allowManagedDomainsOnly: true が設定されている場合、sandbox.excludedCommands のプロジェクト設定・ローカル設定のエントリが無視されるようになりました。
変更前(〜v2.1.281): プロジェクト設定(.claude/settings.json)の例
{
"sandbox": {
"excludedCommands": ["docker"]
}
}
変更後(v2.1.282〜): managed settings が次のような場合、上記のプロジェクト設定のエントリは無視されます(managed settings の設定例)。
{
"sandbox": {
"allowUnsandboxedCommands": false
}
}
anthropic-skills 名前空間の予約(v2.1.282。claude-ai は v2.1.283 で撤回)
v2.1.282 で anthropic-skills と claude-ai という名前が claude.ai から同期されたスキル向けに予約されましたが、v2.1.283 で claude-ai の予約は撤回されました。v2.1.283 時点で影響が残るのは anthropic-skills です。
anthropic-skills名前空間のスキルフォルダ・コマンドファイル・ワークフローコマンドは読み込まれなくなりました。同名のプラグインは読み込まれますが、同期されたスキルと名前が衝突した場合は同期スキルが優先されます(v2.1.282)anthropic-skillsという名前で設定した MCP サーバーは、スキルやプロンプトを一覧に出さなくなりました(ツールは引き続き動作します)。再び一覧に出すには、MCP 設定でサーバー名を変更します(v2.1.282)Skill(anthropic-skills:*)の許可ルールは、claude.ai から同期されたスキルのみが対象になり、同じ名前を使うだけのプラグインや他のスキルは対象外になりました(v2.1.282)claude-aiという名前のスキル・コマンド・ワークフローと、MCP サーバーのスキル・プロンプトは v2.1.283 で再び読み込まれるようになり、Skill(claude-ai:*)ルールは通常のプレフィックスルールに戻りました(v2.1.283)
変更前(〜v2.1.281): MCP 設定の例。サーバーのスキル・プロンプトが一覧に出ていました。
{
"mcpServers": {
"anthropic-skills": { /* サーバーの設定 */ }
}
}
変更後(v2.1.282〜): ツールは動きますが、スキル・プロンプトは一覧に出ません。一覧に出すにはサーバー名を変更します(設定例)。
{
"mcpServers": {
"my-skills": { /* サーバーの設定 */ }
}
}
claude plugin eval の git 2.31 以上必須化(v2.1.283)
git がインストールされている場合、claude plugin eval に git 2.31 以降が必要になりました。古い git では実行が拒否され、バージョンを示すメッセージが表示されます。
変更前(〜v2.1.282)と変更後(v2.1.283〜)の例:
git --version
# 例: git version 2.30.x の環境
claude plugin eval ... # 〜v2.1.282: 実行できる / v2.1.283〜: 実行が拒否され、git のバージョンを示すメッセージが表示される
/doctor prompt-audit を試してみた
/doctor prompt-audit は、CLAUDE.md、スキル、エージェント、コマンドに、古いモデル向けに書かれたプロンプトのパターンが無いかを監査するコマンドです(Claude Code v2.1.283 で追加)。このハンズオンでは、古い書き方をわざと入れた使い捨てのサンプルプロジェクトを作り、監査レポートで何が指摘されるかを確認します。
前提
- Claude Code v2.1.283 以降(
claude --versionで確認) - 所要時間は 3 分程度です。監査にかかる時間は、使うモデルや環境によって前後します。
- サンプルは
/tmpに作ります。手元のプロジェクトの CLAUDE.md には触れません。
全体の流れ
Step 1: サンプルプロジェクトを作る
ターミナルで次のコマンドをまとめて貼り付けます。
cd /tmp
mkdir -p prompt-audit-handson && cd prompt-audit-handson
mkdir -p .claude/rules .claude/skills/review scripts
cat > CLAUDE.md <<'EOF'
# CLAUDE.md
You are a helpful assistant.
## 開発ルール
- IMPORTANT: YOU MUST ALWAYS run the tests before committing!!
- CRITICAL: NEVER skip lint.
- Be thorough. Do not be lazy. Do not stop early.
## プロジェクト構成
- API のハンドラは `src/handlers/api.ts` にあります。
- テストは `npm run test:unit` で実行します。
## コミット
- コミットメッセージは英語で書きます。
## 運用
- `scripts/reset-db.sh` は本番データベースを初期化するため、実行しないでください。
EOF
cat > .claude/rules/commit.md <<'EOF'
# コミットのルール
- コミットメッセージは日本語で書きます。
EOF
cat > .claude/skills/review/SKILL.md <<'EOF'
---
name: review
description: コードレビューを行うときに使う
---
CRITICAL: You MUST follow these steps exactly.
Take a deep breath and plan before acting.
STEP 1: 変更されたファイルを一覧にする
STEP 2: 各ファイルを読む
STEP 3: 問題点を列挙する
STEP 4: 重要度の順に並べる
STEP 5: まとめを書く
Keep the review to at most 300 words (workaround for claude-3 truncation).
EOF
cat > package.json <<'EOF'
{
"name": "prompt-audit-handson",
"private": true,
"scripts": {
"test": "node --test"
}
}
EOF
cat > scripts/reset-db.sh <<'EOF'
#!/bin/sh
echo "dummy: this script would reset the production database"
EOF
これで次の 5 ファイルができます。
% tree -a
.
├── .claude
│ ├── rules
│ │ └── commit.md
│ └── skills
│ └── review
│ └── SKILL.md
├── CLAUDE.md
├── package.json
└── scripts
└── reset-db.sh
サンプルには、次の記述を意図的に入れています。
| 仕込んだ記述 | 場所 | 仕込んだ意図 |
|---|---|---|
IMPORTANT / YOU MUST / CRITICAL / !! |
CLAUDE.md、SKILL.md | 大文字や感嘆符による過剰な強調 |
Be thorough. Do not be lazy. Do not stop early. |
CLAUDE.md | 古いモデル向けの念押し |
src/handlers/api.ts |
CLAUDE.md | 存在しないパス(古いパス) |
npm run test:unit |
CLAUDE.md | package.json に無いスクリプト(古いコマンド) |
| コミットメッセージは英語 / 日本語 | CLAUDE.md と .claude/rules/commit.md |
指示ファイル同士の矛盾 |
scripts/reset-db.sh を実行しない(理由付き) |
CLAUDE.md | 残すべき記述の例(理由がある禁止事項) |
Take a deep breath and plan before acting. |
SKILL.md | 現在のモデルでは不要な計画の指示 |
STEP 1 〜 STEP 5 |
SKILL.md | 判断を伴う作業の手順の固定 |
at most 300 words (workaround for claude-3 truncation) |
SKILL.md | 旧モデル向けの回避策と語数の上限 |
CLAUDE.md は、監査の対象であると同時に、claude を起動したセッションへの指示としても読み込まれます。そのため、応答の長さや形式を変える指示は、スキルを使うときにしか本文が読み込まれない SKILL.md に入れています。
Step 2: Claude Code を起動する
claude
初めて開くディレクトリなので、フォルダを信頼するかの確認が表示されます。サンプルは自分で作った内容なので、信頼して進めます。
Step 3: 監査を実行する
/doctor prompt-audit だけで実行しますが、~/.claude/ のユーザーレベルの設定(CLAUDE.md、スキルなど)も監査対象に含まれることがあり、サンプルに仕込んだ記述の指摘と区別しにくくなります。prompt-audit の後ろに対象のディレクトリを書くと、監査の範囲をそこに絞れます。
今回はサンプルの検証なので下記のプロンプトを入力します。
/doctor prompt-audit /tmp/prompt-audit-handson 配下のファイルだけを対象にしてください

/checkup は /doctor の別名なので、/checkup prompt-audit でも同じです。監査が終わると、レポートと修正の提案(diff)が表示されます。
Step 4: レポートを確認する
次の点を確認します。
- 冒頭の前提: 監査の対象範囲が
/tmp/prompt-audit-handson配下になっているか。どのモデルを基準に監査したかも最初に書かれています。~/.claude/のファイルの指摘が混ざっている場合は、各指摘の場所(ファイルパス)で見分けられます。 - レポートの先頭: 古いパス(
src/handlers/api.ts)、古いコマンド(npm run test:unit)、矛盾する指示ファイル(コミットメッセージの言語)の指摘が先頭に来ているか。v2.1.283 でこの並び順に改善されています。 - 各指摘の中身: 場所(
ファイル:行)、該当する記述、どのパターンに当たるか、なぜ古いのか、確信度、提案するアクション(削除・書き換えなど)がそろっているか。 - 残すべき記述の扱い:
scripts/reset-db.shを実行しないという理由付きの禁止事項が、削除対象になっていないか。 - 修正の提案(diff): 指摘に対する具体的な書き換え案が出ているか。
監査レポートの全て
❯ /doctor prompt-audit /tmp/prompt-audit-handson 配下のファイルだけを対象にしてください
対象を /tmp/prompt-audit-handson 配下に絞り直します。前回の広範囲な結果は使わず、プロジェクト内のファイルを基に提案diffを作成し、コピーに適用して検証します。
Ran 3 shell commands
プロンプト監査レポート: /tmp/prompt-audit-handson
実際のファイルは何も変更していません。提案 diff は作業用のコピーに当てて確認しただけです。
前提
- 対象: /tmp/prompt-audit-handson 配下で Claude Code が読み込む指示ファイル3つです。
- CLAUDE.md
- .claude/rules/commit.md
- .claude/skills/review/SKILL.md
- 事実確認にだけ使ったファイル: package.json と scripts/reset-db.sh。
- 対象外: ご指示どおり、~/.claude/ 配下、上位ディレクトリ、プラグインは扱っていません。前回の広い範囲の結果も使っていません。settings 系のファイルは読んでいません。
- import: どのファイルにも @ による import はありません。CLAUDE.local.md、AGENTS.md、ネストした CLAUDE.md もありません。
- git 履歴: git リポジトリではないため、どちらの記述が新しいかを判断できません。
- 判定の基準にしたモデル: このセッションで動いている Claude Opus 5.5 です。どのファイルも model: を指定していません。
要約
影響が大きい指摘は次の3つです。
1. CLAUDE.md に、実際のリポジトリと合わない記述が2つあります。
- src/handlers/api.ts は存在しません。
- npm run test:unit は package.json に定義されていません。定義されているのは test(node --test)だけです。
- このままだと、モデルは存在しないファイルやコマンドを探しに行きます。
2. コミットメッセージの言語を、2つのファイルが逆の内容で決めています。
- CLAUDE.md は英語、.claude/rules/commit.md は日本語です。
- 2つのファイルは同時に読み込まれるため、どちらに従うかが決まりません。
- git 履歴がなく新旧を判断できないので、修正案は出していません。どちらにするかを決めてください。
3. review スキルに、古いモデル向けの書き方が集中しています。
- 「Take a deep breath and plan before acting」という指示があります。
- 語数の上限(300語)があり、claude-3 の出力切れへの対策だと書かれています。
- STEP 1〜5 の手順を固定したうえで、それに厳密に従うよう強調しています。
グループ別の件数
┌───────────────────────────────────┬──────┬──────────────────────────────┐
│ グループ │ 件数 │ 内容 │
├───────────────────────────────────┼──────┼──────────────────────────────┤
│ Group 1(古いモデル向けの書き方) │ 7 │ │
├───────────────────────────────────┼──────┼──────────────────────────────┤
│ Group 2(リポジトリと合わない記述 │ 4 │ │
│ ・ファイル間の矛盾) │ │ │
├───────────────────────────────────┼──────┼──────────────────────────────┤
│ │ 対象 │ ツール定義がありません。スキ │
│ Group 3(ツールの説明文) │ 外 │ ルの description │
│ │ │ は起動条件の文なので残します │
├───────────────────────────────────┼──────┼──────────────────────────────┤
│ Group 4(API リクエストの設定) │ 対象 │ リクエストを組み立てるコード │
│ │ 外 │ がありません │
└───────────────────────────────────┴──────┴──────────────────────────────┘
指摘一覧(確信度の高い順)
#: 1
場所: CLAUDE.md:13
該当箇所: 「API のハンドラは src/handlers/api.ts にあります」
パターン: G2 変わりやすい具体値
理由: src/ ディレクトリ自体がありません
確信度: High
対処: remove(ユーザー確認が必要)
────────────────────────────────────────
#: 2
場所: CLAUDE.md:14
該当箇所: 「npm run test:unit で実行します」
パターン: G2 変わりやすい具体値
理由: package.json にあるのは test だけです
確信度: High
対処: rewrite: npm test(ユーザー確認が必要)
────────────────────────────────────────
#: 3
場所: CLAUDE.md:18 と .claude/rules/commit.md:3
該当箇所: 「英語で書きます」と「日本語で書きます」
パターン: G2 ファイル同士の矛盾
理由: 常に同時に読み込まれ、指示が逆です。git
履歴がないため新旧を判断できません
確信度: High
対処: flag:
どちらの言語にするかを決めてください。決まれば、もう一方を削除します
────────────────────────────────────────
#: 4
場所: SKILL.md:15
該当箇所: at most 300 words (workaround for claude-3 truncation)
パターン: 1b 語数の上限 + 1d 旧モデル対策の名残
理由: 対策の対象だった claude-3
はもう使われていません。語数の上限は、難しいレビューで考える余地を削ります
確信度: High
対処: remove
────────────────────────────────────────
#: 5
場所: SKILL.md:7
該当箇所: Take a deep breath and plan before acting.
パターン: 1b
理由: 今のモデルは言われなくても計画を立てます。この指示は計画のしすぎにつながります。Opus
5.5 は thinking が常に有効で、考える深さは effort で調整するものです
確信度: High
対処: remove
────────────────────────────────────────
#: 6
場所: CLAUDE.md:9
該当箇所: Be thorough. Do not be lazy. Do not stop early.
パターン: 1a 強い強調による圧力(ガイドの例文と同じ文です)
理由: 今のモデルは最初から自分で進めます。この一文は過剰な動作を招くだけです
確信度: High
対処: remove
────────────────────────────────────────
#: 7
場所: SKILL.md:6
該当箇所: CRITICAL: You MUST follow these steps exactly.
パターン: 1a
理由: 判断が必要な作業を固定の手順に縛り、CRITICAL
の強調で融通が利かなくなります
確信度: Medium
対処: remove
────────────────────────────────────────
#: 8
場所: SKILL.md:9-13
該当箇所: STEP 1: 〜 STEP 5:
パターン: 1c 手順の指定しすぎ
理由: レビューは判断の作業です。手順ではなく、求める結果(重要度の高い順の指摘とまとめ)を書くほうが結果がよくなります
確信度: Medium
対処: rewrite(下の diff)
────────────────────────────────────────
#: 9
場所: CLAUDE.md:7
該当箇所: IMPORTANT: YOU MUST ALWAYS run the tests before committing!!
パターン: 1a
理由: 大文字と !!
による強調は、今のモデルでは過剰に適用されます。ルールそのものは必要です
確信度: Medium
対処: rewrite: Run the tests before committing.
────────────────────────────────────────
#: 10
場所: CLAUDE.md:8
該当箇所: CRITICAL: NEVER skip lint.
パターン: 1a
理由: #9 と同じです
確信度: Medium
対処: rewrite: Do not skip lint.
────────────────────────────────────────
#: 11
場所: CLAUDE.md:8
該当箇所: lint の実行方法
パターン: G2
理由: package.json に lint スクリプトがなく、lint
の設定ファイルも見つかりません。ルールがコマンドを挙げていないので、リポジトリと矛盾しているわけではありません
確信度: Low
対処: flag: lint のコマンドを明記するか、lint を導入するかを決めてください
残すと判断した記述
- CLAUDE.md:22(scripts/reset-db.sh を実行しない)
- 理由が書かれた禁止事項です。スクリプトが実在することも確認しました。
- CLAUDE.md:3(You are a helpful assistant.)
- 1行だけの役割の説明で、ほかにプロジェクトの情報も書かれているため、指摘対象にしていません。
- SKILL.md:3 の description
- スキルを起動する条件を書いた文です。
提案 diff
- 1つの指摘を1つの hunk にしています。hunk ごとに採用するかを選べます。
- #1 と #2 はリポジトリの事実に基づく修正なので、採用前に内容を確認してください。
- #3 と #11 は判断が必要なため、diff に入れていません。
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -7 +7 @@
-- IMPORTANT: YOU MUST ALWAYS run the tests before committing!!
+- Run the tests before committing.
@@ -8 +8 @@
-- CRITICAL: NEVER skip lint.
+- Do not skip lint.
@@ -9 +8,0 @@
-- Be thorough. Do not be lazy. Do not stop early.
@@ -13 +11,0 @@
-- API のハンドラは `src/handlers/api.ts` にあります。
@@ -14 +12 @@
-- テストは `npm run test:unit` で実行します。
+- テストは `npm test` で実行します。
--- a/.claude/skills/review/SKILL.md
+++ b/.claude/skills/review/SKILL.md
@@ -6 +5,0 @@
-CRITICAL: You MUST follow these steps exactly.
@@ -7,2 +5,0 @@
-Take a deep breath and plan before acting.
-
@@ -9,5 +6 @@
-STEP 1: 変更されたファイルを一覧にする
-STEP 2: 各ファイルを読む
-STEP 3: 問題点を列挙する
-STEP 4: 重要度の順に並べる
-STEP 5: まとめを書く
+変更されたファイルを読み、見つけた問題点を重要度の高い順に挙げ、最後に全体のまとめを書いてください。
@@ -14,2 +6,0 @@
-
-Keep the review to at most 300 words (workaround for claude-3 truncation).
作業用のコピーで patch -p1 を実行し、すべての hunk が問題なく当たることを確認しました。適用後の review スキルの本文は、上の1文だけになります。
パッチファイル: /private/tmp/claude-501/-private-tmp-prompt-audit-handson/fabc9d93-4aae-4ebe-a111-4941ebdd780d/scratchpad/prompt-audit.patch
✻ Brewed for 9m 39s · done 12:50
──────────────────────────────── 1 new message ─────────────────────────────────
※ recap: `/tmp/prompt-audit-handson` 配下の指示ファイル3つを監査し、レポートと検証済みの提案 diff を作りました。ファイルはまだ変更していません。次は、コミットメッセージを英語と日本語のどちらにするか決めてから、採用する hunk を選んでください。 (disable recaps in /config)
─────────────────────────────────────────────────────────────────────────
レポートの内容は、実行するモデルによって変わります。上の表のすべてが指摘されるとは限りません。
Step 5: 後片付け
/exit で Claude Code を終了し、サンプルを削除します。
cd /tmp && rm -rf prompt-audit-handson
補足
- ファイルは書き換えられません: 監査はレポートと diff を出すところまでで、ファイルの変更は行いません。適用したい場合は、diff を見たうえで明示的に依頼します。ただし、古いパスや指示ファイルの矛盾に関する書き換えは、提案のみの扱いです。「きれいにして」のような包括的な依頼では適用されず、個別に確認します。
- 矛盾は判断をユーザーに委ねることがあります: 指示ファイル同士の矛盾は、git の履歴からどちらが新しいかを判断します。このサンプルのように git の履歴が無い場合は、書き換えを提案せず、どちらに合わせるかを確認する形で指摘されることがあります。
- 設定ファイルは読みません: 秘密情報を含むことがあるため、
.claude/settings*.jsonや.mcp.jsonは監査の対象外です。 - thinking キーワード: Claude Code がドキュメント化している thinking キーワードは、指摘せずに残す扱いです(v2.1.283 の改善)。
- 実際のプロジェクトで試す場合: 手元のプロジェクトで
claudeを起動し、/doctor prompt-auditを実行します。~/.claude/のユーザーレベルの設定も含めて見直したい場合はそのまま、プロジェクトだけに絞りたい場合は Step 3 と同じように対象のディレクトリを書き添えます。
うまくいかない場合
「safeguards flagged this message」と表示され、Details が [reasoning_extraction] のとき
CLAUDE.md など、セッションに読み込まれる指示ファイルに、推論の過程を応答に書き出させる指示(例: 「回答する前に <scratchpad> タグの中で考えを整理してください」)が含まれている可能性があります。prompt-audit の監査ガイドでも、Claude Fable 5.1 と Claude Opus 5.5 では、推論の書き出しを指示すると拒否(reasoning extraction)されることがあると説明されています。

該当する指示を削除してから、Claude Code を起動し直して再実行してください。エラーメッセージのとおり、/model で別のモデルに切り替えて実行する方法もあります。
最後に
/doctor prompt-audit は、古いモデル向けに書いたまま残っている指示を見直すきっかけになり、CLAUDE.md やスキルを長く使ってきた方ほど効果がありそうだと見ています。起動・再開の高速化や MCP 接続の安定化も入っており、日常的な使い勝手も着実に改善されていると感じます。
auto mode の既定化など挙動が変わる変更も含まれているため、該当する方は「破壊的変更」の節を確認したうえで、アップデートして試してみてはいかがでしょうか。
参考文献








