3行でいうと
- 指示ファイル(CLAUDE.md)は助言で、確実に止めるには権限ルールかフックを使う。権限ルールは、評価順が「拒否、確認、許可」。
- サブエージェントは自分専用の文脈で動き、結果の要約だけが戻る。同時実行は初期値で20、入れ子は3層まで。
- コストは文脈の大きさに比例する。公式の数字は、企業導入の平均で1人1日約13ドル、90%のユーザーは1日30ドル未満。
この記事は、実際に使って確かめた記録ではありません。この記事は、公式の文書を読んでまとめたものです。Claude Codeは更新が速く、文書にはバージョン番号つきの記述が多くあります。内容は2026年10月22日に読んだ時点のものです。
先に結論
- 確実に守らせたいことは、指示ファイルではなく、権限ルールかフックに置く。 公式文書は、CLAUDE.mdを「文脈」と位置づけ、強制する設定ではないと書いています。
- 権限ルールは、拒否が最優先。 一度どこかの範囲で拒否されたものは、ほかの範囲の許可では覆りません。
- 長い調査や大量のログは、サブエージェントに任せる。 本流の文脈を汚さず、要約だけを受け取れます。
- コストの大半は「文脈の大きさ」で決まる。 こまめに
/clearし、仕事に合ったモデルを選ぶのが、公式の挙げる効果の大きい習慣です。
前提:用語
- 文脈窓は、AIが一度に扱える文章量の上限です。会話、読んだファイル、コマンドの出力がすべて入ります。
- トークンは、AIが文章を数える単位です。Claude Codeの料金は、トークンの消費量で決まります。
- プロンプトキャッシュは、同じ前置きの再処理を安くする仕組みです。
権限:何を許し、何を止めるか
3種類のルール
公式文書では、権限のルールは次の3つです。
- allow(許可):確認なしで使える。
- ask(確認):使うたびに確認する。
- deny(拒否):使えない。
評価の順番は「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の使用量ページで見る、とあります。
減らす方法
公式文書の「トークン削減」の節の要点です。
/clearで、無関係な作業の間に文脈を空にする。 古い文脈は、以後のすべてのメッセージで、トークンを消費します。/compactに指示を足す。 例:「コードのサンプルとAPIの使い方を残して」。CLAUDE.mdに圧縮時の方針を書く方法もあります。- 仕事に合ったモデルを選ぶ。 Sonnetは多くのコーディングに足り、Opusより安い。Opusは複雑な設計判断や多段の推論に取っておく。簡単なサブエージェントには
model: haikuを指定できる。 - MCPサーバー(外部の道具との接続)を整理する。 使わないサーバーは無効にする。10月22日の文書では、MCPの道具の定義は既定で必要になるまで読み込まれず、名前だけが文脈に入る、とあります。それでも
ghのようなコマンドは、MCPより文脈の消費が少ない、と書かれています。 - フックで前処理する。 1万行のログをAIに読ませる代わりに、フックで
ERRORの行だけを返せば、文脈が数万トークンから数百に減る、という例があります。 - CLAUDE.mdから手順をスキルに移す。 スキルは必要なときだけ読み込まれる。CLAUDE.mdは200行未満に。
- 思考の量を調整する。 拡張思考のトークンは出力として課金される。簡単な作業では
/effortで努力水準を下げる。ただしOpus 5.5、Sonnet 5.5、Haiku 5.5、Fableのモデルでは、思考を切れない。
長いセッションで使用量が増える理由として、全会話が毎回送られること、休憩後の最初のメッセージがキャッシュに外れて全文脈を再処理すること(キャッシュの寿命は、10月22日に読んだ prompt-caching のページでは、主会話の初期値が、サブスクリプションの利用枠の中では1時間、APIキー・クラウド経由・追加クレジットの利用中は5分で、設定で変えられると書かれています)、予約された作業が空いている間も走ること、サブエージェントが自分のリクエストを足すこと、が挙げられています(10月22日の文書には、セッション間のメッセージや目標のチェックインなど、新しい理由も加わっていました)。エージェントチーム(実験的、既定では無効)は、プランモードのチームメイトで標準セッションの約7倍のトークンを使う、とあります。
組織向け
APIで使う組織は、Claude Consoleのワークスペースに支出上限を設けられます。チームやエンタープライズのプランでは、席ごとの利用枠(5時間と週の枠)があり、超過分は「利用クレジット」と上限で管理します。クラウド(Bedrock・Google Cloud・Foundry)経由の利用は、各クラウドの課金画面で管理し、Anthropicの分析画面には出ません。
選び方の見立て
見立てです。公式文書の記述から、道具の役割を次のように分けると整理しやすいと思います。
| やりたいこと | 向く仕組み | 公式文書での位置づけ |
|---|---|---|
| 毎回必ず走らせる、必ず止める | フック、権限ルール | 決定的に働く(助言ではない) |
| プロジェクトの決まりを伝える | CLAUDE.md | 文脈。短く |
| 長い調査、大量の出力 | サブエージェント | 別の文脈。要約だけ戻る |
| 必要なときだけ読む手順 | スキル | 呼び出し時に読み込まれる |
| 組織の統制 | 管理設定 | 他のどの範囲でも上書きできない |
つまずきやすい点
- 許可ルールで拒否を覆そうとする。 拒否が先に評価されます。許可は拒否に勝てません。
- フックのexit 0を許可と思う。
PreToolUseでは、通常の権限の流れが続くだけです。 - フックの出力方式を混ぜる。 終了コード2での停止と、JSONでの制御は、1つのフックでどちらか一方に、と書かれています。
- サブエージェントの費用。 サブエージェント自身のリクエストも、使用量を消費します。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。この記事は、公式文書の整理です。
- 文書のバージョン表記は細かく、機能の多くに「v2.1.xxx以降」の条件がつきます。使っているバージョンで挙動が違うことがあります。
- 1人1日13ドルなどの数字は、Anthropicが書いた企業導入の平均で、個人の目安ではありません。料金・上限・レート制限の目安は変わることがあります。
- サブスクリプションの人には、
/usageのドル表示は、請求の参考になりません(公式文書の注記)。 - フックの
agent型は実験的と書かれています。エージェントチームは、実験的で既定では無効です。 - フックのイベントは30種類以上あり、この記事は主なものだけです。サブエージェント文書の末尾(フォークの節)は読み切れていません。
- 権限、フック、管理設定は、安全に関わる設定です。組織で使う場合は、内容を確認する担当者を置いてください。
出典
- Automate actions with hooks(Claude Code Docs、Anthropic、2026年10月22日確認)
- Create custom subagents(Claude Code Docs、Anthropic、2026年10月22日確認)
- Configure permissions(Claude Code Docs、Anthropic、2026年10月22日確認)
- Manage costs effectively(Claude Code Docs、Anthropic、2026年10月22日確認)
- Best practices for Claude Code(Claude Code Docs、Anthropic、2026年10月22日確認)
- How Claude remembers your project(Claude Code Docs、Anthropic、2026年10月22日確認)
更新履歴
-
2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
-
2026年10月22日 公式の資料を読み直して、次の点を直しました。
- 前:最初の権限モードは表のdefaultと読める → いま:v2.1.283以降は、対話セッションの開始時のモードがautoになります
- 前:キャッシュの寿命は、サブスクで1時間、APIキーやクラウド経由で既定5分 → いま:追加クレジットの利用中も5分で、設定で変えられます
- 前:フックの時間切れはcommand系が10分 → いま:UserPromptSubmitなど一部のイベントでは30秒(MessageDisplayは10秒)
- 前:MCPは使わないサーバーを無効にする → いま:MCPの道具の定義は既定で必要になるまで読み込まれず、名前だけが文脈に入ります
- 前:dontAskは確認が必要な呼び出しをすべて拒否 → いま:入れたmodが一部を承認できると書かれています
- 前:サブエージェントの表にclaudeはなし → いま:専門のものに当てはまらない仕事の受け皿として載りました
