コンテンツにスキップ

組み込みツールの癖を知る

tier 2(効いてくる)確認 1 か月前(2026年8月23日)

どこまで来たら使えたと言えるか

面: 両方で同じ

段達成したと言える状態
1. 触る自分のセッションで使えるツール名を Claude に尋ねて確認し、MCP の正確なツール名を /mcp で見た
2. 入れるpermission ルールを書くとき、ツールごとに受け付ける specifier の形(Bash(...) / Read(...) / Edit(...) など)を見て書いている
3. 効かせるBash の出力上限と cwd の引き継ぎ、Edit の 3 つのチェックを把握し、ツールが失敗したときに原因を切り分けられる

何のためのものか

組み込みツールの一覧と挙動。ここに載っているツール名は、permission rule / subagent の tool list / hook matcher でそのまま使う文字列である。名前を正確に知らないとルールが空振りする。

触る

  • 使えるツール集合はプロバイダ・プラットフォーム・設定で変わる。 実行中のセッションで確認するには Claude に直接尋ねる
  • MCP の正確なツール名は /mcp で見る

まずは「読む系(Read / Grep / Glob)は作業ディレクトリ内なら permission 不要、書く系(Edit / Write / NotebookEdit)と Bash は必要」という大枠だけ押さえる。

入れる

ルールを書くとき、ツールごとに specifier の形が違うことを見る。

ルール形式適用先
Bash(npm run *)Bash, Monitor
Read(~/secrets/**)Read, Grep, Glob, LSP
Edit(/src/**)Edit, Write, NotebookEdit
Skill(deploy *)Skill
Agent(Explore)Agent
WebFetch(domain:example.com)WebFetch
  • ここに無いツールは specifier 無しの素のツール名しか受け付けない
  • Edit(...) の allow ルールは同じパスへの読み取りも与える。 対応する Read(...) ルールは要らない
  • hook の matcher は括弧付きではなく素のツール名を使う(絞りたいなら hook の if 側で書く)

効かせる

よく踏む 3 つの挙動を知っておく。

Bash

  • 各コマンドは別プロセス。環境変数は持続しない(export は次のコマンドに残らない)。持続させたいなら CLAUDE_ENV_FILE か SessionStart hook
  • メインセッションの cd は、プロジェクトディレクトリまたは追加作業ディレクトリの中に留まる限り引き継がれる。範囲外へ出るとリセットされ Shell cwd was reset to <dir> が付く
  • 出力が大きいとファイルに退避される。成功時は約 30,000 文字、失敗時は約 10,000 文字までがインライン
  • exit 1 が「無害」と扱われるのは一部のコマンドだけ(grep、find、diff、test、git diff など)。それ以外は失敗扱いになる
  • タイムアウトに達したコマンドは停止ではなくバックグラウンドへ移される

Edit

  • 完全一致の文字列置換で、正規表現やあいまい一致は無い
  • 通るには 3 つ必要。Read-before-edit(同じ会話で読んでいること。PARTIAL view の読み取りは数えない)、Match(空白まで正確に一致)、Uniqueness(ちょうど 1 回だけ現れる。無理なら replace_all: true)

Grep / Glob

  • Grep は ripgrep の正規表現構文。メタ文字はエスケープが要る(interface\{\})。.gitignore を尊重するので無視されたファイルは飛ばされる(探すならパスを直接渡す)
  • Glob は逆に既定で .gitignore を尊重しない。結果は更新時刻順で 100 ファイルで打ち切られる

落とし穴

  • AskUserQuestion は既定で答えるまで開いたまま。 離席で止めたくないなら askUserQuestionTimeout を設定する。permission prompt はアイドルで自動解決されない
  • EndConversation は他のツールが残っている限りブロックできない。 deny / ask ルールも --disallowedTools も効かない
  • subagent の起動自体は permission を求めない。 照合されるのは subagent 自身のツール呼び出し
  • TodoWrite は既定で無効(TaskCreate / TaskUpdate などが優先される)
  • advisor tool は API 側が実行する server tool で、permission ルールや hook matcher で参照できる名前は無い

根拠と前後

このページが書ける範囲は、根拠にした facts に書かれていることだけです。 仕様そのものはそちらを読んでください。