3行でいうと

  • 指示ファイル(CLAUDE.md)は助言で、確実に止めるには権限ルールかフックを使う。権限ルールは、評価順が「拒否、確認、許可」。
  • サブエージェントは自分専用の文脈で動き、結果の要約だけが戻る。同時実行は初期値で20、入れ子は3層まで。
  • コストは文脈の大きさに比例する。公式の数字は、企業導入の平均で1人1日約13ドル、90%のユーザーは1日30ドル未満。

この記事は、実際に使って確かめた記録ではありません。この記事は、公式の文書を読んでまとめたものです。Claude Codeは更新が速く、文書にはバージョン番号つきの記述が多くあります。内容は2026年10月22日に読んだ時点のものです。

先に結論

前提:用語

権限:何を許し、何を止めるか

3種類のルール

公式文書では、権限のルールは次の3つです。

評価の順番は「deny、ask、allow」で、最初に当たったものが結果を決めます。具体的なルールのほうが優先される、ということはありません。たとえばBash(aws *)を拒否にすると、より狭い許可Bash(aws s3 ls)があっても止まります。

ルールの書き方はToolかTool(specifier)です。例として、Bash(npm run build)(そのコマンドだけ)、Read(./.env)(そのファイルの読み取り)、WebFetch(domain:example.com)(そのドメインへの取得)が挙がっています。ツール名だけで拒否すると、そのツールはAIの視界から消えます。パターン付きで拒否すると、ツールは見えたまま、当たった呼び出しだけが止まります。

権限モード

モード 動き(公式文書の説明を短くしたもの)
default(CLIではManual) 各ツールの初回に確認する
acceptEdits 作業ディレクトリ内の編集と、mkdir・mvなどを自動で認める
plan 読み取りと調査だけ。ソースは編集しない
auto 通常は確認なし。実行前に、別の分類器(判定役のモデル)が依頼との整合を確認する
dontAsk 確認が必要な呼び出しをすべて自動で拒否する。事前に許可したものは動く。入れた「mod」(Claude Codeの拡張の一種)が、一部を承認できると書かれている
bypassPermissions 確認を飛ばす。隔離された環境(コンテナや仮想マシン)だけで使う、と警告がある

bypassPermissionsやautoを使わせたくない組織は、disableBypassPermissionsModeやdisableAutoModeを管理設定に入れる、とあります(どの設定ファイルでも効くが、上書きされないのは管理設定、という書き方です)。

なお、10月22日のベストプラクティスのページには、v2.1.283以降では、ターミナルとVS Codeの対話セッションの開始時のモードがautoになる、と書かれています(それより前は、Pro・Max・Teamのプランだけ)。上の表のdefaultが最初のモードとは限りません。

設定の優先順位

管理設定(組織が配る設定)は最上位で、コマンドライン引数でも上書きできません。どこかの範囲で拒否されたツールは、ほかの範囲で許可することができません。ユーザー設定で許可し、プロジェクト設定で拒否していれば、拒否が勝ちます。

公式文書の注記にも、重要な一文があります。権限ルールはClaude Codeが強制するもので、モデルが強制するものではない。プロンプトやCLAUDE.mdは、AIが何を試みるかを形づくるが、何が許されるかは変えない、という趣旨です。

フック:決まった場面で必ず走る処理

何か

フックは、Claude Codeの動作の決まった場面で自動実行される、ユーザー定義のシェルコマンドなどです。公式文書は「AIが実行するかどうかを選ぶのではなく、必ず実行される」ことを利点として挙げています。

場面(イベント)は30種類以上あります。主なものは次のとおりです。

イベント いつ
SessionStart セッションの開始、再開
UserPromptSubmit プロンプト送信後、AIが処理する前
PreToolUse ツールを実行する前。ここで止められる
PermissionRequest 許可の判断が必要になったとき
PostToolUse ツールが成功したあと
SubagentStart / SubagentStop サブエージェントの開始と終了
Stop AIが応答を終えたとき
PreCompact / PostCompact 会話の圧縮の前後

種類(type)は、シェルコマンドのcommandが基本で、ほかにhttp(URLへ送信)、mcp_tool、prompt(AIによる1回の判定)、agent(複数回の検証。実験的で変わることがある)があります。

置き場所

場所 範囲 共有
~/.claude/settings.json 自分の全プロジェクト しない
.claude/settings.json そのプロジェクト リポジトリに入れて共有できる
.claude/settings.local.json そのプロジェクト しない(git管理から外される)
管理設定 組織全体 管理者が配る
プラグイン、スキル、サブエージェントの定義 有効な間 それぞれの定義と一緒に

止め方:終了コード2

フックには、イベントのデータがJSONで標準入力に渡されます。止めたいときは、標準エラーに理由を書いて終了コード2で終わります。終了コード0は「異議なし」で、PreToolUseでは許可の意味ではなく、通常の権限の流れが続きます。JSONで返す方法もあり、permissionDecisionにallow・deny・askなどを入れられます。

公式文書の例:危険なSQLを止めるフック

公式文書の例です。この記事では、実行していません。

#!/bin/bash
INPUT=$(cat)
COMMAND=$(echo "$INPUT" | jq -r '.tool_input.command')

if echo "$COMMAND" | grep -q "drop table"; then
  echo "Blocked: dropping tables is not allowed" >&2
  exit 2   # exit 2 = block the action
fi

exit 0  # exit 0 = no decision

