本文へ移動
Claude Tips

ツール一覧

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 を設定します。

json
{
  "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 短い .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日時点の内容をもとに、日本語でまとめています。

ページの一覧