CLAUDE LABEN
OPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できますOPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できます
記事一覧/Claude Code
Claude Code/2026-04-13中級

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

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

Claude Code187ツール権限セキュリティ10settings.jsonallowedTools開発環境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-05
Trusted Devices を小規模チームで運用する — メンバー端末の検証とローテーション設計
Team/Enterprise の Trusted Devices を2〜5人規模で導入する際の、端末登録・無人実行前のプリフライト・端末ローテーション時の漏れ対策を、実運用の手順とスクリプトで整理します。
Claude Code2026-06-29
Trusted Devices の発想を一人運用に翻訳する — 自動実行を「許可した端末からだけ」に縛る
2026年6月28日に Claude Code へ入った Trusted Devices は Team / Enterprise 向けの端末検証機能です。同じ仕組みは使えなくても、その発想は一人の自動運用に翻訳できます。端末を壊れにくく識別し、許可した端末以外では即座に止める実装を、動くコードとつまずきどころ付きでまとめます。
Claude Code2026-06-28
無人で回す自動処理に、静的 API キーを置きっぱなしにしない — WIF で短命資格情報へ切り替える
Claude Code が静的 API キーを WIF(Workload Identity Federation)の短命・スコープ付き資格情報へ置き換える方向に進んでいます。深夜に無人で回すスケジュール実行で、キー漏れの被害範囲を構造的に小さくする移行手順を、動くコードとつまずきどころ付きで整理します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →