Claude Code settings.json 全オプション解説|permissions・hooks・MCPの完全リファレンス

AI・自動化
スポンサーリンク

この記事でわかること
– settings.jsonの2つの配置場所とマージルール
– permissions(allow/deny)の書き方と優先順位
– hooksの設定(PreToolUse / PostToolUse / Notification / Stop)
– mcpServersの登録方法
– 環境変数・その他のオプション一覧

Claude Codeの動作は settings.json で細かくコントロールできる。「このコマンドは確認なしで実行してほしい」「このツールは絶対に使わせたくない」「MCPサーバーを追加したい」——これらはすべてこのファイルで設定する。


スポンサーリンク

設定ファイルの場所

パス適用範囲
~/.claude/settings.jsonグローバル(全プロジェクト)
{project}/.claude/settings.jsonプロジェクト固有

両方存在する場合はマージされる。プロジェクト設定が優先

プロジェクトの .claude/settings.json はチームと共有するためgitにコミットする。個人の好みはグローバル側に書く。


全体構造

{
 "permissions":{
   "allow":[],
   "deny":[]
 },
 "hooks":{
   "PreToolUse":[],
   "PostToolUse":[],
   "Notification":[],
   "Stop":[]
 },
 "mcpServers":{},
 "env":{},
 "enableAllProjectMcpServers":false,
 "includeCoAuthoredBy":true
}

permissions

Claude Codeがツールを使おうとするとき、デフォルトでは確認ダイアログが出る。allow に追加すると確認なしで実行、deny に追加すると常に拒否になる。

書き方

"ToolName"           // ツール全体
"ToolName(pattern)"  // パターン付き(glob)

主なツール名

ツール名何をするか
Bashシェルコマンド実行
Editファイル編集
Writeファイル書き込み
Readファイル読み込み
Globファイル検索
Grepコンテンツ検索
WebFetchWebページ取得
mcp__サーバー名__ツール名MCPツール

allow の例

{
 "permissions":{
   "allow":[
     "Bash(git *)",         // git コマンドはすべて自動承認
     "Bash(npm test)",       // npm test は確認なし
     "Bash(npm run *)",      // npm run ○○ はすべて確認なし
     "Edit",                 // ファイル編集は常に自動承認
     "Read",                 // ファイル読み込みは常に自動承認
     "Glob",                 // ファイル検索は常に自動承認
     "Grep"                  // コンテンツ検索は常に自動承認
   ]
 }
}

deny の例

{
 "permissions":{
   "deny":[
     "Bash(rm -rf *)",       // 再帰削除は常に拒否
     "Bash(git push --force *)",// force push は常に拒否
     "Bash(curl * | bash)",  // パイプでbashに渡すのは拒否
     "Read(~/.ssh/*)",       // SSHキーは読ませない
     "Read(~/.aws/*)",       // AWS認証情報は読ませない
     "Read(**/.env)"         // .envファイルは読ませない
   ]
 }
}

優先順位

deny > allow。denyに入っているものはallowに入っていても必ず拒否される。

MCPツールのpermissions

{
 "permissions":{
   "allow":[
     "mcp__sqlite-server__query_db",  // 特定MCPツールを自動承認
     "mcp__weather-server__*"          // weather-serverの全ツールを自動承認
   ]
 }
}

hooks

ツール実行前後などのイベントでシェルコマンドを自動実行する。詳細はClaude Code hooksシステム完全ガイドを参照。

基本構造

{
 "hooks":{
   "PreToolUse":[
     {
       "matcher":"Bash",
       "hooks":[
         {
           "type":"command",
           "command":"echo '実行前処理'"
         }
       ]
     }
   ]
 }
}

matcher の書き方

matcherマッチ対象
"*"全ツール
"Bash"Bashツールのみ
"Edit"Editツールのみ
"mcp__server__tool"特定MCPツール

イベント一覧

イベントタイミング終了コード2の効果
PreToolUseツール実行前ツールをブロック
PostToolUseツール実行後なし
Notification通知発生時なし
Stopセッション終了時なし

mcpServers

Claude Codeに接続するMCPサーバーを定義する。

stdio方式(最も一般的)

{
 "mcpServers":{
   "my-server":{
     "command":"node",
     "args":["/path/to/server/dist/index.js"],
     "env":{
       "API_KEY":"your-key",
       "DB_PATH":"/path/to/db.sqlite"
     }
   }
 }
}

npx / uvx で直接実行

{
 "mcpServers":{
   "filesystem":{
     "command":"npx",
     "args":["-y","@modelcontextprotocol/server-filesystem","/allowed/path"]
   },
   "fetch":{
     "command":"uvx",
     "args":["mcp-server-fetch"]
   }
 }
}

SSE方式(リモートサーバー)

{
 "mcpServers":{
   "remote-server":{
     "type":"sse",
     "url":"https://your-mcp-server.example.com/sse",
     "headers":{
       "Authorization":"Bearer your-token"
     }
   }
 }
}

enableAllProjectMcpServers

{
 "enableAllProjectMcpServers":false
}

false(推奨)にするとプロジェクトの .claude/settings.json に定義されたMCPサーバーが自動起動しない

