CLAUDE LABEN
MCP — 7月28日のMCP仕様リリース候補でMcp-Session-Idヘッダーが廃止されステートレス化します。リモートMCPサーバーはスティッキーセッションなしで運用できますAPPS — 同じ仕様でMCP Apps(サーバー側でレンダリングするUI)と、長時間処理向けのTasks拡張が加わりますMEMORY — Python 0.116.0・TypeScript 0.110.0・Go 1.56.0など各SDKが、メモリストア呼び出しにagent-memory-2026-07-22ヘッダーを送るようになりましたSPILL — agent_toolsetやMCPツールの出力が10万文字を超えると自動でサンドボックス内のファイルへ退避され、モデルには切り詰めたプレビューが渡りますBG — 2分を超えるMCPツール呼び出しが自動でバックグラウンドへ移り、セッションを止めなくなりました。CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますRESUME — エージェントビューで/resumeを打つと過去セッションのピッカーが開き、選んだものをバックグラウンドセッションとして再開できますMCP — 7月28日のMCP仕様リリース候補でMcp-Session-Idヘッダーが廃止されステートレス化します。リモートMCPサーバーはスティッキーセッションなしで運用できますAPPS — 同じ仕様でMCP Apps(サーバー側でレンダリングするUI)と、長時間処理向けのTasks拡張が加わりますMEMORY — Python 0.116.0・TypeScript 0.110.0・Go 1.56.0など各SDKが、メモリストア呼び出しにagent-memory-2026-07-22ヘッダーを送るようになりましたSPILL — agent_toolsetやMCPツールの出力が10万文字を超えると自動でサンドボックス内のファイルへ退避され、モデルには切り詰めたプレビューが渡りますBG — 2分を超えるMCPツール呼び出しが自動でバックグラウンドへ移り、セッションを止めなくなりました。CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますRESUME — エージェントビューで/resumeを打つと過去セッションのピッカーが開き、選んだものをバックグラウンドセッションとして再開できます
記事一覧/Claude Code
Claude Code/2026-04-13中級

Claude Code のツール権限を自分好みに設定する:安全性と開発効率を両立させる

Claude Codeのツール権限をallowedTools・disallowedTools・settings.jsonで細かく制御する方法を解説。プロジェクト別の権限設定から、チームでの共有まで実践的な設定パターンを紹介します。

Claude Code204ツール権限セキュリティ14settings.json2allowedTools開発環境7

Claude Codeを使い始めてしばらくすると、デフォルトの権限設定に微妙な違和感を覚えることがあります。本番データベースが入ったディレクトリで作業していると「もしrmが暴走したら」という不安があるし、逆に制限をかけすぎると毎回の許可ダイアログが邪魔に感じる。

実はClaude Codeのツール権限は、かなり細かく制御できます。プロジェクトごとに許可・拒否するツールを設定でき、チームで共有する設定もsettings.jsonに書けばリポジトリで管理できます。実際に使っている権限設定のパターンを順番にご紹介します。

Claude Codeのツール権限モデルを理解する

Claude Codeが実行できる操作は大きく4つのカテゴリに分かれます。

  • ファイル操作: 読み取り(Read)・書き込み(Write)・編集(Edit)
  • Bash実行: シェルコマンドの実行(Bash)
  • Web系: ブラウザ操作、URL取得
  • MCP系: 外部MCPサーバーへのアクセス

デフォルトでは、ほとんどの操作が「許可を求める」状態になっています。--dangerously-skip-permissionsフラグで全操作を許可することもできるが、本番環境に近いディレクトリで使うのは避けるべきです。

allowedTools と disallowedTools の使い分け

コマンドラインフラグで一時的な権限設定ができます。

# 特定のツールのみ許可(ホワイトリスト方式)
claude --allowedTools "Read,Write,Edit,Bash(git status),Bash(git diff)"
 
# 特定のツールを禁止(ブラックリスト方式)
claude --disallowedTools "Bash(rm),Bash(sudo)"

Bash(コマンド名)の形式でBashコマンドを個別に制御できるのが便利です。例えばBash(git status)Bash(git diff)だけを許可すれば、ファイルの読み取りと差分確認のみ許可する「読み取り専用」に近い状態になります。

ただし毎回フラグを打つのは面倒なので、日常的な設定はsettings.jsonに書いておくほうがいい。

settings.json によるプロジェクト別設定

.claude/settings.jsonを作成すると、そのディレクトリでclaudeを起動したとき自動的に読み込まれます。

