File filtering
The Files pane, opened by Adjust what's included, is the surface for narrowing your output to the files you want to share with an assistant. Everything you type here applies live: the file tree updates as you type, with no Apply button.
Include and Ignore textareas
Two textareas drive pattern filtering:
- Include is empty by default. When you put glob patterns in it, only files matching at least one of them survive.
- Ignore carries a default list (the same list the CLI uses) of
common build outputs, lockfiles, binary directories and, since
2026-09-09, test files by the naming convention of each ecosystem
(
*.test.ts,*_test.go,test_*.py,*Test.javaand their siblings). Patterns you add here exclude their matches; delete a default pattern to let its files through.
Both textareas accept a comma-separated list of globs. Newlines between commas are fine for readability. The two interact in one surprising way described in Filter precedence: if Include has any content, Ignore is skipped entirely. Treat Include as an exclusive whitelist when you use it.
Hidden files
A file whose own name starts with a dot (.gitignore, .editorconfig,
.env) is held back before any pattern runs. It shows dimmed in the
tree with the reason "Hidden file"; tick it to include it. A directory
that starts with a dot is not held back here: .github/workflows/ci.yml
comes through unless a pattern names it. The CLI walks differently and
skips everything under a dot directory as well. See
CLI usage for the config key that turns that off.
Pattern semantics
Patterns are matched against each file's path using the pathMatches
helper in packages/core/src/path-utils/glob-match.ts. Two rules cover
every case:
- A bare directory or filename pattern matches anywhere in the path.
Typing
node_modulesmatchesapps/web/node_modules/react/index.js, not only a top-levelnode_modulesdirectory. The same goes for*.log, which matches every.logfile at any depth. - A slashed pattern matches the full path or any suffix obtained by
stripping leading directories. Typing
src/**/*.tsmatches bothsrc/app.tsandmyrepo/src/app.ts. This lets patterns work whether you dropped a folder by its repo name or by its innersrc/.
A few examples that catch what most projects need:
node_modules, dist, build, .git, *.lock, *.log
src/**/*.ts, src/**/*.tsx, README.md
Filter box and By type chips
The filter box at the top of the pane narrows the list as you type. Plain
text matches anywhere in the path, ignoring case. Text with * or ?
is read as a glob, with the same rules as the textareas. Typing only
changes what is shown. Take out N moves every match out of the
bundle, Keep only these N moves everything else out, and Undo
puts the previous state back.
The By type chips list each readable extension with its file count and its share of the text, heaviest first. A click takes the whole type out, or puts it back. Reset to defaults clears the manual choices and restores the default patterns, with an Undo too.
The pattern textareas sit in a closed Patterns section at the bottom of the pane.
Manual file toggles
Each file in the tree has a checkbox that overrides the pattern decision for that one file. Manual toggles are sticky: if you tick a checkbox to include a file, then later edit your Ignore textarea, the file stays included.
The pane's file list is headed with a live count of how many files are going into the output and their share of the readable text. Each row shows its own share. Rows sort largest first or A to Z. Auto-skipped noise (binaries and anything your patterns exclude) stays visible but dimmed, so you can see what was left out and re-check it by hand.
See also
- Filter precedence for the full ordering of pruning, validation, patterns, and overrides.
- Configuration for the output format choice, the Files pane, and the settings that persist across reloads.