そのほかの注意(公式文書より)。

  • 同じイベントに複数のフックが当たると、並列に動き、全部が終わってから結果を統合する。許可の判断は「deny、defer、ask、allow」の順で厳しいほうが勝つ。1つがdenyでも、他のフックの副作用は止まらない。
  • PreToolUseのフックは、どの権限モードより前に走る。denyを返すと、bypassPermissionsでも止まる。逆に、フックのallowは、設定のdenyルールを破れない。
  • 時間切れの初期値は、command・http・mcp_toolが10分、promptが30秒、agentが60秒。ただしUserPromptSubmitなどの一部のイベントでは、command系の初期値が30秒(MessageDisplayは10秒)に下げられている、と10月22日の文書にありました。
  • PostToolUseは、ツールが実行済みなので、取り消せない。
  • Stopは、タスクの完了時だけでなく、応答を終えるたびに走る。

見立てです。「テストが通るまで終わらせない」「保護したいフォルダへの書き込みを止める」「編集のたびに整形する」といった、例外のない決まりは、フックの向く用途だと思います。公式のベストプラクティスも、フックを「例外ゼロで毎回起きるべきことのため」と紹介し、CLAUDE.mdの指示は助言だと対比しています。

サブエージェント:別の文脈で働く助手

仕組み

サブエージェントは、自分専用の文脈窓、独自のシステムプロンプト、限定したツール、独立した権限を持つ助手です。作業の結果の要約だけが、本流の会話に戻ります。検索結果やログのような長い出力を、本流に入れないための仕組みです。

作業の始めには新しい文脈で始まり、本流の会話履歴は見えません。初期の文脈には、そのシステムプロンプト、Claudeが書いた依頼文、CLAUDE.md、git状態の記録が入ります(ExploreとPlanは、CLAUDE.mdとgit状態を読みません)。

組み込みのもの

名前 用途
Explore 読み取り専用で、ファイル探索とコード検索。調査の深さ(quick・medium・very thorough)をClaudeが選ぶ
Plan プランモード中の調査。読み取り専用
general-purpose 調査と変更の両方が要る複雑な作業
statusline-setup、claude-code-guide 設定の補助と、Claude Codeの質問への回答(それぞれSonnet、Haiku)
claude 専門のものに当てはまらない仕事の受け皿(10月22日の文書の表にあり。10月8日の記事では扱っていませんでした)

自分で作る

Markdownファイルで、先頭に設定(YAMLのfrontmatter)を書きます。nameとdescriptionが必須で、tools(許可するツール)、model、permissionMode、maxTurns、skills、hooks、isolation: worktree(一時的なgitの作業コピーで動かす)などが選べます。置き場所の優先順位は、管理設定、--agentsフラグ、.claude/agents/、~/.claude/agents/、プラグインの順です。

数の上限は、初期値で同時実行20(CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTSで変更)、入れ子は主会話の下に3層(CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTHで変更。1にすると入れ子なし)です。サブエージェントの権限は、permissionModeを省くと主会話のモードを引き継ぎます。主会話がbypassPermissions・acceptEdits・autoのときは、サブエージェントの指定は無視されます。特定のサブエージェントを使わせないなら、permissions.denyにAgent(Explore)のように書く、と案内されています。

コスト管理

公式の数字

Claude Codeの料金はトークンの消費量に応じます。公式文書は、企業導入の平均を、1人1日(稼働日)あたり約13ドル、1人1か月あたり150〜250ドルとしています。1日30ドル未満のユーザーは90%です。ただし、モデルの選び方、コードの規模、複数同時起動や自動化で大きく変わる、とも書かれています。自分のチームの見積もりは、少人数の試行で基準を作るよう勧められています。

追跡には/usageを使います。セッションのトークン量と、一覧価格から計算した推定額が出ます。請求の正確な値は、Claude Consoleの使用量ページで見る、とあります。

減らす方法

公式文書の「トークン削減」の節の要点です。

長いセッションで使用量が増える理由として、全会話が毎回送られること、休憩後の最初のメッセージがキャッシュに外れて全文脈を再処理すること(キャッシュの寿命は、10月22日に読んだ prompt-caching のページでは、主会話の初期値が、サブスクリプションの利用枠の中では1時間、APIキー・クラウド経由・追加クレジットの利用中は5分で、設定で変えられると書かれています)、予約された作業が空いている間も走ること、サブエージェントが自分のリクエストを足すこと、が挙げられています(10月22日の文書には、セッション間のメッセージや目標のチェックインなど、新しい理由も加わっていました)。エージェントチーム(実験的、既定では無効)は、プランモードのチームメイトで標準セッションの約7倍のトークンを使う、とあります。

組織向け

APIで使う組織は、Claude Consoleのワークスペースに支出上限を設けられます。チームやエンタープライズのプランでは、席ごとの利用枠(5時間と週の枠)があり、超過分は「利用クレジット」と上限で管理します。クラウド(Bedrock・Google Cloud・Foundry)経由の利用は、各クラウドの課金画面で管理し、Anthropicの分析画面には出ません。

選び方の見立て

見立てです。公式文書の記述から、道具の役割を次のように分けると整理しやすいと思います。

やりたいこと 向く仕組み 公式文書での位置づけ
毎回必ず走らせる、必ず止める フック、権限ルール 決定的に働く(助言ではない)
プロジェクトの決まりを伝える CLAUDE.md 文脈。短く
長い調査、大量の出力 サブエージェント 別の文脈。要約だけ戻る
必要なときだけ読む手順 スキル 呼び出し時に読み込まれる
組織の統制 管理設定 他のどの範囲でも上書きできない

つまずきやすい点

気をつけること

出典

更新履歴