🔰はじめての方へ

【Claude Code】機密ファイル(パスワードなど)をClaude Codeに読み込まないで欲しい時の書き方

AI
記事内に広告が含まれています。
スポンサーリンク

私はAI を使用してサイトの作成をすることが多く、cursorやClaude Codeを使ってコードを修正してもらったりしています。

Claude Codeは、AIがコードを読み書きしてくれるとても便利なツールです。

しかし便利すぎるがゆえに、データベースのパスワードAPIキーなど、見せたくないファイルの中身まで読めてしまいます。

この記事では、.claude/settings.jsondeny(拒否)設定 を使って、Claude Codeに機密ファイルを読ませないようにする方法を、初心者向けにわかりやすく解説します。

Claude Codeに関しての記事は他にも書いているので、興味ある方はご参照ください↓↓

・Claude Codeをターミナルで起動できない時の対処方法

【Claude Code】ターミナルで起動できない時の対処法
はじめにClaude Code をターミナルから使おうとしたところ、エラーが発生して起動できなくなっていました。(普段は「claude」と入力するだけで使用することができます)以前は問題なく使えていたのに、ある日突然動かなくなったケースです…

・Claude CodeをVScodeで使う方法

【初心者向け】Claude CodeをVSCodeで使う方法|インストールから初期設定まで解説
最近話題のAI開発支援ツール「Claude Code」。ChatGPTのようにチャットで質問するだけでなく、実際にコードの作成や修正、リファクタリングまでサポートしてくれるため、Web制作やプログラミング学習に役立ちます。この記事では、私が…

・VScodeでのモデルの確認方法

【Claude Code】VScode拡張機能で使用中のモデルを確認・変更する方法
はじめにVSCode の Claude Code 拡張機能を使っていて、「今どのモデルが使われているの?」と気になったことはありませんか?チャットのところになにも書いていないので困りました。モデルによって消費量も異なるようなので、切り替えは…

・Claude Designの設定方法

Claude CodeとClaude Designを使いこなす!設定からデザインHandoffまで完全ガイド
「AIにコードを書かせたい」「デザインをそのままコードに変換したい」——そんな夢を叶えるのが、AnthropicのClaude CodeとClaude Designです。この記事では、MacBookでゼロからセットアップし、Claude D…

・パスワード管理について

【PHPファイル機密情報管理】他者に見られてしまう情報と見られないもの。AIに機密情報を読み込まれないようにする方法も解説
PHPでデータベースを利用し始めると、データベースのユーザー名やパスワードはどこに書けばいいの?ブラウザの検証ツールで他人に見られないの?CursorやClaudeなどのAIに読み込まれないようにできるの?といった疑問が出てきます。私自身も…

・GitHubのパスワード管理について

【GitHubパスワード管理】使うなら必須!パスワードやデータベース情報を安全に管理する方法
PHPやWordPress、Webサイト制作を学び始めると、GitHubでソースコードを管理する機会が増えてきます。しかし、その際に注意しなければならないのが「パスワードの管理」です。私も最初は、データベースのパスワードはどこに書けばいいの…


そもそもなぜ「見せない」設定が必要なの

Web開発では、データベースに接続するためのパスワードなど、外部に漏れてはいけない情報を扱います。

例えば、こんなファイルがあったとします。

<?php
$db_host = 'localhost';
$db_name = 'my_database';
$db_user = 'admin';
$db_pass = 'super_secret_password';  // ← これが漏れたら大問題
?>

Claude Codeはファイルを読む機能を持っているため、何も設定しなければ、このファイルの中身をそのまま読めてしまいます。

そこで 「このファイルだけは読まないでね」 とClaude Codeに伝える設定が必要になります。


設定ファイルの場所

プロジェクトのルートディレクトリに、以下のパスでファイルを作成します。

プロジェクトフォルダ/
├── .claude/
│   └── settings.json   ← これを作る
├── src/
├── ...

設定の書き方

{
  "deny": [
    "Read(**/db_connect_pass.php)",
    "Read(**/.env)",
    "Bash(cat **/db_connect_pass.php)",
    "Bash(cat **/.env)",
    "Bash(less **/db_connect_pass.php)",
    "Bash(less **/.env)",
    "Bash(head **/db_connect_pass.php)",
    "Bash(head **/.env)",
    "Bash(tail **/db_connect_pass.php)",
    "Bash(tail **/.env)",
    "Bash(grep * **/db_connect_pass.php)",
    "Bash(grep * **/.env)"
  ]
}

