概要

Cursor はプロジェクトのコードベースを読み取り、インデックス化して各機能を提供する。ルートディレクトリの .cursorignore ファイルで、Cursor がアクセスできるディレクトリやファイルを制御できる。 Cursor は .cursorignore に記載されたファイルへのアクセスを次からブロックする:
Agent が起動するツール呼び出し(terminal や MCP サーバーなど)は、 .cursorignore の対象となるコードへのアクセスをブロックできない

なんでファイルを無視するの?

セキュリティ: API キー、クレデンシャル、シークレットへのアクセスを制限するため。Cursor は無視対象のファイルをブロックするけど、LLM の予測不能性があるから完全な保護を保証できるわけじゃない。 パフォーマンス: 大規模コードベースやモノレポでは、関係ない部分を除外してインデックスを高速化し、ファイル探索の精度を上げる。

グローバルの無視ファイル

ユーザー設定で全プロジェクト共通の無視パターンを設定し、各プロジェクトでの個別設定なしに機密ファイルを除外する。
Global Cursor Ignore List
デフォルトのパターンには次が含まれる:
  • 環境ファイル: **/.env, **/.env.*
  • 認証情報: **/credentials.json, **/secrets.json
  • キー: **/*.key, **/*.pem, **/id_rsa

.cursorignore の設定

ルートディレクトリに、.gitignore の構文で .cursorignore ファイルを作成する。

パターンの例

config.json      # 特定のファイル
dist/           # ディレクトリ
*.log           # 拡張子による指定
**/logs         # 階層内のディレクトリ(再帰)
!app/           # 否定(無視対象から除外)

階層的 ignore

親ディレクトリの.cursorignoreファイルも検索するには、Cursor Settings > Features > Editor > Hierarchical Cursor Ignoreを有効にしよう。 メモ: コメントは # で始まる。後に書かれたパターンが前のものを上書きする。パターンはファイルの場所からの相対パス。

.cursorindexingignore でインデックスを制限

.cursorindexingignore を使うと、インデックス対象からのみファイルを除外できる。これらのファイルは AI 機能からは引き続きアクセスできるけど、コードベース検索には表示されない。

デフォルトで無視されるファイル

Cursor は .gitignore と以下のデフォルトの無視リストに含まれるファイルを自動的に無視する。.cursorignore! を先頭に付ければ上書きできる。
インデックス作成時のみ、.gitignore.cursorignore.cursorindexingignore に加えて、以下のファイルも無視される:
package-lock.json
pnpm-lock.yaml
yarn.lock
composer.lock
Gemfile.lock
bun.lockb
.env*
.git/
.svn/
.hg/
*.lock
*.bak
*.tmp
*.bin
*.exe
*.dll
*.so
*.lockb
*.qwoff
*.isl
*.csv
*.pdf
*.doc
*.doc
*.xls
*.xlsx
*.ppt
*.pptx
*.odt
*.ods
*.odp
*.odg
*.odf
*.sxw
*.sxc
*.sxi
*.sxd
*.sdc
*.jpg
*.jpeg
*.png
*.gif
*.bmp
*.tif
*.mp3
*.wav
*.wma
*.ogg
*.flac
*.aac
*.mp4
*.mov
*.wmv
*.flv
*.avi
*.zip
*.tar
*.gz
*.7z
*.rar
*.tgz
*.dmg
*.iso
*.cue
*.mdf
*.mds
*.vcd
*.toast
*.img
*.apk
*.msi
*.cab
*.tar.gz
*.tar.xz
*.tar.bz2
*.tar.lzma
*.tar.Z
*.tar.sz
*.lzma
*.ttf
*.otf
*.pak
*.woff
*.woff2
*.eot
*.webp
*.vsix
*.rmeta
*.rlib
*.parquet
*.svg
.egg-info/
.venv/
node_modules/
__pycache__/
.next/
.nuxt/
.cache/
.sass-cache/
.gradle/
.DS_Store/
.ipynb_checkpoints/
.pytest_cache/
.mypy_cache/
.tox/
.git/
.hg/
.svn/
.bzr/
.lock-wscript/
.Python/
.jupyter/
.history/
.yarn/
.yarn-cache/
.eslintcache/
.parcel-cache/
.cache-loader/
.nyc_output/
.node_repl_history/
.pnp.js/
.pnp/

否定パターンの制限事項

否定パターン(先頭に ! を付ける)を使う場合、親ディレクトリが * で除外されていると、その配下のファイルを再度含めることはできない。
# public フォルダ内のすべてのファイルを無視
public/*

# ✅ これは有効(ファイルがトップレベルに存在するため)
!public/index.html

# ❌ これは無効 - ネストしたディレクトリ内のファイルは再包含できない
!public/assets/style.css
回避策: ネストしたディレクトリを明示的に除外する:
public/assets/*
!public/assets/style.css # このファイルは現在アクセス可能です
パフォーマンス上、除外されたディレクトリは走査しないため、その中にあるファイルに対するパターンは効かない。 これは、ネストしたディレクトリにおける否定パターンに関する .gitignore の実装と一致する。詳しくは、gitignore のパターンについての公式 Git ドキュメントを参照してね。

トラブルシューティング

git check-ignore -v [file] でパターンをテストする。