Claude Code Settings & Permissions完全ガイド——安全にエージェントを解き放つ設定術
Claude Codeのsettings.json・.claude.json・allowedToolsの3層設定構造を徹底解説。自動承認の粒度設定、危険なコマンドのブロック、チーム共有設定まで、安全性と生産性を両立する設定テクニックをハンズオン形式で紹介します。

はじめに
Claude Codeで開発していると、こんな場面に遭遇しませんか?
| 状況 | 困りごと |
|---|---|
| yarn testを実行したい | 毎回「許可しますか?」の確認ダイアログが出る |
| .envを守りたい | Claudeが誤って環境変数ファイルを書き換えてしまった |
| チームで統一したい | 開発者ごとにパーミッション設定がバラバラ |
AIエージェントは強力ですが、「何を許可し、何をブロックするか」を適切に設定しなければ、生産性の低下やセキュリティリスクにつながります。Claude Codeには、この制御を3層の設定ファイルとallowedToolsで細かく管理する仕組みが備わっています。
この記事を読み終わると、以下ができるようになります:
- 3層設定構造(グローバル・ローカル・プロジェクト)の優先順位を理解できる
- allowedToolsでツール単位の自動承認を設定できる
- 危険なコマンドをdenyパターンでブロックできる
- チーム共有のプロジェクト設定を構築できる
設定の3層構造
Claude Codeの設定は、3つのファイルが階層的にマージされて適用されます。
各ファイルの役割
| ファイル | スコープ | Git管理 | 用途 |
|---|---|---|---|
~/.claude/settings.json | 全プロジェクト共通 | 対象外 | 個人のデフォルト設定 |
~/.claude/settings.local.json | 全プロジェクト共通 | 対象外 | ローカル環境固有の上書き |
.claude/settings.json | プロジェクト単位 | コミット対象 | チーム共有の設定 |
ポイント: プロジェクト設定(.claude/settings.json)はGitリポジトリにコミットできるため、チーム全体で同じ許可・拒否ルールを共有できます。
設定ファイルの基本構造
{
"permissions": {
"allow": [
"Bash(yarn:*)",
"Bash(git:*)",
"Read",
"Glob",
"Grep"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(curl:*)"
]
},
"env": {
"CLAUDE_CODE_MAX_TURNS": "50"
}
}
permissions.allowに記載したツールは確認なしで自動実行され、permissions.denyに記載したツールはブロックされます。
allowedTools設定
allowedToolsは、Claude Codeのツール呼び出しを細かく制御する仕組みです。パターンマッチングで柔軟に許可・拒否を指定できます。
パターン構文
ToolName(command_prefix:argument_pattern)
- ToolName :
Bash,Edit,Write,Read,Glob,Grepなどのツール名 - command_prefix : Bashコマンドのプレフィックス(Bash以外のツールでは省略)
*: ワイルドカード(任意の文字列にマッチ)
許可パターンの具体例
| パターン | 意味 |
|---|---|
Bash(yarn:*) | yarnで始まるすべてのコマンドを許可 |
Bash(git:*) | gitで始まるすべてのコマンドを許可 |
Bash(npx:*) | npxで始まるすべてのコマンドを許可 |
Edit | ファイル編集を確認なしで許可 |
Write | ファイル作成・上書きを確認なしで許可 |
Read | ファイル読み取りを許可 |
Glob | ファイル検索を許可 |
Grep | テキスト検索を許可 |
拒否パターンの具体例
{
"permissions": {
"deny": [
"Bash(rm -rf:*)",
"Bash(sudo:*)",
"Bash(chmod:*)",
"Bash(curl|wget:*)",
"Bash(ssh:*)",
"Write(*.env*)",
"Edit(*.env*)",
"Write(.claude/settings.json)"
]
}
}
重要: denyはallowより優先されます。allowでBash(yarn:*)を許可しても、denyでBash(yarn publish:*)を設定すれば、publishコマンドだけブロックできます。
設定のマージルール
3層の設定がマージされる際、以下のルールが適用されます。
実践レシピ
レシピ1:フロントエンド開発の設定
フロントエンド開発で頻繁に使うコマンドを自動承認しつつ、機密ファイルを保護する設定です。
グローバル設定 ~/.claude/settings.json:
{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)"
],
"deny": [
"Bash(sudo:*)",
"Bash(rm -rf:*)"
]
}
}
プロジェクト設定 .claude/settings.json:
{
"permissions": {
"allow": [
"Edit",
"Write",
"Bash(yarn:*)",
"Bash(npx:*)",
"Bash(node:*)",
"Bash(git:*)"
],
"deny": [
"Write(*.env*)",
"Edit(*.env*)",
"Write(*.pem)",
"Edit(*.pem)",
"Bash(yarn publish:*)",
"Bash(git push --force:*)"
]
}
}
この設定により、以下が実現します。
yarn dev,yarn build,yarn testは確認なしで即実行.envや秘密鍵ファイルへの書き込みは完全にブロックgit push --forceの誤実行を防止- ファイルの読み取り・編集は自由に行える
レシピ2:CI/CD環境向けの制限設定
GitHub Actionsなどの自動化環境で、書き込みを特定パスに限定する設定です。
{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Bash(yarn:*)",
"Bash(git:*)"
],
"deny": [
"Bash(sudo:*)",
"Bash(curl:*)",
"Bash(wget:*)",
"Write(*.env*)",
"Edit(*.env*)",
"Write(.github/*)",
"Edit(.github/*)"
]
}
}
レシピ3:チーム共有設定のテンプレート
チーム全員が同じ安全基準で作業するための共有設定です。.claude/settings.jsonとしてリポジトリにコミットします。
{
"permissions": {
"allow": [
"Read",
"Glob",
"Grep",
"Edit",
"Write",
"Bash(yarn:*)",
"Bash(npx:*)",
"Bash(git:*)",
"Bash(node:*)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(sudo:*)",
"Bash(chmod 777:*)",
"Bash(git push --force:*)",
"Bash(git reset --hard:*)",
"Write(*.env*)",
"Edit(*.env*)",
"Write(*.key)",
"Write(*.pem)",
"Write(credentials*)",
"Edit(credentials*)"
]
}
}
運用ポイント:
- このファイルをリポジトリの
.claude/settings.jsonに配置してコミットする - 個人的に追加の許可が必要な場合は
~/.claude/settings.local.jsonで上書きする - PRレビュー時に
.claude/settings.jsonの変更も確認対象にする
設定変更の反映タイミング
設定ファイルを変更した場合、反映タイミングは以下のとおりです。
| 操作 | 反映タイミング |
|---|---|
| settings.jsonの編集 | 次回のツール実行時に即反映 |
/permissionsコマンド | 現在のセッション内でインタラクティブに確認・変更 |
セッション中に許可設定を確認したい場合は、Claude Code内で/permissionsコマンドを使うとその場で設定状況を確認・変更できます。
まとめ
Claude Codeの設定・パーミッション管理のポイントをおさらいします。
| 観点 | ベストプラクティス |
|---|---|
| 安全性 | denyで機密ファイルと破壊的コマンドを明示的にブロック |
| 生産性 | allowで頻出コマンド(yarn, git, npx)を自動承認 |
| チーム統一 | .claude/settings.jsonをGit管理して共有 |
| 個人カスタマイズ | settings.local.jsonで個人の上書きを分離 |
| 優先順位 | プロジェクト > ローカル > グローバルの順で適用 |
設定のコツは**「デフォルトは厳しく、必要に応じて緩める」**です。まずはdenyで危険な操作をブロックし、日常的に使うコマンドだけをallowに追加していくアプローチが、安全性と生産性のバランスを保つ最善の方法です。
この記事で紹介した3つのレシピをベースに、プロジェクトの要件に合わせてカスタマイズしてみてください。