一見複雑に見えますが、やっていることはシンプルです。

「このファイルを、あらゆる方法で読むことを禁止する」

これだけです。

一つずつ見ていきましょう。


deny とは

{
  "deny": [
    ...
  ]
}

deny = 「拒否する」 という意味です。

この配列の中に書かれた操作を、Claude Codeは実行できなくなります。


** とは

**/db_connect_pass.php

**「どのフォルダの中にあっても」 という意味のワイルドカードです。

**/db_connect_pass.php は、以下すべてに一致します:

  /db_connect_pass.php
  /maker/db_connect_pass.php
  /aaa/bbb/ccc/db_connect_pass.php

こうすることで、プロジェクト内のどこにファイルを置いても、確実に保護できます。


各行の意味

Read ― Claude Codeの読み取り機能を禁止

"Read(**/db_connect_pass.php)"

Claude Codeには Read という、ファイルの中身を直接読むツールがあります。これを禁止します。

Bash(cat ...) ― ターミナルの表示コマンドを禁止

Claude Codeは Bash ツールを使ってターミナルコマンドも実行できます。ファイルの中身を表示できるコマンドは複数あるため、それぞれ禁止する必要があります。

設定禁止するコマンドコマンドの意味
Bash(cat ...)catファイルの中身を全部表示する
Bash(less ...)lessファイルをスクロール表示する
Bash(head ...)headファイルの先頭だけ表示する
Bash(tail ...)tailファイルの末尾だけ表示する
Bash(grep ...)grepファイル内を検索して該当行を表示する

なぜこんなに多くのコマンドを禁止するのか?

Read だけ禁止しても、Claude Codeが cat コマンドを使えば中身が見えてしまいます。

cat を禁止しても head で先頭だけ見えてしまいます。

つまり、「抜け道を全部塞ぐ」 ために、ファイルの中身を表示できるコマンドをすべてリストアップして禁止しているのです。

Read で直接見る        → 禁止
cat で全部表示する      → 禁止
less でスクロール表示   → 禁止
head で先頭だけ見る     → 禁止
tail で末尾だけ見る     → 禁止
grep で検索して見る     → 禁止

.env も一緒に守ろう

上記の設定では db_connect_pass.php.env の2ファイルを保護しています。

.env は多くのフレームワーク(Laravel、Next.js、Railsなど)で使われる環境変数ファイルで、パスワードやAPIキーが書かれることが多いファイルです。

プロジェクトに応じて、保護したいファイルを追加してください。

{
  "deny": [
    "Read(**/db_connect_pass.php)",
    "Read(**/.env)",
    "Read(**/credentials.json)",
    ...
  ]
}

さらに安全にするために

settings.json だけでなく、以下の3つも合わせて設定することをおすすめします。

1. .gitignore に追加する

機密ファイルがGitHub等にアップロードされないようにします。

# .gitignore
**/db_connect_pass.php
.env

2. CLAUDE.md にルールを明記する

プロジェクトルートに CLAUDE.md を作成し、Claude Codeへの指示を書きます。

# CLAUDE.md 例・・・

- `db_connect_pass.php` など機密情報が含まれるファイルの中身を確認しないこと。

CLAUDE.mdClaude Codeが会話の最初に自動的に読み込むファイルなので、ここに書いたルールは毎回適用されます。

3つの対策の役割

対策守る対象効果
.gitignoreGitHub・Git機密ファイルがリポジトリに上がらない
.claude/settings.jsonClaude Code機密ファイルを読み取れない
CLAUDE.mdClaude Code「読もうとしない」というルールを認識させる

まとめ

  • .claude/settings.json の deny 設定で、Claude Codeに特定のファイルを読ませないようにできる
  • Read だけでなく、catlessheadtailgrep も禁止して抜け道を塞ぐ
  • .gitignore と CLAUDE.md も合わせて設定すると、より安全になる

Claude Codeは非常に便利なツールですが、便利だからこそ 「見せていいもの」と「見せてはいけないもの」の線引き が大切です。

プロジェクトを始めるときに、まずこの設定をしておくことをおすすめします。