// .claude/settings.json(プロジェクトルートに配置)
{
  "permissions": {
    "allow": [
      "Read",
      "Write",
      "Edit",
      "Bash(git *)",
      "Bash(npm run *)",
      "Bash(npx *)",
      "Bash(echo *)",
      "Bash(cat *)",
      "Bash(ls *)",
      "Bash(grep *)",
      "Bash(find *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

ワイルドカード*が使える点が便利です。Bash(git *)と書けばすべてのgitコマンドを許可できます。この設定をリポジトリにコミットしておけば、チームメンバーがgit cloneしてすぐに適切な権限でClaude Codeを使い始められます。

実際に使っているプロジェクト別設定パターン

フロントエンド開発プロジェクトでは、ネットワーク系コマンドを制限しています。

{
  "permissions": {
    "allow": [
      "Read", "Write", "Edit",
      "Bash(git *)", "Bash(npm *)", "Bash(npx *)",
      "Bash(node *)", "Bash(ts-node *)"
    ],
    "deny": [
      "Bash(curl *)", "Bash(wget *)",
      "Bash(ssh *)", "Bash(scp *)"
    ]
  }
}

バックエンドAPI開発では、データベース操作コマンドに気をつけています。

{
  "permissions": {
    "allow": [
      "Read", "Write", "Edit",
      "Bash(git *)", "Bash(go *)", "Bash(make *)",
      "Bash(docker-compose up *)", "Bash(docker-compose down)"
    ],
    "deny": [
      "Bash(psql -c DROP *)",
      "Bash(redis-cli FLUSHALL)",
      "Bash(rm -rf /var/lib/*)"
    ]
  }
}

コードレビューのみの用途(読み取り専用)は以下のようにシンプルにできます。

{
  "permissions": {
    "allow": [
      "Read",
      "Bash(git log *)", "Bash(git diff *)", "Bash(git status)",
      "Bash(cat *)", "Bash(ls *)", "Bash(grep *)"
    ],
    "deny": ["Write", "Edit", "Bash(*)"]
  }
}

グローバル設定と組み合わせる

ユーザーホームディレクトリの~/.claude/settings.jsonにはグローバルな設定を書ける。ここにはすべてのプロジェクトで禁止したい操作を定義しておくと安心です。

// ~/.claude/settings.json
{
  "permissions": {
    "deny": [
      "Bash(rm -rf /)",
      "Bash(sudo rm -rf *)",
      "Bash(format *)",
      "Bash(dd if=*)"
    ]
  }
}

設定の優先順位はプロジェクトの.claude/settings.json > ユーザーの~/.claude/settings.json > デフォルトの順番です。プロジェクト設定がグローバル設定を上書きするが、deny設定はマージされる(どちらかで拒否されていれば拒否される)。

Claude Codeのセッション中に権限を確認する

現在有効な権限設定は、セッション中に確認できます。

# Claude Codeを起動してから
/permissions

このスラッシュコマンドで現在許可・拒否されているツールの一覧が表示されます。設定が期待通りに反映されているか確認したいときに便利です。

権限設定でよくある失敗

ワイルドカードの誤用Bash(git *)はスペース込みのコマンドにマッチします。Bash(git commit -m "メッセージ")も許可されます。コミットメッセージの内容までは制御できないので、そこまで厳密に制御したい場合はBash(git commit *)を拒否リストに入れる必要があります。

deny設定でブロックできないケース:シェルスクリプト経由でコマンドが実行される場合、Bash(スクリプト名.sh)は許可されていても、スクリプト内のrm -rfはdenyリストでブロックできないことがあります。スクリプト実行自体を慎重に扱うべきです。

MCP権限の別管理:MCPサーバーへのアクセスはallowedToolsBash系とは別に管理されます。MCPツールを特定のプロジェクトでのみ有効化したい場合は、settings.jsonmcpServersセクションで制御します。

今の設定を洗い直してみると、案外デフォルトから変えられていない部分が多いかもしれません。プロジェクトの性質に合わせた権限設定を一度整えておくと、「もし暴走したら」という漠然とした不安が減って、Claude Codeをより積極的に活用できるようになります。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-07-25
strictAllowlist で Claude Code サンドボックスの外向き通信を締める
Claude Code v2.1.219 の sandbox.network.strictAllowlist を使い、自動化パイプラインの外向き通信を最小の許可リストで締める実践メモ。接続先を洗い出すスクリプトと運用の落とし穴まで。
Claude Code2026-07-19
コミット済みのシンボリックリンクが worktree の外を指す — AI に並列作業を預ける前のリポジトリ点検
Claude Code 2.1.212 で、コミット済みのシンボリックリンクを worktree 作成時に辿ってリポジトリ外へ書きうる不具合が修正されました。パッチが塞いだのは辿りの側です。危険なリンクがコミットされている側を点検する監査スクリプトと、隔離の手順をまとめました。
Claude Code2026-07-18
プランモードを「読むだけ」と信じていた — 前提を機構で確かめ直す
Claude Code 2.1.212 で、プランモードがファイルを変更する Bash を許可プロンプトも canUseTool も通さず実行していた不具合が修正されました。前提が崩れていた期間に何が起きうるのか、手元で確かめる方法と、モード名に安全性を預けない設計をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →