目次
Claude Codeでスキルを作成する際、意図しないファイル編集やコマンド実行を防ぎたい場面がありました。allowed-toolsで解決できたので、備忘録です。
allowed-toolsとは
allowed-toolsは、Claude Codeでエージェントが使用できるツールを制限する機能です[1]。スキルやサブエージェントに対して、必要最小限のツールのみ許可できます。
たとえば、コードレビュー用のスキルでは読み取り系ツールのみを許可し、ファイル編集を禁止できます。
設定方法
スキルのフロントマターにallowed-toolsを記述します。
.claude/commands/code-reviewer.md
---
name: code-reviewer
description: コードレビュー専用スキル
allowed-tools: Read, Grep, Glob
---
この設定により、エージェントはRead、Grep、Globのみを許可なしで使用できます。settings.jsonでプロジェクト全体のツール権限を管理することも可能です[2]。
ツール別の引数指定
ツールごとに引数の書式が異なります。
ファイル操作(Read、Edit、Write)
パス指定は4つの方式があります。
Read(*.env) # 相対パス(カレントディレクトリ基準)
Edit(/src/**/*.ts) # プロジェクトルート基準(/で始まる)
Read(~/.zshrc) # ホームディレクトリ基準
Write(//tmp/scratch.txt) # 絶対パス(//で始まる)
ワイルドカードはgitignore形式に準拠しています。**/*.jsはすべてのサブディレクトリの.jsファイル、src/*.tsはsrc直下の.tsファイルのみを指します。
Bash
前方一致でコマンドを制限します。
Bash(npm run build) # 完全一致
Bash(npm:*) # npm で始まるコマンドすべて
Bash(git:*) # git で始まるコマンドすべて
WebFetch
ドメイン単位でアクセスを許可します。
WebFetch(domain:docs.anthropic.com)
WebFetch(domain:github.com)
実践例
ドキュメント作成スキルの例です。/docsディレクトリ内のMarkdownファイルのみ編集可能にします。
.claude/commands/doc-writer.md
---
name: doc-writer
description: ドキュメント作成スキル
allowed-tools: Read, Write(/docs/**/*.md), Edit(/docs/**/*.md), Glob
---
