最近、VS Code 派生の AI エディタ「Cursor」を使っていて、
「.env をファイルは参照できません」
と AI に言われて、
「えっ?そこにいるじゃん?!」となりました。
この記事は、
-
.envが Cursor から無視される現象 - defaultSettings.json を眺めて「これだ!」と思ったけど編集できない
- 最終的に ユーザー設定(settings.json)で override して解決した流れ
AI に泣きついた試行錯誤ログ**としてまとめた記事です。
前提:.envとかをgitやcursorにあげてはいけないのですが、個人のテスト開発なのでAIに一緒に編集してもらった方が楽ということです。
■ 環境
- macOS
- Cursor(VS Code 派生)
- プロジェクト直下に
.envが存在
.env には DB 接続情報など、いわゆる機密情報が入っています。
# .env(一部)
DB_HOST=example.rds.amazonaws.com
DB_USER=admin
DB_PASSWORD=super-secret
DB_NAME=growhub
■ 症状:「Cursor が .env を見えないと言う」
AI にプロジェクト構成のレビューを依頼したところ…
.envファイルは存在しません
と返されました。
当然、あります。
■ 第1ステップ:普通に VS Code 的な問題を疑う
最初に疑ったのはこのへん:
-
.gitignore経由で隠れている? -
files.excludeorsearch.exclude? - ワークスペースのルートが違う?
全部チェック。
-
.envはエクスプローラーに見える - exclude 設定にもない
- ターミナル
ls -laでも存在している
それでも Cursor だけが「見えない」と言う。
■ 第2ステップ:AI「files.exclude を見てください」
AI からこんな回答が来た:
- もし以下のような除外が入っていたら消すか false にします。
{
"files.exclude": {
"**/.env": false,
"**/.env*": false,
"**/.*": false
},
"search.exclude": {
"**/.env": false,
"**/.env*": false
}
}
でもそんな項目はなかったので.envという記述で検索するとdefaultSettings.jsonの中に以下の記述があります。
// Global list of files to always ignore in Cursor features, across all workspaces. Uses glob patterns. These patterns have the same effect as adding them to a .cursorignore file in every workspace.
"cursor.general.globalCursorIgnoreList": [
"**/.env",
"**/.env.*",
以下略
],
完全に犯人。ありがとう。
■ 第3ステップ:defaultSettings.json を編集しようとして詰む
即座に修正しようとして発覚した事実:
- defaultSettings.json は編集できない
VS Code の “Default Settings” と同じ扱いで読み取り専用。
ここでまた嘆く。
「編集できないんだけど!!!」
■ 第4ステップ:正解は “settings.json(ユーザー設定)で override する” だった
AI に言われて初めて気づいたやつ:
- デフォルトは書き換えず、ユーザー設定で上書きするのが正規ルート
なので、ユーザ設定のjsonに「cursor.general.globalCursorIgnoreList」の項目を追記して、設定をオーバーライドするということです。
● 手順
1. 設定画面を開く
Cmd + ,
2. 右上の … → Open Settings (JSON)
これが編集可能な settings.json。
「ユーザー設定」というやつです。
3. .env を ignore から外す設定を書き換える
(おすすめ版:.env以外の秘密鍵は引き続き無視する)
以下の記述を追加すると元の設定と比べて「.env」関連だけが無視対象から外れます。
{
"cursor.general.globalCursorIgnoreList": [
"**/credentials.json",
"**/credentials.*.json",
"**/secret.json",
"**/secrets.json",
"**/*.key",
"**/*.pem",
"**/*.pfx",
"**/*.p12",
"**/*.crt",
"**/*.cer",
"**/id_rsa",
"**/id_dsa",
"**/.ssh/id_*"
]
}
4. Reload
Cmd + Shift + P → Reload Window
● するとどうなるか?
AI に確認したら…
「.env が2つ存在しています」
ついに成功 🎉
■ セキュリティ補足:.env を AI に見せるのは危険(本番はNG)
ここまでやっておいて何ですが、
本番 .env を AI に読ませるのは基本NGです。
理由:
- APIキー・DBパスワードをクラウドAIに送ることになる
- 万が一ログに残ったら取り返しがつかない
なので、
◎ .env.example を使う
or
◎ 必要な行だけコピペする
のが安全。
■ まとめ
- Cursor が
.envを見ない原因は
cursor.general.globalCursorIgnoreListによる一括 ignore -
defaultSettings.jsonは編集できない - ユーザー設定(settings.json)で override するのが正解
-
.envを AI に見せるときは慎重に!!!
最後にもう一度:
「できないよ〜!」と嘆きながら調べたら、
ちゃんと AI が道案内してくれました。
同じところでハマった人の助けになれば幸いです。