外部リポジトリをcloneしたときに悪意あるMCPサーバーが起動するリスクを防ぐため、グローバル設定では false にしておくのが安全。

使いたいMCPサーバーはグローバルの ~/.claude/settings.json に自分で追加する。


env

Claude Codeのプロセス全体に渡す環境変数を設定する。

{
 "env":{
   "PYTHONIOENCODING":"utf-8",
   "NODE_ENV":"development",
   "MY_API_BASE_URL":"https://api.example.com"
 }
}

APIキーなどの機密情報はここには書かない(MCPサーバーごとの env に書く)。


includeCoAuthoredBy

{
 "includeCoAuthoredBy":true
}

true(デフォルト)にするとgit commitメッセージに Co-Authored-By: Claude が自動追加される。チームポリシーによっては false にする。


設定例:個人開発向けグローバル設定

{
 "permissions":{
   "allow":[
     "Read",
     "Glob",
     "Grep",
     "Bash(git status)",
     "Bash(git diff *)",
     "Bash(git log *)",
     "Bash(git add *)",
     "Bash(npm test)",
     "Bash(npm run lint)",
     "Bash(npm run build)",
     "Bash(python -m pytest *)"
   ],
   "deny":[
     "Bash(rm -rf *)",
     "Bash(git push --force *)",
     "Bash(git reset --hard *)",
     "Read(~/.ssh/*)",
     "Read(~/.aws/*)",
     "Read(**/.env)"
   ]
 },
 "enableAllProjectMcpServers":false,
 "hooks":{
   "Notification":[
     {
       "matcher":"*",
       "hooks":[
         {
           "type":"command",
           "command":"echo 'Claude: 通知あり' >> ~/.claude/notify.log"
         }
       ]
     }
   ]
 }
}

設定例:チームプロジェクト向け

プロジェクトの .claude/settings.json として共有するもの:

{
 "permissions":{
   "allow":[
     "Bash(npm test)",
     "Bash(npm run *)",
     "Bash(python -m pytest *)",
     "Bash(make *)"
   ],
   "deny":[
     "Bash(rm -rf *)",
     "Bash(git push *)",
     "Bash(DROP *)",
     "Read(**/secrets/*)"
   ]
 },
 "mcpServers":{
   "project-db":{
     "command":"node",
     "args":["./tools/mcp-db-server/dist/index.js"],
     "env":{
       "DB_PATH":"./data/dev.db"
     }
   }
 },
 "includeCoAuthoredBy":false
}

まとめ

設定項目用途
permissions.allow確認ダイアログなしで自動実行するツール
permissions.deny常に拒否するツール(allowより優先)
hooksツール実行前後などに自動実行するシェルコマンド
mcpServers接続するMCPサーバーの定義
enableAllProjectMcpServersプロジェクトMCPの自動起動(falseが安全)
envClaude Codeプロセスへの環境変数
includeCoAuthoredByコミットへのCo-Author追記

セキュリティの基本方針:
deny を先に設計する(何を禁止するかを決めてからallowを追加)
enableAllProjectMcpServers は false に固定
機密情報は env に書かない(MCPサーバーごとの env か、OS側の環境変数で管理)


わさびの見解

わさびです。Claude Codeのsettings.jsonは、2025年12月から使い始めてすぐにハマった機能です。最初はpermissionsのallowで「Bash(git )」を設定しただけで、プロジェクトのgit pull/pushが確認なしで飛ぶようになり、akahara-vlabの自動投稿パイプラインが一気に安定しました。denyで「WebFetch(.exe)」をブロックしてセキュリティも固め、hooksのPostToolUseでツール実行後にRedisにログを送るスクリプトを仕込んで、cocoaAIやZariaSystemの並行運用を監視しています。

mcpServersの登録は特に強力で、ow-newsのOverwatch速報サイトでは独自MCPサーバーを追加してRSS翻訳を高速化。envでAPIキーを管理すれば、チーム共有も楽です。これらをCLAUDE.mdと組み合わせると、Claude Codeは単なる補助ツールじゃなく、システム構築の加速器になります。実際、3ヶ月で10以上のプロジェクトを回せているのはこの設定のおかげ。AIを道具としてカスタムできるエンジニアと、使えない人の乖離がここで決まると思います。

permissionsからhooks、MCPまでマスターして、自分のパイプラインに組み込んでみてほしい。劇的に変わりますよ。

あわせて読みたい


参考: Claude Code Documentation — Settings


見てもらえるだけで応援になります

このブログはアフィリエイトリンクで運営されています。以下のリンクから気になるサービスをチェックしてもらえると、僕たちの活動の支えになります。


この記事を書いたのは わさび(ニホンイシガメ / 3歳 / VTuberあかはら。の家族)です。

あかはらVラボ — Claude特化の情報を発信中。

この記事が参考になったら|以下のリンクから見てもらえるだけで、ブログ運営の応援になります。




  • AI開発環境やブログ運営に。初期費用無料、月額296円から。
  • 天秤AI Biz byGMO

    Claude・ChatGPT・Geminiなど6つの生成AIを同時に使い比べ。業務活用に。

コメント

タイトルとURLをコピーしました