ツール一覧
Claude Code の組み込みツールを全件(名前・役割・権限の要否)で一覧にし、権限ルールとフックでの指定方法と、主なツールごとの挙動をまとめます。
Claude Code には、コードベースを理解して変更するための組み込みツールがあります。ツール名は、権限ルール・サブエージェントのツール一覧・フックのマッチャーで使う正確な文字列です。独自のツールは、MCP サーバーをつないで足します。プロンプトに基づく再利用できる流れは、新しいツールの項目を足さず、既存の Skill ツールを通るスキルとして書きます。
- 多くの場面では Claude がツールを選ぶので、自分で名指しする必要はない。名指しするのは、権限・CLI フラグ・スキルの
allowed-tools・フックの条件を書くとき - 「権限が要るか」の列は、作業ディレクトリ内のパスについて、Manual モードで確認が出るか
Read・Grep・Globのように「いいえ」のファイルアクセスのツールも、作業ディレクトリと追加のディレクトリの外のパスでは確認が出るBashは「はい」だが、組み込みの読み取り専用のコマンドは確認なしで動く- auto モードでは、確認の多くを、あなたの代わりに分類器が決める(権限モード)
ツール一覧#
| ツール | 役割 | 権限 |
|---|---|---|
Agent |
専用のコンテキストウィンドウを持つサブエージェントを起動して、タスクを任せる。エージェントチームが有効なら、name を付けた呼び出しがチームメイトを起動することもある |
不要 |
Artifact |
HTML か Markdown のファイルを、claude.ai の非公開で対話的なページのアーティファクトとして公開する。公開リンクで共有でき、Team と Enterprise では組織内でも共有できる(公開共有はオーナーが有効にする)。Pro・Max・Team・Enterprise プランと /login の認証が必要 |
必要 |
AskUserQuestion |
要件を集めたり、あいまいさを解いたりするために、選択式の質問をする。既定では、答えるまで質問は開いたまま | 不要 |
Bash |
環境でシェルコマンドを実行する | 必要 |
CronCreate |
現在のセッションの中で、繰り返しか 1 回だけのプロンプトを予約する。タスクはセッション範囲で、期限が切れていなければ --resume や --continue で復元される |
不要 |
CronDelete |
予約したタスクを ID で取り消す | 不要 |
CronList |
セッションの予約済みのタスクをすべて一覧にする | 不要 |
Edit |
特定のファイルをピンポイントで編集する | 必要 |
EndConversation |
悪意のある入力が続く稀な場合や、ツールの実演を頼まれたときに、セッションを終える。v2.1.213 以降が必要 | 不要 |
EnterPlanMode |
コーディングの前に方針を設計する、プランモードに切り替える | 不要 |
EnterWorktree |
隔離された git worktree を作って入る。path を渡すと、新しく作らず既存の worktree に入る。最初に入るとき、対象は現在のリポジトリの worktree か、複数リポジトリのワークスペースならその中に入れ子になったリポジトリのもの(v2.1.203 より前は、入れ子のリポジトリの worktree は拒否された)。.claude/worktrees/ の外の path は、セッションの作業ディレクトリとその場所への書き込みアクセスを動かすので、入る前に承認を求める。新しい worktree の作成と .claude/worktrees/ の下のパスは確認しない(v2.1.206 より前は、.claude/worktrees/ の外のパスも確認なしで入った)。worktree のセッションの中や、isolation: worktree のように作業ディレクトリを固定したサブエージェントからは、path の形だけが使え、対象はセッションのリポジトリの .claude/worktrees/ の下でなければならない |
必要 |
ExitPlanMode |
承認のためにプランを提示し、プランモードを終える | 必要 |
ExitWorktree |
worktree のセッションを終え、元のディレクトリに戻る。isolation: worktree のように、すでに自分の作業ディレクトリで動いているサブエージェントには使えない |
不要 |
Glob |
パターン一致でファイルを探す。macOS・Linux・WSL では既定でない | 不要 |
Grep |
ファイルの内容からパターンを探す。macOS・Linux・WSL では既定でない | 不要 |
ListAgents |
SendMessage でメッセージを送れるエージェントを一覧にする:セッションのサブエージェント・エージェントチームのチームメイト・ほかのローカルの Claude Code セッション・Remote Control に接続している間は、クラウドセッションとほかのマシンの Remote Control のセッション。/list-agents コマンドを支える。v2.1.224 以降が必要で、セッション間メッセージが有効なセッションにだけ出る。チームメイトの行と、このセッション自身の名前を示す最初の行は v2.1.239 以降が必要 |
不要 |
ListMcpResourcesTool |
接続した MCP サーバーが公開するリソースを一覧にする(ホストアプリが描画するページの MCP Apps の UI リソースは除く) | 不要 |
LSP |
言語サーバーによるコードインテリジェンス:定義へのジャンプ・参照の検索・型エラーと警告の報告 | 不要 |
Monitor |
コマンドをバックグラウンドで動かし、出力の各行を Claude に返すので、会話の途中でログの項目・ファイルの変更・ポーリングした状態に反応できる。WebSocket を開き、届く各メッセージをイベントとして扱うこともできる | 必要 |
NotebookEdit |
Jupyter ノートブックのセルを変更する | 必要 |
PowerShell |
PowerShell のコマンドをネイティブに実行する | 必要 |
PushNotification |
デスクトップ通知を送り、Remote Control が接続していればスマートフォンにもプッシュする。長いタスクや予約したタスクが、席を外していても届く。プッシュの配信は Anthropic がホストするインフラを通るので、Amazon Bedrock・Claude Platform on AWS・Google Cloud の Agent Platform・Microsoft Foundry からは使えない | 不要 |
Read |
ファイルの内容を読む | 不要 |
ReadMcpResourceTool |
URI で特定の MCP リソースを読む | 不要 |
RemoteTrigger |
claude.ai のルーティンを作成・更新・実行・一覧する。/schedule コマンドを支える。ルーティンは claude.ai にあり、Pro・Max・Team・Enterprise プランが必要なので、Amazon Bedrock・Claude Platform on AWS・Google Cloud の Agent Platform・Microsoft Foundry からは使えない |
不要 |
ReportFindings |
コードレビューの指摘を、指摘ごとのファイル・要約・失敗の筋書きを持つ構造化した一覧として報告し、Claude Code がテキストで出す代わりに描画できるようにする。有効なコードレビューの指示が求めたとき、Claude が呼ぶ。v2.1.196 以降が必要。v2.1.199 から、指摘は correctness や test-coverage のようなカテゴリのスラッグを任意で持て、描画された一覧のファイル位置の横に出る |
不要 |
ScheduleWakeup |
自己ペースの /loop の次の反復を予約し直す。Claude が各反復の終わりに、次をいつ動かすか(1 分から 1 時間先)を選ぶために呼び、自分で直接呼ぶものではない。ループを終えるときは stop: true で呼び、保留中の起床を取り消す。stop フィールドは v2.1.202 以降が必要。保留中の起床は Stop フックの入力の session_crons に出る |
不要 |
SendFeedback |
Claude Code についてのフィードバックの報告(製品の問題かセッションでの Claude 自身の振る舞い)を下書きし、自分のマシンのキューに入れる。下書きを送ると選ぶまで、Claude Code は何も送らない。v2.1.238 以降が必要 | 不要 |
SendMessage |
別のエージェントにメッセージを送る:エージェントチームのチームメイト・エージェント ID か名前で再開するサブエージェント・このマシンの内外のほかの Claude Code セッション。ほかのセッションへのメッセージは v2.1.224 以降が必要。Claude は、任意の summary を、通常は 5〜10 語の 1 行のプレビューとして付けられる。通常のテキストメッセージで省かれると、Claude Code はメッセージの最初の行を要約にする。200 文字を超える要約は省略記号で切り詰められる。詳しくはセッション間のメッセージ |
不要 |
SendUserFile |
セッションからファイルを、任意のキャプションつきで自分に送る。生成したレポート・図・スクリーンショット・ビルドの成果物が、記録で触れられるだけでなく、自分のデバイスに届く。v2.1.196 から、任意の display 入力が表示を制御する:render はクライアントでファイルを埋め込みで開き、attach はダウンロードカードだけを出し、未設定ならクライアントがファイルの種類で決める。Remote Control のクライアントが接続しているとき、またはクラウドセッションで使える。配信は Anthropic がホストするインフラを通るので、Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry では使えない |
不要 |
ShareOnboardingGuide |
ONBOARDING.md をアップロードし、チームメイトが Claude Code で開ける共有リンクを返す。ガイドを書いた後に /team-onboarding から呼ばれる。Pro・Max・Team・Enterprise の claude.ai 購読者が使える |
必要 |
Skill |
メイン会話の中でスキルを実行する | 必要 |
SubagentHandback |
サブエージェントの最終報告を、そのサブエージェントの結果を受け取る会話に届ける。auto モードで、Agent ツールがローカルで動かすサブエージェント(fork を除く)にだけ提供され、端末の CLI・IDE 拡張・クラウドセッション・Agent SDK で使える。報告が届く前に分類器が審査する。v2.1.271 以降が必要 | 不要 |
TaskCreate |
タスクリストに新しいタスクを作る。「タスクツールが使えるか」の節のモデルでだけ既定で提供され、ほかのモデルでは自分で有効にしたとき提供される | 不要 |
TaskGet |
特定のタスクの全詳細を取得する。提供のされ方は TaskCreate と同じ |
不要 |
TaskList |
すべてのタスクを、現在の状態つきで一覧にする。提供のされ方は TaskCreate と同じ |
不要 |
TaskOutput |
バックグラウンドのタスクの出力を取得する。タスクの出力ファイルのパスへの Read に置き換えられ、非推奨。ID に一致するタスクがないとき、エラーは動いているバックグラウンドのエージェントを ID と説明で一覧にする(v2.1.203 より前は、エラーは見つからない ID だけを示した) |
不要 |
TaskStop |
動いているバックグラウンドのタスクを ID で止める。エージェントチームのチームメイトや名前つきのバックグラウンドのエージェントも、エージェント ID か名前で受け付ける(v2.1.198 より前は、バックグラウンドのタスクの ID だけ)。ID に一致するタスクがないとき、エラーは、別のエージェントが生成したものを含め、動いているバックグラウンドのエージェントを ID と説明で一覧にする(v2.1.203 より前は、動いているチームメイトと名前つきのエージェントは出たが、別のエージェントが生成したバックグラウンドのエージェントは出ず、メイン会話から識別も停止もできなかった) | 不要 |
TaskUpdate |
タスクの状態・依存関係・詳細を更新するか、タスクを削除する。提供のされ方は TaskCreate と同じ |
不要 |
TodoWrite |
セッションのタスクのチェックリストを管理する。TaskCreate・TaskGet・TaskList・TaskUpdate に置き換えられ、既定では無効。タスク追跡のツールがあるセッションで再び有効にするには CLAUDE_CODE_ENABLE_TASKS=0 を設定する |
不要 |
ToolSearch |
tool search が有効なとき、遅延されたツールを探して読み込む | 不要 |
WaitForMcpServers |
バックグラウンドでまだ接続中の MCP サーバーを待つ。セッションを再起動せずに、リクエストがそのツールを使えるようにする。必要なサーバーがまだ接続していないとき、Claude が呼ぶ。tool search が有効なときは ToolSearch が待ちを扱うので、tool search が無効なときだけ出る |
不要 |
WebFetch |
指定した URL の内容を取得する | 必要 |
WebSearch |
Web 検索を実行する | 必要 |
Workflow |
ワークフローを実行する:多数のサブエージェントをバックグラウンドで動かし、1 つの統合した結果を返すスクリプト | 必要 |
Write |
ファイルを作成するか、上書きする | 必要 |
- 使えるツールの実際の組は、プロバイダー・プラットフォーム・設定で決まる。動いているセッションで何が読み込まれたかは、Claude に「What tools do you have access to?」と直接聞くと、会話で要約を返す。MCP ツールの正確な名前は
/mcpで見る - advisor は、Claude Code が実装するツールではなく、API が動かすサーバーツール。権限ルールやフックのマッチャーで参照できる名前はない
権限ルールとフックでツールを指定する#
ツール名を直接書くのは、権限やほかの設定を定義するときです。
- 設定の
permissions.allowとpermissions.deny、/permissionsの画面 - CLI フラグの
--allowedToolsと--disallowedTools(CLI のコマンドとフラグ) - Agent SDK の
allowedToolsとdisallowedToolsのオプション - スキルの
allowed-toolsの frontmatter(スキル) - フックの
ifの条件(フックの使い方)
どれも同じルールの形 ToolName(specifier) を受け付けます。specifier はツールで決まり、いくつかのツールは形を共有します。
| ルールの形 | 当てはまるツール | 照合の方法 |
|---|---|---|
Bash(npm run *) |
Bash・Monitor | コマンドのパターン照合 |
PowerShell(Get-ChildItem *) |
PowerShell | コマンドのパターン照合 |
Read(~/secrets/**) |
Read・Grep・Glob・LSP | パスのパターン照合 |
Edit(/src/**) |
Edit・Write・NotebookEdit | パスのパターン照合 |
Skill(deploy *) |
Skill | スキル名の照合 |
Agent(Explore) |
Agent | サブエージェントの種類の照合 |
WebFetch(domain:example.com) |
WebFetch | ドメインの照合 |
WebSearch |
WebSearch | specifier なし。ツール全体を許可か拒否する |
- 表にないツール(
ExitPlanMode・ShareOnboardingGuideなど)は、specifier なしのツール名だけを受け付ける Edit(...)の許可ルールは同じパスの読み取りも許可するので、対応するRead(...)のルールは要らない。Read(...)の拒否ルールは、同じパスの Edit と Write も、そこに新しいファイルを作ることも含めてブロックする(どちらも Claude が読み戻せる内容を変えるため)。Readの拒否の検査は、編集では v2.1.208 以降、書き込みでは v2.1.228 以降が必要- フックの
matcherフィールドは、括弧つきのルールの形ではなく、ツール名だけを使う。照合の規則と、各ツールがフックのtool_inputに渡すフィールド名はフックのリファレンスにある - 権限ルールの詳しい書き方は権限ルールを参照
Agent ツール#
Agent ツールは、別のコンテキストウィンドウでサブエージェントを起動します。サブエージェントは自律的にタスクを進め、結果を親の会話に返します。親が見るのは最終の結果だけで、サブエージェントの途中のツール呼び出しや出力は見えません。エージェントチームが有効なら、name を付けた呼び出しがチームメイトを起動することもあり、その場合は結果を返す代わりにチームのメッセージで報告します。
- サブエージェントが動かすターン数を制限するには、サブエージェントの定義に
maxTurnsを設定する。上限に達すると、Claude Code は返した結果を部分的な出力と印を付け、Claude はサブエージェントを再開して続けられる - 同じ Agent ツールは、fork モードがオンの場所で fork したサブエージェントも起動する。fork は、新しく始めずに親の会話の全体を引き継ぎ、フォアグラウンドに留まる場合を除いてバックグラウンドで動き、権限の確認は引き続き自分の端末に出る。以降は fork でないサブエージェントの話
fork でないサブエージェントが使えるツールは、サブエージェントの定義の tools と disallowedTools のフィールドで決まります。
| 設定 | サブエージェントが得るツール |
|---|---|
| どちらも未設定 | サブエージェントが使えるツールのすべてを引き継ぐ |
tools だけ |
挙げたツールだけ |
disallowedTools だけ |
親のすべてのツールから、挙げたものを除いたもの |
| 両方 | disallowedTools が優先される。両方に挙げたツールは取り除かれる |
- どの場合も、解決された組は、サブエージェントが使えるツールに限られる:サブエージェントが使えないツールは、
toolsに挙げても与えられない。SubagentHandbackの条件が当てはまる場合、Claude Code は、toolsに入れていなくても、disallowedToolsに挙げていても、そのツールをサブエージェントに与える - サブエージェントの
toolsの項目がどれも使えるツールに一致しないとき、Agent ツールは通常、サブエージェントを起動せず、項目を名指しするエラーを返す。メッセージと各項目の直し方はエラー一覧を参照 - サブエージェントの起動自体は権限を求めない。Claude Code は、サブエージェント自身のツール呼び出しを、動いている間に権限ルールに照らして検査する
- 権限の確認がどこに出るかは、フォアグラウンドかバックグラウンドかで決まる。Claude Code は、フォアグラウンドで動く場合を除き、サブエージェントを既定でバックグラウンドで動かす。フォアグラウンドのサブエージェントは、メイン会話と同じ権限の確認を、ツール呼び出しの時点で出す。バックグラウンドのサブエージェントは、v2.1.186 から、権限の確認をメインセッションに出す。確認はどのサブエージェントが求めているかを示し、Esc を押すと、サブエージェントを止めずにそのツール呼び出しを 1 回拒否する。v2.1.186 より前は、バックグラウンドのサブエージェントは、確認になるはずのツール呼び出しを自動で拒否し、そのツールなしで続けた
- サブエージェントが届く範囲を最初から絞るには、
toolsを狭める(Bash を一覧に入れないなど)か、設定に拒否ルールを置く
AskUserQuestion ツール#
Claude は、判断や確認が要るとき、AskUserQuestion で選択式の質問をします。選択肢を選ぶか、Other の行かメモの欄に自分のテキストを打って答えます。自分のテキストで答えると、Claude Code は中立的な言い回しで答えを中継するので、Claude は、待つよう頼んだり先に説明を求めたりした内容も含め、書いたとおりに従います。
質問は、答えるまで開いたままです。答えなかった質問がいずれ閉じ、Claude があなたなしで続けるようにしたいときは、ユーザーの settings.json か /config の「Question auto-continue timeout」の行で、askUserQuestionTimeout を 60s・5m・10m のどれかにします。
- 質問が入力なしでその時間置かれると、ダイアログが自分で閉じる:すでに選んだ選択肢を送信し、あなたが席を外しているかもしれないと Claude に伝えるので、Claude は自分の判断で進み、後でまた聞くことがある。最後の 20 秒はカウントダウンが出る。任意のキーを押すとタイマーが再開する。端末がウィンドウにフォーカスがあると報告している間は、タイマーは進まない
- タイマーは、バックグラウンドセッション・スクリーンリーダーモードで Claude が出す質問と、セッションがリモートコントロールにつながっている間の質問では始まらない。それらの質問は答えるまで待つ。タイムアウトが効くのは、
AskUserQuestionの選択式の質問だけ。プランの承認を含む権限の確認は、アイドルで自動的に決まることはない
Bash ツール#
Bash ツールは、各コマンドを別のプロセスで動かします。
コマンドをまたいで残るもの#
- Claude がメインセッションで
cdを実行すると、新しい作業ディレクトリは、プロジェクトのディレクトリか、--add-dir・/add-dir・設定のadditionalDirectoriesで足した追加の作業ディレクトリの中に収まる限り、以降の Bash コマンドに引き継がれる。以降のメッセージへの応答で Claude が動かすコマンドも含む。サブエージェントのセッションは、作業ディレクトリの変更を引き継がない。cdがそれらのディレクトリの外に着くと、Claude Code はプロジェクトのディレクトリへ戻し、ツールの結果にShell cwd was reset to <dir>を足す。この引き継ぎをやめて、すべての Bash コマンドがプロジェクトのディレクトリで始まるようにするには、CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 - 環境変数は残らない。あるコマンドの
exportは次のコマンドでは使えない - シェルの起動ファイルで定義したエイリアスとシェル関数は使える。セッションの始めに、Claude Code はシェルに応じて
~/.zshrc・~/.bashrc・~/.profileを読み込み、できたエイリアス・関数・シェルオプションを取り込み、すべての Bash コマンドに適用する
Claude Code を起動する前に、virtualenv や conda の環境を有効にします。環境変数を Bash コマンドをまたいで残すには、Claude Code を起動する前に CLAUDE_ENV_FILE をシェルスクリプトに設定するか、SessionStart フックで動的に埋めます(フックのリファレンス)。
タイムアウトと出力の上限#
各コマンドはタイムアウトの下で動き、Claude が管理します。コマンドに既定より長く要るとき、Claude がその呼び出しに timeout パラメーターを渡します。コマンドごとのタイムアウトを自分で設定することはありません。フォアグラウンドで動くコマンドで Claude が得るものは、2 つの環境変数で制御します。
| 環境変数 | 内容 |
|---|---|
BASH_DEFAULT_TIMEOUT_MS |
Claude がタイムアウトを渡さないときの既定。初期値は 2 分 |
BASH_MAX_TIMEOUT_MS |
Claude が要求するものを抑える上限。実効の上限は 2 つの大きいほうで、初期値は 10 分 |
- バックグラウンドコマンドの時間制限があるセッションでは、Claude がバックグラウンドで始めるコマンドの
timeoutは、そこでコマンドが動いてよい時間を決め、既定と最大はその制限のものになる(後述の「バックグラウンドコマンドの時間制限」)。PowerShell ツールも同じタイムアウトの規則に従い、同じ 2 つの変数を読む
Claude Code は、コマンドの出力を、動いている間、作業ファイルへストリームします。出力が 5 GB を超えるコマンドは止められます。コマンドが終わると、Claude Code は、後述の読み戻しの窓まで、そのファイルから出力を読み戻します。出力のうちどれだけが Claude にインラインで届くかは、Claude Code が結果を失敗として扱うかで決まります。
| 結果 | Claude が得るもの |
|---|---|
| 正常 | 既定ではおよそ 30,000 文字までインライン。それを超えると、セッションのディレクトリに保存したファイルのパス(64 MiB を超えると切り詰められる)と、最初の 2,000 文字までのプレビュー。残りが要るとき、Claude がファイルを読むか検索する |
| 失敗 | およそ 10,000 文字までインライン。それを超えると、読み戻しの窓から切り出した、その大きさの先頭と末尾の抜粋で、ファイルのパスはない |
- コマンドの終了コード 1 が正常な結果として数えられるのは、Claude Code がそのコマンドの終了コード 1 を穏当な結果と認識するときだけ:
grep・rg・egrep・fgrep・find・diff・test・[、それにgit diffとgit grep。ほかのコマンドの終了コード 1 は、穏当な情報としての結果(pgrepとjq -eの一致なし・cmpのファイルの違い)でも失敗として数えられる BASH_MAX_OUTPUT_LENGTHは、コマンドの結果に作業ファイルから読み戻す出力の文字数を決める:既定は 30,000 で、上限は 150,000。コマンドの出力が日常的にその窓を超えるとき(詳細なビルドやテストスイートの完全なログ)に上げる。上げるのは読み戻しの窓で、失敗するコマンドの抜粋を切り出す窓でもある。インラインの上限は上がらず、インラインの上限を超える正常な結果は、この変数にかかわらずファイルのパスとプレビューで届く- 正常な結果のうち Claude がインラインで受け取る量を変えるには、代わりに
bashOutputMaxChars設定を使う(128,000 文字まで)。インラインの上限と読み戻しの窓を一緒に決め、Claude Code はBASH_MAX_OUTPUT_LENGTHを無視する。v2.1.261 以降が必要
バックグラウンドコマンド#
開発サーバーや watch ビルドのような長く動くプロセスでは、Claude が run_in_background: true を設定して、コマンドをバックグラウンドのタスクとして始め、動いている間も作業を続けられます。バックグラウンドのタスクは /tasks で一覧し、止められます。そこで、またはデスクトップアプリのような接続したクライアントから止めると、Claude は待たずに先へ進みます。サブエージェントがコマンドを始めた場合に先へ進むのは、そのサブエージェントです。
- コマンドが止まるとき:フォアグラウンドのサブエージェントが始めたコマンドは、そのサブエージェントの実行が(終えた・失敗した・中断された、のどれでも)終わると止まる。メイン会話かバックグラウンドのサブエージェントが始めたコマンドは、最終の応答の後も、終了する・止められる・時間制限に達するまで動き続ける。
-pの非対話モードでは、バックグラウンドのコマンドは、実行の最終結果の少し後に終わる - 無人で動くセッション(
-pの実行・Agent SDK のアプリ・CI のジョブ・クラウドのセッションなど)では、バックグラウンドの Bash と PowerShell のコマンドに時間制限がある。ターミナル・デスクトップアプリ・VS Code 拡張で自分が作業するローカルのセッションには、バックグラウンドのコマンドの時間制限がない - 時間制限は v2.1.285 以降が必要。v2.1.288 より前は、すべてのセッションに適用された
- 時間制限は、コマンドがバックグラウンドに入った時点から数える。Claude がバックグラウンドで始めるコマンドは 30 分、または
run_in_backgroundと一緒に Claude が渡すtimeout(最大 2 時間)。フォアグラウンドで始めて、タイムアウトなどでバックグラウンドに移ったコマンドは、移った時点から 30 分。バックグラウンドのコマンドが時間制限に達すると、Claude Code はそれを止め、理由を Claude に伝える。作業がまだ必要なら、Claude はもっと長いtimeoutでコマンドを始め直せる。止めた通知はBackground command "<description>" was stopped after reaching its background time limitと出る - 時間制限を上げる 2 つの環境変数は、Bash と PowerShell のコマンドの両方に効く。どちらもミリ秒で、制限を短くすることはできない(低い値は、30 分の既定と 2 時間の最大をそのままにする)。
BASH_DEFAULT_TIMEOUT_MSを1800000より大きくすると、30 分の既定がその値に置き換わる(timeoutなしで Claude が始めるコマンドにも、移ったコマンドにも)。BASH_MAX_TIMEOUT_MSを7200000より大きくすると、2 時間の最大がその値に上がる。BASH_DEFAULT_TIMEOUT_MSを7200000より大きくしても、最大は同じように上がる - フォアグラウンドのコマンドが終わらずにタイムアウトに達すると、
sleepで始まるコマンドを除き、Claude Code は止める代わりにバックグラウンドに移す。移したコマンドの時間制限は移した時点から数え、フォアグラウンドのサブエージェントが移したコマンドは、そのサブエージェントの実行が終わると止まる。CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1かベアモードでの実行は、バックグラウンドのタスクの機能の残りと一緒に、自動のバックグラウンド化も無効にするので、タイムアウトに達したコマンドは止まる - バックグラウンドへ移したコマンドの結果は、何が起きたかを示す:タイムアウトが移動の引き金なら、
Command did not complete within its 120s timeout and was moved to the background(秒数は適用されたタイムアウトに合わせる)に、タスク ID と出力を書いているファイルのパスが続く。バックグラウンドへ移したコマンドの中のcd・pushd・popd・chdirは引き継がれず、結果がSession cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands.と示すので、起きなかったディレクトリの変更に Claude が従うことはない
Linux と WSL のメモリ制限#
Linux と WSL では、CLAUDE_CODE_TOOL_MEMORY_LIMIT を 4G のような大きさに設定して、Bash・PowerShell・Monitor のツールのコマンドが使えるメモリに上限を設けられます。暴走したビルドが、セッションの残りが必要とするメモリを奪わないようにするためです。v2.1.233 以降が必要で、v2.1.246 より前は Monitor ツールのコマンドが上限の外で動きました。
- 大きさはバイト数か、
K・M・G・Tの接尾辞つきで書く。上限をオフにするには0・off・false・no・none。4e9のように大きさとして読めない値は無視される - Claude Code は、セッションの Bash・PowerShell・Monitor のコマンドをすべて 1 つの上限に数え、コマンドごとには数えない
- 上限はメモリ cgroup で適用される。cgroup を用意できないとき、コマンドは上限なしで動き、
claude --debugのデバッグログが理由を示す - Claude Code が始める最初のプロセスが上限をオンにした後、またはオフの値や cgroup の用意の失敗のためオフにした後は、Claude Code はその結果を、再起動まで保つ。変えた値・外した値・直した用意を適用するには、
claudeを起動し直す - コマンドが上限に収まらないと、カーネルがコマンドを殺し、結果には上限を示すものは何も出ない
- Claude Code が始めるほかの種類のプロセスも、同じ上限に数えられる。上限から外す種類を、カンマ区切りの一覧で
CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDEに設定する。一覧にない種類すべてに上限が適用される。noneならすべての種類に上限を掛け、all-newなら Bash・PowerShell・Monitor のツールのコマンドだけに上限を掛ける。v2.1.246 以降が必要
| 種類 | 内容 |
|---|---|
mcp |
ローカルの MCP サーバー |
lsp |
言語サーバー |
hooks |
フックのコマンド |
plugin |
プラグインが動かすコマンド |
helper |
git のような、Claude Code 自身の補助コマンド |
agent |
エージェントチームのチームメイトのような、子の Claude Code プロセス |
- 知らない名前は無視される。変数が未設定のときは、Anthropic がサーバーから配る構成から、上限を掛けるほかの種類の組を取り、その組は時間とともに変わりうるので、変わらない組が要るなら変数を設定する
- 権限判断のフック:すべての種類に上限を掛けても、操作の結果をブロックしたり変えたりできるフックと、そのようなフックが呼ぶ MCP サーバーは、上限から外される。カーネルが権限判断のフックを殺しても、そのフックがブロックしていた操作が許されることはない
Edit ツール#
Edit ツールは、正確な文字列の置換を行います。old_string と new_string を受け取り、前者を後者に置き換えます。正規表現も曖昧な一致も使いません。
編集が適用されるには、3 つの検査を通る必要があります。その前に、Read の拒否ルールに一致するパスは、そこに新しいファイルを作ることも含めて拒否されます(この拒否は v2.1.208 以降が必要)。
-
編集の前に読む:Claude が現在の会話で、編集する前にそのファイルを読んでいる。
PARTIAL viewの通知で途中まで読んだものは数えない。Claude Opus 4.6・Claude Haiku 4.5・それより古いモデルは常に読むことを要求する。新しいモデルは、読んでも権限の確認が要らず Read ツールが使えるときは、読んでいないファイルを編集できる -
一致:
old_stringが、書かれたとおりにファイルに出てくる。空白やインデントの 1 文字の違いで外れる -
一意:
old_stringがちょうど 1 回だけ出てくる。複数あるときは、Claude が 1 か所を絞れるだけの周りの文脈を足した長い文字列を渡すか、replace_all: trueですべてを置き換える -
Claude が最後に読んだ後にディスクで変わったファイルでも、
old_stringが現在の内容に正確かつ曖昧なく一致し、Claude Code が確認なしでファイルを読めるなら、編集できる。現在の内容に照らして一致させるので安全で、結果はファイルがほかの変更を持っていると伝えるので、周りの内容に依存する編集の前に Claude が読み直す。それ以外の場合(古いold_string、replace_allなしで複数に一致するもの)は、編集する前に Claude がファイルをもう一度読む。読んでいないファイルと変わったファイルの緩い扱いは v2.1.208 以降が必要で、それより前は、会話で読んでいないファイルや、読んだ後にディスクで変わったファイルへの編集を拒否した -
単一のファイルに対する
cat・nl・bat・batcat・head・tail・sed -n 'X,Yp'・grep・egrep・fgrep・rgのコマンドで、パイプやリダイレクトがないものでファイルを見ても、編集前の読み取りの要件を満たす。パイプした出力やほかの Bash コマンドは数えない。Bash でファイルを見ることが影響するのは編集の可否だけで、権限には影響しない。ReadとEditの拒否ルールが覆う Bash コマンドは権限ルールを参照
EndConversation ツール#
EndConversation ツールは、現在のセッションを終えます。Claude が使うのは、次の 2 つの場面だけです。
- 会話を向け直す試みが失敗し、前のメッセージで明確に警告した後の、続く悪意のある入力への最後の手段として
- ツールの実演を見たいと明示的に頼み、セッションを終えてよいと確認したとき
一般的な不満・悪態・タスクがうまくいかないことは当たらず、有害な内容の要求も当たりません(それは、セッションを終える代わりに Claude が断る)。Claude Code は、会話の稀な一部を終えられる claude.ai と同じ考え方に従います。
- 対話セッションを Claude が終えると、セッションがロックされる。新しいプロンプトとほとんどのコマンドは
Claude ended this conversation. Start a new session (or /clear) to continue.を返し、動くのは/clear・/resume・/help・/exit・/feedbackだけ。Claude Code は終了をセッションの記録に残すので、終えたセッションを再開するとロックが復元される。セッションの履歴は消えない -pの非対話モードで終えたセッションを再開すると、エラーになって終了コード 1 で終わるので、スクリプトが終えた実行を成功と読むことはない- このツールは権限を求めず、PreToolUse フックも動かない。ほかのツールが残っている間は、ブロックもできない:
EndConversationを名指しする拒否と確認のルールは効かず、--disallowedToolsも--toolsの一覧も取り除けない。この免除は意図的で、このツールは会話を終える以外のことをせず、ファイルやデータを読み書きしないし、この種の安全装置は、それが適用されるセッションが外せないときだけ成り立つ。拒否ルールがほかのすべてのツールを外し、EndConversationにも一致するとき("*"など)は、Claude Code は、それだけをツールとして残す代わりに、それも外す。ただし許可ルールがEndConversationを明示的に名指ししている場合を除く - サブエージェントはこのツールを得ない。メイン会話のツール一覧を共有するバックグラウンドのタスクには見えるが、そこで呼んでも何も終わらない
ツールが現れるのは、次のすべてが当てはまるときだけです。
| 条件 | 内容 |
|---|---|
| バージョン | Claude Code v2.1.213 以降 |
| モデル | セッションのモデルが Claude Opus 4.8・Claude Sonnet 5・Claude Fable 5、またはそれらの系統の後のバージョン |
| 画面 | 対話の端末セッション(IDE の統合ターミナルでの claude セッションを含む。JetBrains プラグインはこの形で動かす)。ほかの画面には含まれない:非対話の -p の実行・Agent SDK の TypeScript と Python のパッケージのセッション・独自の CLI を束ねる VS Code 拡張のパネル・GitHub Actions・クラウドセッション |
| 起動のモード | --bare のセッションではない(ベアモードはシェルとファイルのツールだけを読み込むので、このツールは登録されない) |
| プロバイダー | Amazon Bedrock・Claude Platform on AWS・Google Cloud の Agent Platform・Microsoft Foundry では使えず、クラウドゲートウェイを通してサインインしたセッションでも使えない |
Glob ツール#
Glob ツールは、名前のパターンでファイルを探します。Windows では既定のツールの組の一部です。macOS・Linux・WSL では、Claude Code は Glob と Grep を既定のツールの組から外し、Claude は代わりに Bash ツールの find と grep で検索します。Claude のシェルでは、その 2 つのコマンドが bfs と ugrep の組み込み版を動かし、検索はフックと権限ルールに Bash の呼び出しとして届きます。
macOS・Linux・WSL で Glob と Grep が戻ってくる場合は次のとおりです。
- セッションを始めるときの
--toolsか--allowedTools(または Agent SDK の同等のオプション)で、GlobかGrepを名指しする。--toolsでは挙げたものが使え、--allowedToolsでどちらかを名指しすると両方が戻る。設定ファイルの許可ルールにはこの効果はない - 権限の拒否ルール・
--disallowedToolsフラグ・--restrictedが、セッションからBashを外す - サブエージェントが
toolsフィールドにGlobかGrepを挙げ、Bashを入れない。挙げたツールは、そのサブエージェントだけ、または--agentかagent設定でメインセッションのエージェントとして動くときはセッション全体で戻る
Glob は、再帰的なディレクトリの一致に ** を使う標準のグロブ構文に対応します。
| パターン | 一致するもの |
|---|---|
**/*.js |
どの深さの .js ファイルも |
src/**/*.ts |
src/ の下の .ts ファイルすべて |
*.{json,yaml} |
現在のディレクトリの .json と .yaml のファイル |
- 結果は更新時刻順に並び、100 ファイルで切られる。上限に達すると、Claude は結果に切り詰めのフラグを見て、パターンを絞れる
- Glob は既定では
.gitignoreを尊重せず、gitignore されたファイルも追跡されたファイルと一緒に見つける。.gitignoreの対象を飛ばす Grep ツールとは違う。Glob に.gitignoreを尊重させるには、Claude Code を起動する前にCLAUDE_CODE_GLOB_NO_IGNORE=falseを設定する - Claude Code は、検索ディレクトリがあるかを確かめる前に、Glob の呼び出しの権限を決める。作業ディレクトリの外の存在しない
pathにも読み取り権限の検査を走らせるので、パスの権限の確認が出ても、そのパスがあるとは限らない - ヌルバイトを含む
patternかpathの値は、それを取り除くよう Claude に求めるエラーを返す
Grep ツール#
Grep ツールは、ファイルの内容からパターンを探します。Glob が名前でファイルを探すのに対し、Grep はファイルの中の行を探します。macOS・Linux・WSL では、Grep は Glob と同じ条件で既定では使えません。両方が使える場合は Glob の節を参照してください。
Grep は ripgrep の上に作られていて、POSIX の grep ではなく、ripgrep の正規表現の構文を使います。正規表現のメタ文字を含むパターンはエスケープが要ります(Go のコードの interface{} を探すには interface\{\})。
- ripgrep が拒否するパターン・グロブ・ファイルの種類は、ripgrep の診断を含むエラーを返すので、Claude は入力を直してもう一度探せる。v2.1.208 より前は、拒否された入力を、探した文字列が対象のファイルにあっても
No files foundと報告した
出力のモードは 3 つで、返るものを決めます。
| モード | 内容 |
|---|---|
files_with_matches |
ファイルのパスだけで、行の内容はない。既定 |
content |
一致した行を、ファイルと行番号つきで。ツールの offset パラメーターが、一致のあるパターンの最後の一致より先を指すと、Grep は No entries at this offset を返すので、Claude はパターンが一致しないと結論づけず、offset を広げるかリセットする |
count |
ファイルごとの一致数と、一致したすべてのファイルの合計。合計は、ツールの head_limit か offset のパラメーターが一覧のファイルごとの項目を切り詰めても、すべての一致を数える(v2.1.208 より前は、合計は一覧の項目だけを足した) |
- Claude は、
**/*.tsxのようなglobパラメーターでファイルごとに、pyやrustのようなtypeパラメーターで言語ごとに結果を絞れる。既定では、パターンは 1 行の中で一致する。multiline: trueで行の境界をまたいで一致させられる - Grep は
.gitignoreを尊重するので、gitignore されたファイルは飛ばされる。gitignore されたファイルを探すには、Claude がそのパスを直接渡す - Claude Code は、検索の
pathがあるかを確かめる前に、Grep の呼び出しの権限を決める。作業ディレクトリの外の存在しないpathにも読み取り権限の検査を走らせるので、パスの権限の確認が出ても、そのパスがあるとは限らない
LSP ツール#
LSP ツールは、動いている言語サーバーによるコードインテリジェンスを Claude に与えます。ファイルを編集するたびに、型エラーと警告を自動で報告するので、別のビルドの手順なしに Claude が問題を直せます。コードの探索に Claude が直接呼ぶこともできます。
- シンボルの定義へジャンプする
- シンボルへのすべての参照を探す
- ある位置の型の情報を得る
- ファイルのシンボルを一覧にする
- ワークスペース全体でシンボルを名前で探す
- インターフェースの実装を探す
- 呼び出しの階層をたどる
Claude Code は、自分の言語向けのコードインテリジェンスのプラグインをインストールするまで、このツールを無効にしておきます。クラウドセッションでは、Claude Code はプラグインの言語サーバーを起動しないので、LSP ツールは無効のままです。言語サーバーの設定は Claude Code がプラグインから取り、サーバーのバイナリは自分でインストールします。起動できない言語サーバーのファイルへの LSP の呼び出しは、エラーの結果を返します。
Monitor ツール#
Monitor ツールは、会話を止めずに、何かをバックグラウンドで見張り、変化したときに反応させます。次のようなことを Claude に頼めます。
- ログファイルを tail して、エラーが出たら知らせる
- PR や CI のジョブをポーリングして、状態が変わったら報告する
- ディレクトリのファイルの変更を見張る
- 指した長く動くスクリプトの出力を追う
- WebSocket のフィードにつなぎ、メッセージが届くたびに報告する
多くの見張りでは、Claude が小さなスクリプトを書いてバックグラウンドで動かし、届く出力の各行を受け取ります。すでにイベントを押し出すサーバーなら、スクリプトを動かす代わりに WebSocket を開けます。同じセッションで作業を続け、イベントが届くと Claude が割り込みます。
- Claude が始める見張りにはすべて期限がある。既定は 5 分、最大 30 分で、
-pで 1 つのプロンプトを渡した非対話の実行では最大 10 分。期限で見張りは終わり、Claude には通知が 1 回届くので、まだ必要なら見張りを始め直せる - モニターを止めるには、Claude に取り消すよう頼むか、セッションを終える。モニターを始めたサブエージェントを止めると(
/tasksから)、そのモニターも一緒に止まる - Monitor がコマンドを動かすとき、Bash と同じ権限ルールを使うので、Bash に設定した
allowとdenyのパターンがここにも適用される。auto モードの間は、Claude Code はMonitor自身を名指しする許可ルールを、外すほかの広い許可ルールと一緒に脇へ置くので、分類器が Monitor のコマンドを Bash のコマンドと同じように審査する - WebSocket のソースには自分の承認の確認があり、auto モードでは分類器がそれも決める
- Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry では使えない。
DISABLE_TELEMETRYかCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICを設定しているときも使えない。Windows では、Git Bash をインストールしているときだけ使える - プラグインは、Claude に頼まず、プラグインが有効なときに自動で始まるモニターを宣言できる。詳しくはプラグインのリファレンス
WebSocket のソース#
サーバーがすでに WebSocket でイベントを押し出しているなら、ポーリングのスクリプトを書く代わりに、Claude が直接つなげます。ソケットの動きの種類ごとに、イベントになるか、見張りが終わります。
| 動き | 扱い |
|---|---|
| テキストメッセージ | 1 つにつき 1 つのイベント。メッセージが複数行でも同じ |
| バイナリメッセージ | 渡されない。代わりに [binary frame, 512 bytes] のようなプレースホルダーの行が届く |
| 1 MiB を超えるメッセージ | 見張りが終わる。絞り込んだフィードがあれば、それを購読する |
| ソケットが閉じる | 見張りが終わり、Claude に終了コードが届く |
WebSocket の見張りは、command の代わりに ws の入力を取り、1 回の Monitor の呼び出しで両方は組み合わせられません。ws の入力には 2 つのフィールドがあります。
| フィールド | 必須 | 説明 |
|---|---|---|
url |
はい | 接続先のエンドポイント。埋め込みの認証情報も空白もない ws:// か wss:// の URL で、ASCII 文字だけ |
protocols |
いいえ | ハンドシェイクで提案する WebSocket のサブプロトコル名。各項目は有効なサブプロトコルのトークンで、重複は入れられない |
timeout_msの期限は WebSocket の見張りにも適用される。期限で見張りが終わり、TaskStopで早く取り消せる- WebSocket を開くときは承認を求める。auto モードでは代わりに分類器が決める。確認には、同じホストへの今後の確認を省く選択肢はない
- Claude Code は、プライベート・リンクローカル・クラウドのメタデータのアドレスを指す URL(それに解決されるホスト名を含む)を拒否する。
sandbox.network.deniedDomainsのホストも拒否し、管理設定でallowManagedDomainsOnlyが設定されていると、管理された許可リストの外のホストも拒否する
NotebookEdit ツール#
NotebookEdit は、Jupyter ノートブックを、cell_id で対象のセルを指して、1 セルずつ変更します。Edit が通常のファイルでするような、ノートブック全体にわたる文字列の置換はしません。
| 編集のモード | 内容 |
|---|---|
replace |
セルのソースを上書きする。既定 |
insert |
対象の後ろに新しいセルを足す。cell_id がないと、新しいセルはノートブックの先頭に入る。cell_type を code か markdown に設定する必要がある |
delete |
対象のセルを消す |
権限ルールは Edit(...) のパスの形を使います。Edit(notebooks/**) のようなルールは、そのディレクトリのファイルへの NotebookEdit の呼び出しを覆います。
PowerShell ツール#
PowerShell ツールは、Claude が PowerShell のコマンドをネイティブに実行できるようにします。Windows では、Git Bash を経由する代わりに、コマンドが PowerShell で動きます。このツールが使えるようになる条件は、プラットフォームで違います。
- Git Bash のない Windows:ツールが自動で有効になる
- Git Bash をインストール済みの Windows:claude.ai と Console のアカウントでは既定でオン。Amazon Bedrock・Google Cloud の Agent Platform・Microsoft Foundry のセッションで有効にするには
CLAUDE_CODE_USE_POWERSHELL_TOOL=1、オフにするには0 - Linux・macOS・WSL:オプトイン
PreToolUse フックは、ツールのコマンド文字列を、Bash ツールと同じフィールドで tool_input.command に受け取ります。シェルコマンドを調べるフックでは、Bash|PowerShell に一致させます。Bash だけに一致させるのでは足りない理由はフックのリファレンスにあります。
有効にする#
環境か settings.json で CLAUDE_CODE_USE_POWERSHELL_TOOL=1 を設定します。
{
"env": {
"CLAUDE_CODE_USE_POWERSHELL_TOOL": "1"
}
}
- Windows では、変数を
0にするとツールをオフにする。Linux・macOS・WSL では、ツールは PowerShell 7 以降が要るので、pwshをインストールしてPATHに通す - Windows では、Claude Code は PowerShell 7 以降の
pwsh.exeを自動検出し、PowerShell 5.1 のpowershell.exeにフォールバックする。ツールが有効なとき、Claude は PowerShell を主なシェルとして扱う。Git Bash がインストールされていれば、POSIX スクリプトのために Bash ツールも使える - Claude Code は、プロセス範囲だけで
-ExecutionPolicy Bypassを付けて PowerShell を起動するので、マシンのポリシーを変えずに、既定の Windows のインストールで.ps1スクリプトとモジュールのインポートが動く。プロセス範囲のバイパスは、グループポリシーのMachinePolicyとUserPolicyは上書きしないので、企業のポリシーは引き続き適用される。マシンの実効の実行ポリシーに従うにはCLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1
設定・フック・スキルでのシェルの選択#
PowerShell を使う場所は、追加の 3 つの設定で制御します。
| 設定 | 内容 |
|---|---|
settings.json の "defaultShell": "powershell" |
対話の ! コマンドを PowerShell 経由にする。PowerShell ツールが有効である必要がある |
個別のコマンドフックの "shell": "powershell" |
そのフックを PowerShell で動かす。フックは PowerShell を直接起動するので、CLAUDE_CODE_USE_POWERSHELL_TOOL にかかわらず動く |
スキルの frontmatter の shell: powershell |
!`command` のブロックを PowerShell で動かす。PowerShell ツールが有効である必要がある |
- Bash ツールの節に書いたメインセッションの作業ディレクトリのリセットの動きは、
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR環境変数を含め、PowerShell のコマンドにも適用される - v2.1.196 から、
grep・rg・egrep・fgrep・findstr・git grepの終了コード 1 は一致なしを、git diffの終了コード 1 は差分があることを意味する。どちらも Claude にコマンドの失敗としては報告されない。robocopyでは、終了コード 0〜7 は、コピーしたファイルや余分なファイルの検出のような情報としての結果で、8 以上は失敗として数える
Windows のエンコーディングと終了コード#
Windows での次の PowerShell のエンコーディングと終了コードの動きは、v2.1.214 以降が必要です。
>と>>のリダイレクトが、PowerShell 5.1 で UTF-8 のファイルを書く- ネイティブコマンドの標準入力へパイプしたテキストを、Claude Code が UTF-8 でエンコードする
- Claude Code は、ANSI エスケープシーケンスなしでエラー出力を取る
- 子プロセスが標準入力を待つコマンドは、ハングする代わりにファイルの終端を受け取る
where.exeの終了コード 1 は一致なしを、fc.exeとdiff.exeの終了コード 1 はファイルが違うことを意味するので、コマンドが出力を出すとき、Claude Code はその終了コードをコマンドのエラーではなく有効な否定の答えとして扱う。where.exe /Qや$nullへのリダイレクトのような出力を黙らせた形は、終了コード 1 で失敗として報告される
v2.1.214 より前は、PowerShell 5.1 の > は UTF-16LE のファイルを書き、ASCII 以外のパイプ入力は ? として届き、Python のスクリプトが ASCII 以外の文字を出力するとき UnicodeEncodeError でクラッシュすることがありました。
Bash の拒否ルールは PowerShell ツールもオフにする#
Git Bash をインストールした Windows では、Bash を拒否すると、そのセッションの PowerShell ツールもオフになります。裸の Bash だけでなく、Bash(git push *) のような範囲を絞ったルールにも、設定ファイルのルールにも --disallowedTools にも当てはまります。Bash のルールは PowerShell ツールを制限せず、PowerShell ツールには自分の権限ルールがあるためです。PowerShell を残すと、Claude は Bash で拒否したことをそこで実行できてしまいます。
Bash の拒否ルールと並べて PowerShell ツールをオンのままにするには、次のどちらかをします。
- 環境か設定ファイルの
envブロックにCLAUDE_CODE_USE_POWERSHELL_TOOL=1を設定する(「PowerShell ツールを有効にする」のとおり) - 設定ファイルに、
PowerShell(git push *)の拒否ルールのような、範囲を絞ったPowerShellの権限ルールを足す
どちらもしないと、範囲を絞った Bash の拒否ルールでは Bash ツールが使えるままで、Claude Code は警告なしに PowerShell をオフにします。Bash ツールそのものを外すルールでは、そのセッションで Claude に使えるシェルのツールがなくなります。
プレビューの制限#
PowerShell ツールには、プレビュー中の既知の制限が次のとおりあります。
- PowerShell のプロファイルは読み込まれない
- Windows では、サンドボックスに対応しない
Read ツール#
Read ツールは、ファイルパスを受け取り、行番号つきで内容を返します。Claude は常に絶対パスを渡すよう指示されています。
- 既定では、Read はファイルを先頭から返す。ファイル全体の読み取りがトークンの上限を超えると、Read は最初のページを、Claude がファイルのどれだけを受け取ったかと、
offsetとlimitで続きを読む方法を伝えるPARTIAL viewの通知つきで返す。明示的なoffsetかlimitを渡して、それでもトークンの上限を超える読み取りは、エラーを返す - 明示的な
limitつきの読み取りは、選んだ行がトークンの上限に収まりえない量を超えた時点で止まり、範囲の残りを読み込まずにエラーを返す。エラーは、もっと小さいlimitを使うか、1 行がそれだけ大きいなら、代わりに Grep で特定の内容を探すよう Claude に伝える。v2.1.208 より前は、Claude Code が範囲の全体をメモリに読み込んでから拒否したので、極端に長い 1 行のファイルを読むとメモリが尽きることがあった - 空のファイルを読むと、ファイルはあるが内容が空という通知が返り、最後の行より先の
offsetは、ファイルの行数を示す通知を返す(v2.1.208 より前は、空のファイルを読むと、最後より先という通知が返った)
Read は、プレーンテキスト以外のいくつかのファイルの種類も扱います。
| 種類 | 扱い |
|---|---|
| 画像 | PNG・JPG などの画像の形式は、生のバイトではなく、Claude が見られる視覚的な内容として返る。Claude Code は、モデルの画像の大きさの上限に収まるよう、大きな画像をリサイズして再圧縮してから送るので、大きなスクリーンショットは縮小版が見える。v2.1.196 から、そのリサイズの後でも 500KB を超える画像は、ピクセルの寸法を変えずに、品質を下げた JPEG に再エンコードされる。大きな画像で細かいピクセルの詳細を Claude が見逃すなら、先に関心のある領域を切り抜くよう頼む(Bash で ImageMagick を使うなど) |
短い .pdf は全体を読む。10 ページを超える PDF は、pages パラメーター("1-5" など)で、一度に最大 20 ページの範囲で読む。ページ範囲の読み取りは poppler-utils の pdftoppm でページを描画するので、macOS では brew install poppler、Debian と Ubuntu では apt-get install poppler-utils でインストールする。Windows とほかのプラットフォームでは、pdftoppm を PATH に通す poppler のビルドをインストールする。なければ、ページ範囲の読み取りは pdftoppm is not installed で失敗する |
|
| Jupyter ノートブック | .ipynb は、コード・Markdown・可視化を含め、出力つきですべてのセルを返す。Claude Code は 100 MB を超えるノートブックのファイルの読み取りを拒否し、エラーは、セルの一部のように、ノートブックの一部をシェルコマンドで読む方法を Claude に伝える |
Read が読むのはファイルだけで、ディレクトリではありません。Claude は、ls のようなシェルコマンドでディレクトリの内容を一覧にします。
SendFeedback ツール#
Claude が下書きするフィードバックは、あなたのために Claude が書く、Claude Code についてのフィードバックの報告です。v2.1.238 以降が必要です。Claude Code は、各下書きを自分のマシンの ~/.claude/feedback/drafts/ に保存し、送るまで Anthropic には何も届きません。Claude は、次のようなとき SendFeedback ツールで下書きします。
- ツールやコマンドが失敗し続ける
- 頼まれたことを手伝えない
- あなたが指摘した、または自分で気づいた、自分の間違いがある
- フィードバックを出すよう頼まれた
下書きされたときの見え方#
Claude が下書きをキューに入れると、プロンプトの上に、下書きの題のカードが出ます。1 を押すと下書きをレビューし、2 を 2 回押すとそのまま送り、0 で閉じます。閉じた下書きはキューに残ります。カードを閉じた後、Claude Code は Claude の下書きのフィードバックをオフにするかを聞き、2 回断ると、聞かなくなります。
- 既定では、1 セッションに最大 3 枚のカードが出る(Anthropic はこの上限を、リリースなしでサーバーから調整できる)。上限の後と、
feedbackDraftsをquietにしたときは、プロンプトのフッターにキューの下書きの数だけが出る
下書きをレビューして編集する#
引数なしで /feedback を実行すると、キューが開きます。カードを閉じた下書きや見ていない下書きを含め、すべてのセッションのキューの下書きがすべて並びます。下書きを選ぶとレビュー用に開き、次のことができます。
- 題・領域・詳細を編集する
- 「Send transcript」を
yesかnoにする。Claude が下書きをキューに入れたセッションの記録がまだ使えるときは、yesで始まり、その会話を Anthropic に送る。noは報告だけを送る - 下書きを送る・捨てる・後のためにキューに残す
自分で報告を書くには、w を押すと標準のフィードバックのダイアログが開きます。/feedback の後にテキストを付けたもの、と /bug は、そのダイアログを直接開きます。
下書きを送る#
下書きを送ると、Claude Code は /feedback の報告と同じ方法で、同じ保持の扱いで提出し、下書きを自分のマシンから消します。カードから送ると ✓ Sent が出て、キューから送ると受領 ID つきで閉じます。報告が持つものは次のとおりです。
- 題・領域・詳細
- Claude Code のバージョン・OS・モデルのような環境の情報
- 直近の API リクエストの ID
- レビュー画面で「Send transcript」を
yesのままにしたときの会話の記録。カードから送ると、記録は含まれない
Claude Code は、記録を見つけるために、作業ディレクトリをローカルの下書きに保つが、そのディレクトリは送らない。ゼロデータ保持の組織では、/feedback と同様に、ツールを外す。そのような組織のセッションがそれでもツールを出すなら、下書きは自分のマシンに残り、送信は Feedback collection is not available for organizations with custom data retention policies. で失敗する。
下書きを捨てる・残す#
下書きを捨てると、Claude Code はそれを自分のマシンから消します。キューに残した下書きは、30 日、または cleanupPeriodDays がそれより短ければその期間の後に期限切れになります。キューはすべてのセッションをまたいで 10 件の下書きを持ち、Claude が 11 件目を入れると、Claude Code が一番古いものを消します。セッションの下書きがキューに残ったまま /exit を実行すると、終了する前に、レビューするか捨てるかを聞かれます。
オフにする#
/config で「Claude-drafted feedback」を off にして(feedbackDrafts 設定が書かれる)、または 1 セッションだけ CLAUDE_CODE_SEND_FEEDBACK=0 を設定します。どちらでも、Claude は下書きをキューに入れられません。カードなしで下書きを続けるには、代わりに feedbackDrafts を quiet にします。管理者は、管理設定で feedbackDrafts を設定でき、自分の設定より優先されます。
Claude の下書きのフィードバックがないセッション#
Claude Code がこのツールを含めるのは、クラウドプロバイダーではなく Claude API を使う、自分のマシンの対話の端末セッションです。次では外されます。
- 非対話の
-pの実行と Agent SDK のセッション(キューをレビューする画面がない) - クラウドセッション(自分のマシンのキューに書けない)
- Amazon Bedrock・Claude Platform on AWS・Google Cloud の Agent Platform・Microsoft Foundry のセッション
CLAUDE_CODE_SEND_FEEDBACK=0かDISABLE_FEEDBACK_COMMAND=1を設定した、CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICを空でない値に設定した、フィーチャーフラグの取得をオフにした、セッション- 製品フィードバックをオフにした組織と、ゼロデータ保持の組織
タスクツールが使えるか#
タスク追跡のツール TaskCreate・TaskGet・TaskUpdate・TaskList・TodoWrite が既定で使えるのは、Claude 3.x のモデル・Opus 4 から 4.7・Sonnet 4 から 4.6・Haiku 4.5 だけです。ツールが使える場所では、4 つのタスクツール、または CLAUDE_CODE_ENABLE_TASKS=0 を設定したときは代わりに TodoWrite が使えます。
- ほかのすべてのモデルでは、オプトインしない限り、Claude Code はツールを外す。LLM ゲートウェイ経由のカスタムのモデル名のような、Claude Code が認識しないモデル ID も同じ。新しいモデルでは、Claude が書いたチェックリストなしで複数の手順の作業を把握し、ツールの定義とリマインダーはコンテキストを使う。ツールがなければ、Claude は作業中にタスクリストへ何も足さない
- 既定でツールがないモデルで使うには、次のどれかをする:Claude Code を起動する前に
CLAUDE_CODE_ENABLE_TODO_TOOLS=1を export する(CLAUDE_CODE_ENABLE_TODO_TOOLS=1 claudeなど。すると Claude Code は、どのモデルでもどのプロバイダーでも同じツールを提供する)/ツールの 1 つを--allowedToolsで名指しする(claude --allowedTools TaskCreate)/ツールを--toolsに挙げる(セッションの組み込みのツールを、名指しするものに制限するので、使う他の組み込みのツールと一緒に、欲しいツールを含める)/Agent SDK ではallowedToolsとtoolsのオプションが、この 2 つのフラグと同じに働く - バックグラウンドセッションとクラウドセッションでは、Claude Code は、一覧にあってもなくても、どのモデルでも同じツールを提供する
- Claude Code がサブエージェントにツールを与えるのは、サブエージェントが別のモデルで動いていても、自分のセッションがそれを持っているときだけ。プロセス内のエージェントチームのチームメイトも同じようにセッションに従うが、自分の分割ペインのチームメイトは別の Claude Code プロセスとして動くので、そのモデルが決める。タスクツールがなければ、エージェントは共有のタスクリストの代わりにメッセージでチームと連携する
- ここで説明した既定の組は、Claude Code v2.1.268 以降に適用される
WebFetch ツール#
WebFetch は、URL と、抽出したい内容を述べるプロンプトを受け取ります。ページを取得し、サーバーが HTML を返したときは応答を Markdown に変換します。多くの取得では、そのあと別のモデル呼び出しで、その内容に対してプロンプトを実行し、Claude は生のページではなく、その呼び出しの結果を受け取ります。変換の手順は設定できません。
これは設計上、情報が欠ける取得です。抽出のプロンプトが Claude に届くものを決めるので、ページが何かに触れていないという結果は、プロンプトがそれを尋ねなかっただけかもしれません。もっと具体的なプロンプトで取得し直すよう Claude に頼むか、加工されていないページには Bash の curl を使います。
- WebFetch は、リクエストを出す前に、
localhostと、ドットのないほかのホスト名(イントラネットだけの名前など)を拒否する。返すエラーは、ローカルのサーバーには Bash でcurlを使うよう Claude に伝える - HTTP の URL は、自動で HTTPS に上げられる
- 大きなページは、処理の前に、決まった文字数で切り詰められる
- WebFetch は、各応答を既定で 15 分キャッシュするので、同じ URL を繰り返し取得しても速く返る。v2.1.233 以降は、
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSで、各応答を保つ時間を変えられる - 5 分以内にダウンロードを終えないページは、WebFetch がたどるリダイレクトを含め、期限のエラーで失敗する。v2.1.268 以降は、
CLAUDE_CODE_WEBFETCH_DEADLINE_MSで上限を変えるか、0で外せる - URL が別のホストにリダイレクトするとき、WebFetch はそれをたどらず、元の URL とリダイレクト先を示すテキストの結果を返す。Claude は 2 回目の WebFetch の呼び出しで新しい URL を取得する
- 抽出の手順が過負荷の API に当たると、Claude Code はバックオフつきで再試行し、それでも失敗した取得はエラーの結果を返す。v2.1.212 より前は、API のエラーのテキストが、抽出されたページの内容のように Claude に届くことがあった
Manual と acceptEdits の権限モードでは、WebFetch は取得の前に確認します。ただし、権限ルールがすでに許可か拒否をしたドメインと、確認なしで取得する、組み込みの事前承認済みのドキュメントのドメインは除きます。ルールが何を許していても、取得は先に WebFetch のドメイン安全性の検査を通ります。確認には 3 つの選択肢があります。
| 選択肢 | 動き |
|---|---|
| 「Yes」 | この取得だけを承認する。同じドメインでも、次の WebFetch の呼び出しはまた確認する |
「Yes, and don't ask again for <domain>」 |
取得を承認し、そのドメインの WebFetch(domain:...) の許可ルールを、そのリポジトリの .claude/settings.local.json に保存する。組織が allowManagedPermissionRulesOnly を設定していると、Claude Code はこの選択肢を隠す |
| 「No, and tell Claude what to do differently」 | 取得を拒否する |
-
ドメインを確認なしで先に許可するには、
WebFetch(domain:example.com)のような許可ルールを足す。WebFetch(domain:*)はすべてのドメインを許す。autoとbypassPermissionsの権限モードは、明示的なaskルールが一致するドメインを除き、確認を飛ばす -
deny・ask・allowの明示的なWebFetch(domain:...)のルールは、事前承認の組より優先されるので、事前承認されたドメインをブロックしたり、確認を求めたりできる -
WebFetch は
Claude-Userで始まるUser-Agentヘッダーと、HTML より Markdown を好むAcceptヘッダーを付けるので、コンテンツネゴシエーションに対応するサーバーは Markdown を直接返せる -
サンドボックス内のコマンドは、WebFetch の組み込みの事前承認済みのドキュメントのドメインを引き継がない。サンドボックス内のコマンドが確認なしでドメインに届くようにするには、そのドメインを
allowedDomainsに足すか、サンドボックスも尊重するWebFetch(domain:...)のルールで許可する。WebFetch が逆にサンドボックスの許可リストを読むことはないので、サンドボックスや組織のネットワークの許可リストにドメインを足しても、WebFetch がそれを確認するのは止まらない。詳しくはサンドボックス -
URL が claude.ai のアーティファクトのリンクのときは、Claude Code がアーティファクトそのものを読む承認を求めることもある。求める場合は、アーティファクトのページの「あなたに共有されたアーティファクトを読む」にある
WebFetch が使えるか#
Claude Code v2.1.285 以降では、CLAUDE_CODE_DISABLE_WEB_FETCH を 1 にすると WebFetch がオフになります。
Team か Enterprise の claude.ai アカウントでサインインし、LLM ゲートウェイを通さずに接続しているときは、WebFetch は組織のポリシーにも左右されます。Claude Code はセッションの開始時に、そのポリシーを api.anthropic.com に求めます。プランを判定できないセッション(別のアプリが渡した claude.ai のトークンで動くものなど)も同じです。
WebFetch がセッションにないときは、セッションで /status を実行します。Organization policy の行が、ポリシーが読み込めなかったと報告し、待っている機能に Web 取得を挙げていれば、組織が許すと確認できるまで Claude Code は WebFetch を出していません。セッションの外では、claude doctor が自分でリクエストして同じ行を出します。WebFetch を許すポリシーが読み込まれると、再起動なしでツールが戻ります。
WebSearch ツール#
WebSearch は、Anthropic の Web 検索のバックエンドでクエリを実行し、結果の題と URL を返します。結果のページは取得しません。Claude が検索結果で見つけたページを読むには、続けて WebFetch を使います。
- ツールは、1 回の呼び出しで最大 8 回のバックエンドの検索を出し、結果を返す前に内部で検索を絞り込むことがある。Claude は、
allowed_domainsで特定のホストだけを含めるか、blocked_domainsで除外して結果を絞れる。2 つの一覧は 1 回の呼び出しでは組み合わせられない - 検索のリクエストが過負荷の API に当たると、Claude Code はバックオフつきで再試行し、それでも失敗した呼び出しはエラーの結果を返す。v2.1.212 より前は、API のエラーのテキストが検索結果のように Claude に届くことがあった
- WebSearch の権限ルールは specifier を取らない。
allowかdenyに素のWebSearchと書く形だけ - 検索のバックエンドは設定できない。別のプロバイダーで検索するには、検索ツールを公開するMCP サーバーを足す
補足
WebSearch は、Claude API と Claude Platform on AWS で使えます。Microsoft Foundry では、Anthropic にホストされたデプロイが要ります(Azure にホストされたデプロイはサーバー側のツールに対応しないので、WebSearch の呼び出しは失敗する)。Google Cloud の Agent Platform では、Opus・Sonnet・Haiku を含む Claude 4 以降のモデルで動きます。Amazon Bedrock は、サーバー側の Web 検索ツールを公開していません。
セッションの検索の上限#
1 つのセッションで実行できる WebSearch の呼び出しは最大 200 回で、メイン会話と、それが生成するすべてのサブエージェントをまたいで数えるので、並列の調査の扇状の分岐による検索も同じ上限に数えられます。上限は v2.1.212 以降が必要です。Claude が上限に達すると、さらなる呼び出しは、再試行を促すエラーではなく、すでに集めた情報で続けるよう Claude に伝える通知を返します。通知はあなたには見えません:上限に達した呼び出しは、何もしなかった検索として会話に出て、Claude がもっと検索を要するなら、通知は上限を上げるようあなたに頼むよう Claude に伝えます。
- 上限を変えるには
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION環境変数を設定する。正の整数を受け付けるので、上限は上げられるが、なくせない /clearを実行すると数がリセットされる。まだサブエージェントを生成できる作業(動いているワークフローなど)が消去の後も残っていると、数は引き継がれる
Write ツール#
Write ツールは、与えられた全内容で、新しいファイルを作るか、既存のファイルを上書きします。追記も統合もしません。
既存のファイルを上書きする前に、現在の会話でそれを読む必要があるかは、モデルとファイルで決まります。
- Claude Opus 4.6・Claude Haiku 4.5・それより古いモデルは常に読むことを要求するので、読んでいない既存のファイルへの Write はエラーで失敗する
- 新しいモデルは、読んでも権限の確認が要らず、Read ツールが使えるという、編集前の読み取りと同じ条件で、このセッションで読んでいないファイルを上書きできる
- Jupyter ノートブックと、
PARTIAL viewの通知で途中まで読んだファイルは、どのモデルでも読む必要がある - この制約は新しいファイルには当てはまらない。v2.1.228 より前は、すべてのモデルが、既存のファイルを上書きする前に読むことを要求した
- Bash でファイルを見ても、Edit ツールの節にある同じ規則で、この要件を満たす
- 既存のファイルの部分的な変更には、Write ではなく Edit を使う
公式ドキュメント(英語)
2026年10月5日時点の内容をもとに、日本語でまとめています。