Claude Code を起動するときに、使える道具を最初から絞っておきたい人向け
「このセッションでは読みだけ許す、書き換えはさせない」のように、最初の入口でうっかり操作を物理的にブロックしたい場面で叩く。初見の OSS のプロジェクト一式を <code>git clone</code> してきた直後の読み込み専用セッションや、議論だけしたい時の道具全封じセッションなどで使う。
Claude Code を起動するときに、「このセッションでは Bash と Read と Edit の3つだけ使わせる」みたいに、使える道具の一覧を最初に絞り込む起動指定です。コマンドの後ろに --tools "Bash,Edit,Read" のように書き足すと、それ以外の道具は最初から無いことになります。
強い制限です。「うっかり Write でファイルを書き換えられた」「Bash で重い処理を回された」みたいな事故を、最初の入口でブロックできます。
噛み砕くと
会社の新入社員に、初日に「あなたが使っていい道具はこの3つだけ。それ以外の棚は鍵かかってます」と言い渡すような起動指定です。後から「やっぱりこれも使いたい」と言われても、その日のうちは無理。セッションを開き直さないと棚は開きません。
言い換えると、Claude Code の道具棚そのものを、最初の入口で人間が手作業で組み替える操作です。
大事な前提:これは「使えるか否か」の話で、「確認なしで通すか否か」の話ではない
似た名前の指定に --allowedTools があります。読みは近いけど役割が全然違います。
--allowedTools は「使うこと自体は OK、確認画面も出さずに通す道具のリスト」を指定する方です。指定しなかった道具も使えはする。ただし1回1回「これ使っていい?」と人間に確認が走ります。
一方 --tools は「そもそも使える道具のリストごと差し替える」方です。指定しなかった道具は、確認するチャンスすらなく、最初から存在しないことになります。公式の説明も "Restrict which built-in tools Claude can use" と書かれていて、リストの差し替えだとはっきり読めます。
もう1つ似た指定に --disallowedTools があります。こちらは「外したいものだけ名前で指定する」方式です。5つある道具のうち1つだけ封じたい場面なら、--tools で残り4つを全部列挙するより --disallowedTools "Edit" のように1つだけ指定する方が短くて済みます。全部列挙してホワイトリストを作るのが --tools、外すものだけ書いてブラックリストを作るのが --disallowedTools、という覚え方が使い分けの目安です。
「家計簿アプリを作る」を例に、実際の手順を見る
個人用の家計簿アプリを Claude Code に手伝ってもらう想定で進めます。今日は仕様の整理と画面設計まで。コードは1行も書かせたくない、ファイルもまだ作らせたくない、けど CLAUDE.md と既存メモは読んでほしい、という状況です。
ステップ1:プロジェクトのフォルダで普通に開いてみる
まず比較用に、何の指定もなしで起動します。
$ cd ~/projects/kakeibo
$ claude
この状態だと、Claude は Bash も Edit も Write も全部使える前提で動きます。「じゃあメモを書いておきます」と言って勝手に spec.md を新規作成しに来る可能性もあります。今日はそれを止めたい。
ステップ2:使える道具を Read と Grep の2つだけに絞って開き直す
セッションを抜けて、起動コマンドの後ろに指定を足して開き直します。
$ claude --tools "Read,Grep"
カンマ区切り、空白なしです。公式 example も "Bash,Edit,Read" と空白なしで書かれていて、ここに空白を入れると名前として認識されない場面があります。
ステップ3:その場でお願いしてみる
セッションが開いたら、こう投げます。
このフォルダの中身をざっと読んで、家計簿アプリの仕様メモがあるか教えて
Claude は Grep でキーワードを当てたり、Read で個別ファイルを開いたりしながら答えます。ファイルは1個も作られない、ターミナルも叩かれない、既存のテキストも書き換わらない。読むだけで止まります。
ステップ4:途中で書き換えをお願いしてみる(意図的に)
「じゃあ README.md の冒頭を整えておいて」と頼んでみます。すると Claude は素直に「Edit が使えないので書き換えできません」と返してきます。ここで初心者がやりがちな勘違いがあります。「--tools でリストに入れてないだけだから、確認画面さえ出してくれれば実行できるはず」と思って、許可ボタンを探しがちです。許可ボタンは出ません。そもそも道具が存在しないことになっているので、確認のしようがないからです。
ステップ5:書き換えもさせたくなったら、セッションを開き直す
仕様メモが整って、次は実際に spec.md を作りたい段階になったとします。今度はこう開きます。
$ claude --tools "Read,Grep,Write,Edit"
セッションを開き直さないと道具棚は組み替えられません。「途中から追加で許可する」は --tools ではできない仕様です。
ステップ6:3つの書き方を覚える
値の指定は3パターンあります。
--tools ""(空文字):道具を全部封じる。Claude は読みも書きもできず、純粋に会話だけ。仕様議論や文章レビュー専用にしたい時の指定--tools "default":標準セットを全部使わせる。「絞らないけど明示しておきたい」場面で書く--tools "Bash,Edit,Read":道具名をカンマ区切りで列挙して、その分だけ使わせる。これが一番使う形
つまり --tools は何をしてくれるのか
- やってくれる:起動時に、Claude が使える組み込み道具のリストを丸ごと差し替える。指定外の道具は最初から無いことになる
- やってくれる:「読むだけ」「会話だけ」のセッションを安全に作る。ファイルが勝手に書き換わる事故を入口でブロックできる
- やってくれない:MCP サーバー経由の道具まで絞ること。
--toolsが効くのは組み込み道具に対してで、外部の道具は別の仕組みで管理する - やってくれない:セッションの途中で「やっぱりこれも追加」と動的に増やすこと。開き直しが必要
- 意味が薄い場面:何でも好きにやらせる前提の試運転セッション。絞る必要がないなら指定しなくていい
使いどころ3シナリオ(具体題材で再現)
シナリオ1:料理ブログの記事構成を相談したい時
WordPress に投稿する前段で、「世界の魚を紹介する記事」の構成だけ Claude と練りたい状況です。コードもファイル操作も一切いらない、純粋に文字の議論だけしたい。こういう時は claude --tools "" で道具を全部封じます。Claude が「じゃあ下書きをファイルに保存しますね」と勝手に動く余地がなくなって、議論に集中できます。私みたいに「ついツールに頼って手を動かしすぎる」癖がある人には、入口で縛る方が結果的に速い。
シナリオ2:他人から渡された OSS プロジェクト一式を最初に読む時
知らない OSS のプロジェクト一式を git clone してきた直後は、何があるのか分からないので、いきなり書き換えさせたくない場面です。claude --tools "Read,Grep,Glob" で読む系の道具だけに絞って起動すると、Claude は探索と要約しかできなくなります。「package.json の依存ライブラリを書き換えておきます」みたいな勇み足が物理的に発生しない。初見のコードベースで、まず構造を頭に入れたい時に使います。
シナリオ3:家計簿 CSV の集計を Bash だけで回したい時
銀行から落とした CSV を集計したいだけ、Claude にコードファイルを残されたくない時は claude --tools "Bash,Read" です。読んで、ターミナルでパイプを組んで集計する、それだけ。Write も Edit も外しておけば、作業の副産物として中間ファイルが散らかることもありません。一時的な分析タスクで、終わったら何も残らない状態を作りたい時に向いてます。
初心者が踏みやすい落とし穴
- カンマの前後に空白を入れる。
"Bash, Edit, Read"と書くと、空白込みの名前として扱われて道具が認識されない場面があります。公式の example も空白なし。詰めて書くのが安全 --allowedToolsと混同する。前者は確認なし通過リスト、後者は使える道具リストの差し替え。やりたいのが「全部使わせるけど確認は省きたい」なら--allowedTools、「そもそも一部しか使わせない」なら--tools- 外したいのが1〜2個なのに、残り全部を列挙してしまう。「
Bash以外は全部使わせたい」場面で--tools "Read,Edit,Write,Grep,Glob"と5つ書くのは漏れが出やすい。この場合は--disallowedTools "Bash"と1つ書く方が短くて正確。除外したいものが少ない時は--disallowedToolsの方が向いてます - セッション中に追加しようとする。「やっぱり
Writeも使いたい」と思っても--toolsの指定は途中変更できません。/exitで抜けて、別の--tools値で開き直す --tools ""を「何もしない」と勘違い。空文字は「道具を全部封じる」という強い指定です。Claude は会話しかできなくなって、ファイル操作を頼んでも全部断られます- 大文字小文字を間違える。
"bash,edit,read"と全部小文字で書くと認識されない場合があります。BashEditReadのように先頭大文字 - 道具名をスペル間違いする。
"Read,Wrte"のようにタイポしても、その場ではエラーにならず、ただWriteが無効化されただけの状態でセッションが始まります。「あれ書き換えできない」と気づいた時には手遅れ。起動コマンドはコピペが安全 - MCP 道具まで絞ろうとする。
--toolsは組み込み道具のホワイトリスト。MCP サーバー経由で足した道具はこの指定の管轄外。MCP も含めて絞りたいなら、settings.jsonの権限設定など別の仕組みが必要
書き方
claude --tools "<道具名のカンマ区切り、または空文字、または default>"
やってみるとこうなる
入力
claude --tools "Bash,Edit,Read"
出力例
起動後、Claude は Bash・Edit・Read の3つだけ使える状態になる。Write を頼まれても「使える道具にないので実行できない」と返ってきて、ファイルが新規作成されることはない。
このページに出てきた言葉
- 組み込み道具
- Claude Code に最初から入っている標準の道具。Bash=コマンド実行、Read=ファイル読み、Edit=書き換え、Write=新規作成、Grep=中身検索、Glob=一覧、など
- --allowedTools
- 「この道具は確認画面なしで通していい」と通過リストを指定する別の起動指定。指定しなかった道具も使えるが1回ずつ許可が走る
- --disallowedTools
- 「この道具だけ外す」とブラックリスト方式で指定する別の起動指定。1〜2個だけ封じたい場面では <code>--tools</code> より短く書ける
- セッション
- <code>claude</code> と打って起動してから抜けるまでの1回の対話のかたまり。<code>--tools</code> の効果はこのセッション中だけ続く
- ホワイトリスト方式
- 「これだけ使っていい」と許可するものを全部書き出す指定の仕方。逆は「これだけ外す」と書くブラックリスト方式
- MCP サーバー
- Claude Code に外部から追加する道具の置き場所のような仕組み。<code>--tools</code> の管轄外で、別の設定で管理する