CLAUDE LABEN
2.1.268 — Claude Code の最新版が出ました。目玉は新機能ではなく、互換エンドポイントを使う人を2.1.265 からずっと止めていた不具合の修正ですBASE_URL — ANTHROPIC_BASE_URL を立てた第三者の互換エンドポイントが、全ターン HTTP 400 になっていました。設定を疑う前に版を上げてくださいWEBFETCH — 応答を閉じないサーバーで WebFetch が永久に待つ問題に、300秒の期限が付きました。CLAUDE_CODE_WEBFETCH_DEADLINE_MS で変えられますSECRET — MCP 設定の ${VAR} から解決した秘密情報が /mcp や claude mcp list に表示されていました。画面を共有する方はご確認くださいCPU — アイドル状態の長いセッションが CPU コアを張り付かせるビジーループも直っています。ファンが回り続ける心当たりがある方へRESUME — --continue と --resume が SessionStart フックを待たずに会話を表示するようになりました。起動まわりの体感が変わります2.1.268 — Claude Code の最新版が出ました。目玉は新機能ではなく、互換エンドポイントを使う人を2.1.265 からずっと止めていた不具合の修正ですBASE_URL — ANTHROPIC_BASE_URL を立てた第三者の互換エンドポイントが、全ターン HTTP 400 になっていました。設定を疑う前に版を上げてくださいWEBFETCH — 応答を閉じないサーバーで WebFetch が永久に待つ問題に、300秒の期限が付きました。CLAUDE_CODE_WEBFETCH_DEADLINE_MS で変えられますSECRET — MCP 設定の ${VAR} から解決した秘密情報が /mcp や claude mcp list に表示されていました。画面を共有する方はご確認くださいCPU — アイドル状態の長いセッションが CPU コアを張り付かせるビジーループも直っています。ファンが回り続ける心当たりがある方へRESUME — --continue と --resume が SessionStart フックを待たずに会話を表示するようになりました。起動まわりの体感が変わります
記事一覧/Claude Code
Claude Code/2026-04-13中級

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

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

Claude Code254ツール権限セキュリティ20settings.json8allowedTools開発環境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/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

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

関連記事

Claude Code2026-08-21
Claude Code の read deny が許可フォルダの内側まで届いていなかった話
秘密ファイルとソースが同じツリーに同居する個人開発環境で、permissions.deny の Read ルールが実際にどのファイルまで届いているかを数え直した記録です。棚卸し用のスクリプトつき。
Claude Code2026-08-20
Claude Code で「今後確認しない」を押した範囲を棚卸しする
確認ダイアログで「今後確認しない」を選んだあと、自分が何を許可したのかを説明できるでしょうか。手元の設定を数えるスクリプトと、最小から足していく権限の組み立て方をまとめました。
Claude Code2026-09-05
拒否ルールが見ていたのはファイル名で、そこへ届く経路ではありませんでした
deny に書いた 1 行が、同じファイルへ届く別の書き方を素通りさせていました。経路を機械的に並べて、版を上げた日に効きを確かめる小さな検査表の作り方をお伝えします。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます