Guides · measured July 2026
The answer is in a file. Your tools were told to skip it.
Build output, .env, node_modules, datasets, logs: the untracked majority of a real project. ripgrep skips it by default. Cursor never puts it in the index. Here is how to search the git-ignored files anyway, and why an index that never skips quietly changes the job.
TL;DR · key takeaways
- 01
.gitignore is a filter your search silently obeys. ripgrep, Cursor and VS Code all read it and quietly narrow to tracked files, hiding the .env, node_modules, dist, datasets and logs you open the moment something breaks.
- 02
Un-skipping works, but it costs you. rg -uu, plain grep, or search.useIgnoreFiles: false pull the ignored files back in, yet every flag hands the walker more files, not fewer, and Cursor’s index has no flag at all.
- 03
A whole-disk index never skips. Filenames resolve in 85 μs, contents in 7 to 9 ms: the query ripgrep walks in 93.8 s returns in 16 ms, 58,625× faster, on the very files ripgrep skips.
- 04
Light, and always fresh. It rests at about 44 MB idle and is searchable roughly 1 ms after each save. Everything local is free forever, no card. Hosting starts at $5.99/mo.
What your tools actually see
Eight file types. Your search reaches two.
.gitignore keeps generated, secret, and oversized files out of version control. Every git-aware search tool reads that same file and narrows its world to match. Genuinely useful, until the thing you need lives on the other side of the line.
Six of the eight categories are untracked. They are also the ones you open when a build breaks, a secret is wrong, a dataset looks off, or a dependency misbehaves: precisely the moments you reach for search.
Why it happens, and why it is usually right
Skipping .gitignore is a feature. Until it is not.
The ignore file is a near-perfect signal for “machine-generated, secret, or huge”, the stuff you almost never grep. Honoring it gives fewer, cleaner, faster results, so the tools you use every day do exactly that out of the box:
| Tool | Default on .gitignore | What that hides |
|---|---|---|
| ripgrep | Respects it, plus hidden and binary files | node_modules, dist, .env, logs |
| Cursor | Excludes it from the codebase index | the AI cannot see ignored files at all |
| VS Code search | Respects it via search.useIgnoreFiles | ignored files absent from results |
| grep / find | Not git-aware: walks everything you point at | nothing hidden, but no index either |
The first three are the tools you actually reach for. All three, by default, are blind to the untracked half of your disk. That is correct behavior 95% of the time, and a wall the other 5%.
Search them anyway
The flags that turn the skipping off.
-u stops reading .gitignore, -uu also searches hidden files, -uuu even scans binaries. --no-ignore disables the ignore files alone.
Plain grep never knew about .gitignore. It reads whatever path you point it at: nothing hidden, and no index either.
Or open the Search view, click the three dots, and turn off Use Ignore Files. Now results include the ignored folders.
No setting re-indexes ignored files. Attach one by hand for a single message; the searchable index stays blind to the rest.
These get you an answer. On a real disk, they get you a slow one, or, for Cursor, none at all.
The catch
Un-skipping is either slower or impossible.
Every un-skip flag hands the walker more files, not fewer. node_modules alone can be hundreds of thousands of files. The floor was already high, and you just raised it.
And Cursor has no flag at all: the index is built to honor .gitignore, so ignored files never enter it. You can hand the model one file at a time; you cannot search across them.
one ripgrep content query on 4.47M files, measured with the skips still ON. Turning them off only adds work.
The index that never skips
One index. The whole disk, ignored files and all.
A purpose-built engine keeps a live index of every file on the machine, tracked or not, because to it they are all just files. The untracked half is not a special case; it is already indexed. So the query you could only run slowly, or not at all, becomes the same instant lookup as everything else.
Same content query · same drive
ripgrep
walking the tree, skips on
Interlinked
one index lookup, nothing skipped
Methodology: Ryzen 9 9950X3D · 64 GB DDR5 · NVMe · Windows 11 · 4,470,000 files. Same query, same drive. The index sits under 1% of the disk and rests at about 44 MB when nobody is asking it anything.
NO FLAG TO REMEMBER · NO FOLDER TO EXCLUDE · THE IGNORED FILES ARE ALREADY IN.
Common questions
Searching what git hides. Answered.
QHow do I make ripgrep search git-ignored files?
Add -u to stop reading .gitignore, -uu to include hidden files too, or -uuu to scan binaries; --no-ignore disables just the ignore files. It works, but on a real disk it only hands the walker more files, so a content query that already takes 93.8 s gets slower, not faster.
QWhy can't Cursor find my .env or code inside node_modules?
Cursor’s codebase index is built to honor .gitignore, so ignored files never enter it and no setting re-indexes them. You can attach a single file by hand with @, but you cannot search across the ignored files at all.
QDoes searching ignored files leak my secrets into git?
No. .gitignore still governs what git tracks; un-skipping only changes what your search tool reads on disk. A whole-disk index behaves the same way: it reads files locally and nothing ever leaves the machine.
QIs a whole-disk index really faster than grepping directly?
By a wide margin. A filename resolves in 85 μs (139 μs median across 4.47M files) and contents in 7 to 9 ms: the content query ripgrep walks in 93.8 s returns in 16 ms, about 58,625× faster, while indexing the very files ripgrep skips.
QWhat does it cost, and how much does it weigh?
Everything (including the MCP layer Claude Code, Cursor and the rest plug into) is free forever, no card. Hosting starts at $5.99/mo. The index rests at about 44 MB idle and stays fresh roughly 1 ms after each save.
Do this today
Stop choosing between fast and complete.
Install once. One signed installer auto-configures 19 AI clients: Claude Code, Cursor, Copilot, Windsurf, Cline and the rest. No JSON editing.
Search the whole disk. Names in microseconds, contents in milliseconds, including the git-ignored files ripgrep and Cursor skip.
Keep your repo tools. .gitignore still does its job in git. This is the layer that sees across it the moment you need to.
Trust it stays fresh. Edit a .env or rebuild, and it is searchable about a millisecond later: no re-index, no waiting.
Everything local is free forever, on all your devices, no card. Hosting starts at $5.99/mo. Download for Windows.