Cursor 會讀取並索引項目的代碼庫,以提供相關功能。使用根目錄中的 .cursorignore 文件控制 Cursor 可訪問的目錄和文件。
Cursor 會禁止以下功能訪問 .cursorignore 中列出的文件:
Agent 使用的終端和 MCP 服務器工具無法阻止訪問
不受 .cursorignore 限制的代碼
爲什麼要忽略文件?¶
安全性:限制對 API 密鑰、憑據和機密信息的訪問。雖然 Cursor 會阻止訪問已忽略的文件,但由於 LLM 的不可預測性,無法保證完全防護。
性能:對於大型代碼庫或單體倉庫,排除無關部分可加快索引,並提升文件發現的準確性。
配置 .cursorignore¶
在根目錄中創建 .cursorignore 文件,並使用 .gitignore 語法。
匹配模式語法¶
*匹配除/外的任意字符**匹配包括/在內的任意字符?匹配單個字符!用於否定模式 (取消忽略之前已忽略的路徑)- 以
#開頭的行是註釋 - 除非用
\轉義,否則會忽略行尾空格
模式示例¶
config.json # 指定文件
dist/ # 目錄
*.log # 文件擴展名
**/logs # 嵌套目錄
!app/ # 不忽略(取反)
分層忽略¶
啓用 Cursor Settings > Features > Editor > Hierarchical Cursor Ignore,即可在父級目錄中查找 .cursorignore 文件。
從 Cursor 3.11 起,此設置將移至 Cursor Settings > Indexing > Ignore Files > Hierarchical Cursor Ignore。
全局忽略文件¶
在用戶設置中爲所有項目設置忽略模式,無需爲每個項目單獨配置,即可排除敏感文件。全局忽略列表默認爲空。
常見的模式包括:
- 環境文件:
**/.env、**/.env.* - 憑據:
**/credentials.json、**/secrets.json - 密鑰:
**/*.key、**/*.pem、**/id_rsa
.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 對嵌套目錄中否定模式的處理方式一致。詳情請參閱 Git 官方關於 gitignore 模式的文檔。
疑難排查¶
使用 git check-ignore -v [file] 檢查模式。